xlabel with plotting kinds hist example pandas histogram series

with - ¿Existen funciones para recuperar los recuentos de histogramas de una serie en pandas?



plot with pandas python (3)

Como hist y value_counts no usan el índice de la Serie, también puede tratar la Serie como una matriz ordinaria y usar np.histogram directamente. Luego construye una serie a partir del resultado.

In [4]: s = Series(randn(100)) In [5]: counts, bins = np.histogram(s) In [6]: Series(counts, index=bins[:-1]) Out[6]: -2.968575 1 -2.355032 4 -1.741488 5 -1.127944 26 -0.514401 23 0.099143 23 0.712686 12 1.326230 5 1.939773 0 2.553317 1 dtype: int32

Esta es una manera realmente conveniente de organizar el resultado de un histograma para el cómputo posterior.

Para indexar por el centro de cada bandeja en lugar del borde izquierdo, puede usar bins[:-1] + np.diff(bins)/2 .

Existe un método para trazar histogramas de series, pero ¿existe una función para recuperar los recuentos de histogramas para realizar más cálculos sobre ellos?

Sigo usando las funciones de numpy para hacer esto y convertir el resultado en un DataFrame o Series cuando lo necesito. Sería bueno quedarse con los objetos pandas todo el tiempo.


Si conoce la cantidad de contenedores que desea, puede usar la función de cut pandas, que ahora es accesible a través de value_counts . Usando el mismo ejemplo aleatorio:

s = pd.Series(np.random.randn(100)) s.value_counts(bins=5) Out[55]: (-0.512, 0.311] 40 (0.311, 1.133] 25 (-1.335, -0.512] 14 (1.133, 1.956] 13 (-2.161, -1.335] 8


Si su Serie fuera discreta, podría usar value_counts :

In [11]: s = pd.Series([1, 1, 2, 1, 2, 2, 3]) In [12]: s.value_counts() Out[12]: 2 3 1 3 3 1 dtype: int64

Puede ver que s.hist() es esencialmente equivalente a s.value_counts().plot() .

Si se tratara de flotadores, una solución espantosa podría ser usar groupby:

s.groupby(lambda i: np.floor(2*s[i]) / 2).count()