ale*_*ale 19 python dataframe pandas
我有这个数据帧:
0 name data
1 alex asd
2 helen sdd
3 alex dss
4 helen sdsd
5 john sdadd
Run Code Online (Sandbox Code Playgroud)
所以我试图获得最频繁的值或值(在这种情况下它的值) 所以我做的是:
dataframe['name'].value_counts().idxmax()
Run Code Online (Sandbox Code Playgroud)
但它只返回值:Alex即使Helen出现两次也是如此.
WeN*_*Ben 34
通过使用 mode
df.name.mode()
Out[712]:
0 alex
1 helen
dtype: object
Run Code Online (Sandbox Code Playgroud)
小智 11
使用:
df['name'].mode()
Run Code Online (Sandbox Code Playgroud)
或者
df['name'].value_counts().idxmax()
Run Code Online (Sandbox Code Playgroud)
小智 7
您可以这样尝试argmax:
dataframe['name'].value_counts().argmax()
Out[13]: 'alex'
在value_counts返回的计数的对象pandas.core.series.Series,并argmax可以用来实现最大价值的关键。
要获得n最频繁的值,只需将其子集.value_counts()并获取索引:
# get top 10 most frequent names
n = 10
dataframe['name'].value_counts()[:n].index.tolist()
Run Code Online (Sandbox Code Playgroud)
df['name'].value_counts()[:5].sort_values(ascending=False)
Run Code Online (Sandbox Code Playgroud)
在value_counts返回的计数对象pandas.core.series.Series,并sort_values(ascending=False)会得到你的最高值第一。
不明显,但速度很快
f, u = pd.factorize(df.name.values)
counts = np.bincount(f)
u[counts == counts.max()]
array(['alex', 'helen'], dtype=object)
Run Code Online (Sandbox Code Playgroud)
这是一种方法:
df['name'].value_counts()[df['name'].value_counts() == df['name'].value_counts().max()]
Run Code Online (Sandbox Code Playgroud)
打印:
helen 2
alex 2
Name: name, dtype: int64
Run Code Online (Sandbox Code Playgroud)
获得前 5 名:
dataframe['name'].value_counts()[0:5]
Run Code Online (Sandbox Code Playgroud)
小智 5
只需使用这个..
dataframe['name'].value_counts().nlargest(n)
Run Code Online (Sandbox Code Playgroud)
最大和最小频率的函数是:
nlargest()对于最常见的“n”值nsmallest()对于最不频繁的“n”值| 归档时间: |
|
| 查看次数: |
37310 次 |
| 最近记录: |