大熊猫获得了该列中最具统治力的价值

时间:2017-09-08 10:29:53

标签: python-3.x pandas dataframe series

我试图获得列的最主要/最常见的值,所以我尝试了以下代码,

df['currency'].value_counts(normalize=True)

给了我,例如

USD    0.800000
CAD    0.100000
EUR    0.050000
GBP    0.050000

现在边缘情况就像

USD    0.500000
CAD    0.500000

USD    0.333333
CAD    0.333333
CNY    0.333333

USD    0.400000
CAD    0.400000
CNY    0.100000
EUR    0.100000

等等,其中频率甚至在所有值或部分值之间。

现在我正在尝试检测此类边缘情况,那么最好的方法是什么?

换句话说,我试图找到系列/列中某个值的最主要频率,因为df['currency'].value_counts().max()不一定给出最频率,因为df['currency'].value_counts()给出的值可能都是一样的。因此data.df['currency'].value_counts().idxmax()不一定会给列中具有最高频率的索引/列值。

1 个答案:

答案 0 :(得分:3)

演示:

In [104]: df
Out[104]:
  currency
0      USD
1      USD
2      EUR
3      EUR
4      CAD

In [105]: df.currency.mode()
Out[105]:
0    EUR
1    USD
dtype: object

In [106]: len(df.currency.mode()) > 1
Out[106]: True

现在让我们来修复"我们的DF - 通过添加另一行USD货币,所以没有" edge"案件更多:

In [107]: df.loc[len(df)] = ['USD']

In [108]: df
Out[108]:
  currency
0      USD
1      USD
2      EUR
3      EUR
4      CAD
5      USD

In [109]: len(df.currency.mode()) > 1
Out[109]: False

In [110]: df.currency.mode()
Out[110]:
0    USD
dtype: object