我正在试验kaggle.com泰坦尼克号数据集(泰坦尼克号上每个人的数据),并想出了这样的性别分类:
gender = df.sex.value_counts()
gender
male 577
female 314
Run Code Online (Sandbox Code Playgroud)
我想知道泰坦尼克号上每个性别的百分比.
我的方法略逊于理想:
from __future__ import division
pcts = gender / gender.sum()
pcts
male 0.647587
female 0.352413
Run Code Online (Sandbox Code Playgroud)
有更好的(更惯用的)方式吗?
谢谢!
fan*_*bbb 111
这个函数在pandas中实现,实际上甚至在value_counts()中实现.无需计算:)
只需输入:
df.sex.value_counts(normalize=True)
Run Code Online (Sandbox Code Playgroud)
它给出了所需的输出.
请注意,value_counts()不包括NA值,因此数字可能不等于1.请参见此处:http://pandas-docs.github.io/pandas-docs-travis/generated/pandas.Series.value_counts.html ( DataFrame的一列是Series)
小智 16
如果要将计数与百分比合并,可以使用:
c = df.sex.value_counts(dropna=False)
p = df.sex.value_counts(dropna=False, normalize=True)
pd.concat([c,p], axis=1, keys=['counts', '%'])
Run Code Online (Sandbox Code Playgroud)
And*_*den 14
我想我可能会一次性完成这项工作(不进口部门):
1. * df.sex.value_counts() / len(df.sex)
Run Code Online (Sandbox Code Playgroud)
或者,记住你想要一个百分比:
100. * df.sex.value_counts() / len(df.sex)
Run Code Online (Sandbox Code Playgroud)
真的很多,你的方式看起来也很好.
Sha*_*har 11
我知道这是一个旧帖子,但我希望这个答案将来会对某人有所帮助。如果您希望显示您可能做的事情的百分比,请使用value_counts(normalize=True)
@fanfabbb 上面的回答。
话虽如此,出于多种目的,您可能希望以百分数显示它。可以这样实现
gender = df.sex.value_counts(normalize=True).mul(100).round(1).astype(str) + '%'
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们将结果乘以百,四舍五入到一位小数并加上百分号。
希望它可以帮助:)
归档时间: |
|
查看次数: |
25525 次 |
最近记录: |