Comment obtenir le nombre de la valeur la plus fréquente dans une colonne?
j'ai une base de données et j'aimerais savoir combien de fois une colonne donnée a la valeur la plus fréquente.
j'ai essayer de le faire de la façon suivante:
items_counts = df['item'].value_counts()
max_item = items_counts.max()
Comme un résultat que j'obtiens:
ValueError: cannot convert float NaN to integer
<!-Pour autant que je sache, avec la première ligne, j'obtiens une série dans laquelle les valeurs d'une colonne sont utilisées comme clé et la fréquence de ces valeurs est utilisée comme valeurs. Donc, j'ai juste besoin de trouver la plus grande valeur dans la série et, pour une raison quelconque, il ne travail. Quelqu'un sait comment ce problème peut être résolu?
3 réponses
on dirait que vous avez des nulls dans la colonne. Vous pouvez les déposer avec df = df.dropna(subset=['item'])
. Puis df['item'].value_counts().max()
devrait vous donner les comptes max, et df['item'].value_counts().idxmax()
devrait vous donner la valeur la plus fréquente.
vous pouvez également envisager d'utiliser scipy mode
fonction qui ignore NaN. Une solution l'utilisant pourrait ressembler à:
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 sortie ressemblerait à
(array([[ 2., 3.]]), array([[ 3., 2.]]))
ce qui signifie que les valeurs les plus courantes sont 2
pour les premières colonnes et 3
pour la seconde, avec des fréquences 3
et 2
respectivement.
Pour continuer à @jonathanrocher réponse vous pouvez utiliser mode
dans les pandas DataFrame. Il donne les valeurs les plus fréquentes (un ou deux) à travers les lignes ou les colonnes:
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