为了账号安全,请及时绑定邮箱和手机立即绑定

熊猫数据透视表中行/列的百分比

熊猫数据透视表中行/列的百分比

紫衣仙女 2022-05-19 14:29:50
假设我有数据框df:df.head()                     M1       M2      M3       M4Timestamp                                                       2018-09-20 12:59:57  cat 1    obj_1   name_1   12018-09-20 12:58:53  cat 1    obj_2   name_2   12018-09-20 12:57:44  else 1   obj_3   name_1   12018-09-20 12:57:19  cat 11   obj_2   name_1   12018-09-20 12:56:17  cat 11   obj_2   name_1   1有了这个df,我正在为每一列准备一组数据透视表,显示出现的百分比 (%) 以及它的计数 (N):df[['M1']].pivot_table(index=df.index.date, aggfunc=(    ('%', lambda x: len(x) / df['M1'].count()),     ('N', 'size')))当我遇到准备两个系列的数据透视表时,我想显示M1不是在整个数据框中而是与 M2 类别相关的出现百分比。到目前为止,我已经尝试将分母设置为M2计数,但它是总体计数,而不是M1特定M2类别中的计数:df[['M1', 'M2']].pivot_table(columns='M2', index='M1', aggfunc=(lambda x: len(x) / df['M2'].count()))任何线索如何获得M1每个M2类别中的特定百分比?预期输出:M2       obj_1    obj_2    obj_3M1cat 1    value1   value*   value*cat 2    value*   value*   value*...      ...      ...      ...cat 11   value*   value*   value*else 1   value*   value*   value*其中value1是等的cat 1所有出现中出现的次数。obj_1
查看完整描述

1 回答

?
森栏

TA贡献1810条经验 获得超5个赞

您可以groupby查找M2每个类别的数量,并将其作为列添加到您的数据框中,如下所示


df['count_M2'] = df.groupby('M2')['M1'].transform('count')

然后运行该pivot_table函数以获取M1每组中M2的百分比


df.pivot_table(values=['count_M2'], index=['M1'], columns=['M2'], 

               aggfunc=lambda x: len(x) / x.iloc[0])

细节


df


                  Time      M1     M2      M3  M4  count_M2

0  2018-09-20 12:59:57   cat 1  obj_1  name_1   1         1

1  2018-09-20 12:58:53   cat 1  obj_2  name_2   1         3

2  2018-09-20 12:57:44  else 1  obj_3  name_1   1         1

3  2018-09-20 12:57:19  cat 11  obj_2  name_1   1         3

4  2018-09-20 12:56:17  cat 11  obj_2  name_1   1         3

df.pivot_table


       count_M2                

M2        obj_1     obj_2 obj_3

M1                             

cat 1       1.0  0.333333   NaN

cat 11      NaN  0.666667   NaN

else 1      NaN       NaN   1.0


查看完整回答
反对 回复 2022-05-19
  • 1 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信