Python 给定一个表示某个值的频率的系列,如何将这些频率转换为百分比?
我在试验kaggle.com泰坦尼克号数据集(泰坦尼克号上每个人的数据),得出了如下性别分类:Python 给定一个表示某个值的频率的系列,如何将这些频率转换为百分比?,python,pandas,Python,Pandas,我在试验kaggle.com泰坦尼克号数据集(泰坦尼克号上每个人的数据),得出了如下性别分类: gender = df.sex.value_counts() gender male 577 female 314 我想知道泰坦尼克号上每个性别的百分比 我的方法略不理想: from __future__ import division pcts = gender / gender.sum() pcts male 0.647587 female 0.352413 有更好(
gender = df.sex.value_counts()
gender
male 577
female 314
我想知道泰坦尼克号上每个性别的百分比
我的方法略不理想:
from __future__ import division
pcts = gender / gender.sum()
pcts
male 0.647587
female 0.352413
有更好(更地道)的方法吗
谢谢 我想我可能会一次性完成这项工作(无需导入部门): 或者,记住你想要一个百分比:
100. * df.sex.value_counts() / len(df.sex)
实际上,您的方式看起来也很好。此函数在pandas中实现,实际上甚至在value\u counts()中也实现了。无需计算:) 仅键入:
df.sex.value_counts(normalize=True)
这正好提供了所需的输出
请注意,value_counts()不包括NA值,因此数字加起来可能不等于1。
请看这里:
(数据帧的一列是一个系列)如果要将计数与百分比合并,可以使用:
c = df.sex.value_counts(dropna=False)
p = df.sex.value_counts(dropna=False, normalize=True)
pd.concat([c,p], axis=1, keys=['counts', '%'])
我知道这是一个老帖子,但我希望这个答案能对将来的人有所帮助。 如果您希望显示百分比,您可以使用@fanfabb上面回答的
value\u计数(normalize=True)
尽管如此,出于许多目的,您可能希望以百分之一百的百分比来显示它。这是可以做到的
gender = df.sex.value_counts(normalize=True).mul(100).round(1).astype(str) + '%'
在这种情况下,我们将结果乘以100,四舍五入到小数点后一位,然后加上百分号
希望它能有所帮助:)我喜欢这种方法,因为未来不需要导入。谢谢海登。任何东西都可以给出如下
男性577 0.647587女性314 0.352413
可以同时显示、计数和pctcnts??应该有一个选项可以自动显示!
gender = df.sex.value_counts(normalize=True).mul(100).round(1).astype(str) + '%'