企业网站申请永久,oa办公系统开发,厦门seo网站推广,做网站公司哪家公司好目录
1. group by单个字段单个聚合
2. group by单个字段多个聚合
3. group by多个字段单个聚合
4. group by多个字段多个聚合
5. transform函数 studentsgradesexscoremoney0小狗小学部female958441小猫小学部male938362小鸭初中部male838543小兔小学部female909314小花小…目录
1. group by单个字段单个聚合
2. group by单个字段多个聚合
3. group by多个字段单个聚合
4. group by多个字段多个聚合
5. transform函数 studentsgradesexscoremoney0小狗小学部female958441小猫小学部male938362小鸭初中部male838543小兔小学部female909314小花小学部male818535小草小学部male809916小狗初中部female818547小猫小学部male938868小鸭小学部male889839小兔小学部male8689110小花初中部male9283011小草初中部male84948
1. group by单个字段单个聚合
1.1 方法一
# 求每个人的总金额
total_moneydf.groupby(students)[money].sum().reset_index()
total_money
1.2 方法二使用agg
df.groupby(students).agg({money:sum}).reset_index()
#或者
df.groupby(students).agg({money:np.sum}).reset_index()
studentsmoney0小兔18201小狗17112小猫16703小花18614小草18255小鸭1719
2. group by单个字段多个聚合
2.1 方法一使用group bymerge)
mean_money df.groupby(students)[money].mean().reset_index()
mean_money.columns [students,mean_money]
mean_money
total_mean total_money.merge(mean_money)
total_mean total_mean total_money.merge(mean_money)
total_mean
studentstotal_moneymean_money0小兔1820910.01小狗1711855.52小猫1670835.03小花1861930.54小草1825912.55小鸭1719859.5
2.2 方法二使用group byagg
total_mean df.groupby(students).agg(total_money(money, sum),mean_money(money, mean)).reset_index()
total_mean
studentstotal_moneymean_money0小兔1820910.01小狗1711855.52小猫1670835.03小花1861930.54小草1825912.55小鸭1719859.5
3. group by多个字段单个聚合
3.1 方法一
df.groupby([students,grade])[money].sum().reset_index()
studentsgrademoney0小兔初中部18201小狗初中部8432小狗小学部8683小猫小学部16704小花初中部9105小花小学部9516小草初中部18257小鸭初中部1719
3.2 方法二(使用agg)
df.groupby([students,grade]).agg({money:sum}).reset_index()
studentsgrademoney0小兔初中部18201小狗初中部8432小狗小学部8683小猫小学部16704小花初中部9105小花小学部9516小草初中部18257小鸭初中部1719
4. group by多个字段多个聚合
agg函数的使用的方法是:agg(新列名(原列名, 统计函数))
df.groupby([students,grade]).agg(total_money(money, sum),mean_money(money, mean),total_score(score, sum)).reset_index()
studentsgradetotal_moneymean_moneytotal_score0小兔初中部1820910.01921小狗初中部843843.0882小狗小学部868868.0933小猫小学部1670835.01784小花初中部910910.0955小花小学部951951.0986小草初中部1825912.51847小鸭初中部1719859.5173
5. transform函数 5.1 方法一(使用groupby merge)
df_1 df.groupby(grade)[score].mean().reset_index()
df_1.columns [grade, average_score]
df_1
gradeaverage_score0初中部85.001小学部88.25
df_new1 pd.merge(df, df_1, ongrade)
df_new1
studentsgradesexscoremoneyaverage_score0小狗小学部female9584488.251小猫小学部male9383688.252小兔小学部female9093188.253小花小学部male8185388.254小草小学部male8099188.255小猫小学部male9388688.256小鸭小学部male8898388.257小兔小学部male8689188.258小鸭初中部male8385485.009小狗初中部female8185485.0010小花初中部male9283085.0011小草初中部male8494885.00
5.2 方法二(使用groupby map)
dic df.groupby(grade)[score].mean().to_dict()
dic
{初中部: 85.0, 小学部: 88.25}
df_new1[average_map_score] df[grade].map(dic)
df_new1
studentsgradesexscoremoneyaverage_scoreaverage_map_score0小狗小学部female9584488.2588.251小猫小学部male9383688.2588.252小兔小学部female9093188.2585.003小花小学部male8185388.2588.254小草小学部male8099188.2588.255小猫小学部male9388688.2588.256小鸭小学部male8898388.2585.007小兔小学部male8689188.2588.258小鸭初中部male8385485.0088.259小狗初中部female8185485.0088.2510小花初中部male9283085.0085.0011小草初中部male8494885.0085.00
5.3 方法三(使用transform一步到位)
df_new1[average_trans_score] df.groupby(grade)[score].transform(mean)
df_new1
studentsgradesexscoremoneyaverage_scoreaverage_map_scoreaverage_trans_score0小狗小学部female9584488.2588.2588.251小猫小学部male9383688.2588.2588.252小兔小学部female9093188.2585.0085.003小花小学部male8185388.2588.2588.254小草小学部male8099188.2588.2588.255小猫小学部male9388688.2588.2588.256小鸭小学部male8898388.2585.0085.007小兔小学部male8689188.2588.2588.258小鸭初中部male8385485.0088.2588.259小狗初中部female8185485.0088.2588.2510小花初中部male9283085.0085.0085.0011小草初中部male8494885.0085.0085.00