[英]How do I calculate the percentage of a particular response in groupby / pivot table?
试图更好地理解 groupby 和 pivot_table。
我有一个像这样的 dataframe:
df = pd.DataFrame({"Year": np.random.choice([2017,2018,2019], 1000),
"Age":np.random.choice(['<30','30-40','40-50','50+'], 1000),
"Pref":np.random.choice(['Yes','No'], 1000)})
我如何按['Year', 'Age']
对数据进行分组,以便结果列告诉我该特定年龄段的'Pref'
中有多少百分比是“是”:2017 年 30 岁以下的百分比是多少? ETC..
我想制作一个转换后的 dataframe 类似:
% Yes
Year Age
2017 <30 45
30-40 52
40-50 58
50+ 44
2018 <30 56
30-40 53
40-50 50
50+ 44
2019 <30 40
30-40 38
40-50 51
50+ 53
我怎样才能做到这一点?
df.groupby(['Year', 'Age']).agg(lambda x: 100 * sum(i == 'Yes' for i in x) / len(x))
尝试这个:
(df['Pref'] == 'Yes').rename('% Yes').groupby([df['Year'], df['Age']]).mean()*100
Output:
% Yes
Year Age
2017 30-40 50.000000
40-50 56.470588
50+ 44.871795
<30 44.086022
2018 30-40 62.162162
40-50 47.368421
50+ 42.682927
<30 45.205479
2019 30-40 52.564103
40-50 46.478873
50+ 47.959184
<30 46.153846
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.