web-dev-qa-db-de.com

Pandas erhalten die häufigsten Werte einer Spalte

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.

5
aleale

Mit mode 

df.name.mode()
Out[712]: 
0     alex
1    helen
dtype: object
15
Wen-Ben

Nicht offensichtlich, aber schnell  

f, u = pd.factorize(df.name.values)
counts = np.bincount(f)
u[counts == counts.max()]

array(['alex', 'helen'], dtype=object)
4
piRSquared

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. 

3
Lunar_one

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()
3
Jared Wilber

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)
2
Brian

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
1
pault

um die Top 5 zu erreichen:

dataframe['name'].value_counts()[0:5]
1
Naomi Fridman

Sie können dies verwenden, um eine perfekte Zählung zu erhalten. Sie berechnet den Modus einer bestimmten Spalte

df['name'].value_counts()
0
paul okoduwa

So ermitteln Sie die fünf häufigsten Namen:

dataframe['name'].value_counts().head()
0
eggrobot78
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.

0
Taie