ich habe diesen Datenrahmen:
0 name data
1 alex asd
2 helen sdd
3 alex dss
4 helen sdsd
5 john sdadd
also versuche ich,den häufigsten Wert (bzw. dessen Werte)
dataframe['name'].value_counts().idxmax()
aber es gibt nur den Wert zurück: Alex selbst wenn es Helen zweimal erscheint.
Mit mode
df.name.mode()
Out[712]:
0 alex
1 helen
dtype: object
Nicht offensichtlich, aber schnell
f, u = pd.factorize(df.name.values)
counts = np.bincount(f)
u[counts == counts.max()]
array(['alex', 'helen'], dtype=object)
Sie könnten argmax
so versuchen:
dataframe['name'].value_counts().argmax()
Out[13]: 'alex'
Der value_counts
gibt ein count-Objekt von pandas.core.series.Series
zurück und argmax
könnte verwendet werden, um den Schlüssel der maximalen Werte zu erhalten.
Um die n
häufigsten Werte zu erhalten, setzen Sie einfach .value_counts()
unter und greifen Sie auf den Index zu:
# get top 10 most frequent names
n = 10
dataframe['name'].value_counts()[:n].index.tolist()
Sie können .apply und pd.value_counts verwenden, um die Anzahl aller Namen in der Namensspalte zu zählen.
dataframe['name'].apply(pd.value_counts)
Hier ist ein Weg:
df['name'].value_counts()[df['name'].value_counts() == df['name'].value_counts().max()]
welche druckt:
helen 2
alex 2
Name: name, dtype: int64
um die Top 5 zu erreichen:
dataframe['name'].value_counts()[0:5]
Sie können dies verwenden, um eine perfekte Zählung zu erhalten. Sie berechnet den Modus einer bestimmten Spalte
df['name'].value_counts()
So ermitteln Sie die fünf häufigsten Namen:
dataframe['name'].value_counts().head()
df['name'].value_counts()[:5].sort_values(ascending=False)
Mit value_counts
Wird ein Zählobjekt von pandas.core.series.Series
Zurückgegeben, und mit sort_values(ascending=False)
erhalten Sie die höchsten Werte zuerst.