python groupby agg_python groupby agg()

构造数据

import pandas as pd

df = pd.DataFrame({'Country':['China','China', 'India', 'India', 'America', 'Japan', 'China', 'India'],

'Income':[10000, 10000, 5000, 5002, 40000, 50000, 8000, 5000],

'Age':[5000, 4321, 1234, 4010, 250, 250, 4500, 4321]})

结果如下:

Age Country Income

0 5000 China 10000

1 4321 China 10000

2 1234 India 5000

3 4010 India 5002

4 250 America 40000

5 250 Japan 50000

6 4500 China 8000

7 4321 India 5000

单列分组

df_gb = df.groupby('Country')

for index, data in df_gb:

print(index)

print(data)

输出

America

Age Country Income

4 250 America 40000

China

Age Country Income

0 5000 China 10000

1 4321 China 10000

6 4500 China 8000

India

Age Country Income

2 1234 India 5000

3 4010 India 5002

7 4321 India 5000

Japan

Age Country Income

5 250 Japan 50000

多列分组

df_gb = df.groupby(['Country', 'Income'])

for (index1, index2), data in df_gb:

print((index1, index2))

print(data)

输出

('America', 40000)

Age Country Income

4 250 America 40000

('China', 8000)

Age Country Income

6 4500 China 8000

('China', 10000)

Age Country Income

0 5000 China 10000

1 4321 China 10000

('India', 5000)

Age Country Income

2 1234 India 5000

7 4321 India 5000

('India', 5002)

Age Country Income

3 4010 India 5002

('Japan', 50000)

Age Country Income

5 250 Japan 50000

聚合函数,对分组后数据进行聚合

df_agg = df.groupby('Country').agg(['min', 'mean', 'max'])

print(df_agg)

输出

Age Income

min mean max min mean max

Country

America 250 250.000000 250 40000 40000.000000 40000

China 4321 4607.000000 5000 8000 9333.333333 10000

India 1234 3188.333333 4321 5000 5000.666667 5002

Japan 250 250.000000 250 50000 50000.000000 50000

对分组后的部分列进行聚合

num_agg = {'Age':['min', 'mean', 'max']}

print(df.groupby('Country').agg(num_agg))

输出

Age

min mean max

Country

America 250 250.000000 250

China 4321 4607.000000 5000

India 1234 3188.333333 4321

Japan 250 250.000000 250

num_agg = {'Age':['min', 'mean', 'max'], 'Income':['min', 'max']}

print(df.groupby('Country').agg(num_agg))

输出

Age Income

min mean max min max

Country

America 250 250.000000 250 40000 40000

China 4321 4607.000000 5000 8000 10000

India 1234 3188.333333 4321 5000 5002

Japan 250 250.000000 250 50000 50000

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值