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()