python - ¿Cuándo es apropiado usar df.value_counts() vs df.groupby(''...''). Count()?
pandas dataframe (2)
Hay una diferencia de
value_counts
return:
El objeto resultante estará en orden descendente para que el primer elemento sea el elemento más frecuente.
pero no
count
, ordena la salida por
index
(creado por columna en
groupby(''col'')
).
df.groupby(''colA'').count()
es para agregar todas las columnas de
df
por
count.
funciones
count.
Por lo tanto, cuenta valores excluyendo
NaN
s.
Entonces, si es necesario, solo se necesita una columna:
df.groupby(''colA'')[''colA''].count()
Muestra:
df = pd.DataFrame({''colB'':list(''abcdefg''),
''colC'':[1,3,5,7,np.nan,np.nan,4],
''colD'':[np.nan,3,6,9,2,4,np.nan],
''colA'':[''c'',''c'',''b'',''a'',np.nan,''b'',''b'']})
print (df)
colA colB colC colD
0 c a 1.0 NaN
1 c b 3.0 3.0
2 b c 5.0 6.0
3 a d 7.0 9.0
4 NaN e NaN 2.0
5 b f NaN 4.0
6 b g 4.0 NaN
print (df[''colA''].value_counts())
b 3
c 2
a 1
Name: colA, dtype: int64
print (df.groupby(''colA'').count())
colB colC colD
colA
a 1 1 1
b 3 2 2
c 2 2 1
print (df.groupby(''colA'')[''colA''].count())
colA
a 1
b 3
c 2
Name: colA, dtype: int64
He escuchado en Pandas que a menudo hay varias formas de hacer lo mismo, pero me preguntaba:
Si estoy tratando de agrupar datos por un valor dentro de una columna específica y contar el número de elementos con ese valor, ¿cuándo tiene sentido usar
df.groupby(''colA'').count()
y cuándo tiene sentido? utilizar
df[''colA''].value_counts()
?
Groupby
y
value_counts
son funciones totalmente diferentes.
No puede realizar value_counts en un marco de datos.
Value Counts
están limitados solo para una sola columna o serie y su único propósito es devolver la serie de frecuencias de valores
Groupby
devuelve un objeto para que uno pueda realizar cálculos estadísticos sobre él.
Entonces, cuando haga
df.groupby(col).count()
, devolverá el número de valores verdaderos presentes en las columnas con respecto a las
specific columns
en groupby.
Cuándo se debe usar
value_counts
y cuándo se debe
groupby.count
: tomemos un ejemplo
df = pd.DataFrame({''id'': [1, 2, 3, 4, 2, 2, 4], ''color'': ["r","r","b","b","g","g","r"], ''size'': [1,2,1,2,1,3,4]})
Groupby count :
df.groupby(''color'').count()
id size
color
b 2 2
g 2 2
r 3 3
Groupby count se usa generalmente para obtener el número válido de valores presentes en todas las columnas
with reference to
aowith respect to
una o más columnas especificadas. Por lo tanto, no se excluirá un número (nan).
Para encontrar la frecuencia usando groupby necesita agregarse contra la columna especificada como lo hizo @jez. (tal vez para evitar esto y facilitar la vida de los desarrolladores se implementa value_counts).
El valor cuenta :
df[''color''].value_counts()
r 3
g 2
b 2
Name: color, dtype: int64
El conteo de valores se usa generalmente para encontrar la frecuencia de los valores presentes en una columna en particular.
En conclusión :
.groupby(col).count()
debe usarse cuando desee encontrar la frecuencia de los valores válidos presentes en las columnas con respecto a la
col
especificada.
.value_counts()
debe usarse para encontrar las frecuencias de una serie.