在Python Pandas库中计算百分比

问题描述

我有一个这样的Pandas数据框:

import pandas as pd
df = pd.DataFrame(
    {'gender':['F','F','M','M'],'mature':[0,1,1],'cta'   :[1,1]}
)

df['gender'] = df['gender'].astype('category')
df['mature'] = df['mature'].astype('category')

df['cta']    = pd.to_numeric(df['cta'])
df

我计算了总和(用户点击了多少次)和总计(已发送邮件数量)。我想弄清楚如何计算定义为点击次数/总百分比的百分比,以及如何获取数据框作为输出

temp_groupby = df.groupby('gender').agg({'cta': [('clicks','sum'),('total','count')]})
temp_groupby

解决方法

我认为这意味着您需要平均水平,将新的元组添加到列表中,例如:

mydict = {'anna': 1,'bobby': 3,'dean': 120}

为避免使用temp_groupby = df.groupby('gender').agg({'cta': [('clicks','sum'),('total','count'),('perc','mean')]}) print (temp_groupby) cta clicks total perc gender F 3 5 0.6 M 2 5 0.4 ,请在MultiIndex in columns之后指定列:

groupby

或使用命名聚合:

temp_groupby = df.groupby('gender')['cta'].agg([('clicks','mean')]).reset_index()
print (temp_groupby)
  gender  clicks  total  perc
0      F       3      5   0.6
1      M       2      5   0.4