我试图获得列的最主要/最常见的值,所以我尝试了以下代码,
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()
不一定会给列中具有最高频率的索引/列值。
答案 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