我有一个DataFrame,其中包含各种值。
import pandas as pd
df = pd.DataFrame({"data": [1, 1, 1, 1, 0, 0, 0, 2, 2, 3]})
我想计算每个值占总数据的百分之几,也就是得到一个这样的表:
value | percent
_____________________
0 | 30 ( или 0.3)
1 | 40 ( или 0.4)
2 | 20 ( или 0.2)
3 | 10 ( или 0.1)
我可以这样算:
# Добавляю еще одну колонку, чтобы нормально посчитать count()
df['column'] = 1
df2 = df.groupby('data').count()
df2['percent'] = df2['column'] / len(df.index)
我得到了我正在寻找的东西:
column percent
data
0 3 0.3
1 4 0.4
2 2 0.2
3 1 0.1
但是,我仍然觉得我做错了一切。这样的问题应该更容易解决。你能告诉我解决我的问题的最佳方法吗?
您可以使用GroupBy.size()方法- 在这种情况下,您不需要创建新列:
可能无关紧要,但我认为是:
df['data'].value_counts(normalize=True)