tutorial index from empty data create columns pandas frequency series

pandas - index - ¿Cómo obtener el número del valor más frecuente en una columna?



pandas plot (3)

Para continuar con la respuesta de @jonathanrocher, puede usar el mode en pandas DataFrame. Proporcionará los valores más frecuentes (uno o dos) en las filas o columnas:

import pandas as pd import numpy as np df = pd.DataFrame({"a": [1,2,2,4,2], "b": [np.nan, np.nan, np.nan, 3, 3]}) In [2]: df.mode() Out[2]: a b 0 2 3.0

Tengo un marco de datos y me gustaría saber cuántas veces una columna dada tiene el valor más frecuente.

Intento hacerlo de la siguiente manera:

items_counts = df[''item''].value_counts() max_item = items_counts.max()

Como resultado obtengo:

ValueError: cannot convert float NaN to integer

Por lo que entiendo, con la primera línea obtengo series en las que los valores de una columna se utilizan como clave y la frecuencia de estos valores se utiliza como valores. Entonces, solo necesito encontrar el mayor valor en la serie y, por alguna razón, no funciona. ¿Alguien sabe cómo se puede resolver este problema?


Parece que puedes tener algunos nulos en la columna. Puede soltarlos con df = df.dropna(subset=[''item'']) . Entonces df[''item''].value_counts().max() debe darle los conteos máximos, y df[''item''].value_counts().idxmax() debe darle el valor más frecuente.


También puede considerar el uso de la función de mode scipy que ignora NaN. Una solución al usarlo podría verse como:

from scipy.stats import mode from numpy import nan df = DataFrame({"a": [1,2,2,4,2], "b": [nan, nan, nan, 3, 3]}) print mode(df)

La salida se vería como

(array([[ 2., 3.]]), array([[ 3., 2.]]))

lo que significa que los valores más comunes son 2 para las primeras columnas y 3 para la segunda, con frecuencias 3 y 2 respectivamente.