python pandas dataframe pandas-groupby

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 ao with 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.