繁体   English   中英

如何计算 groupby / pivot 表中特定响应的百分比?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM