1 | import pandas as pd |
构造的数据如下:1
2
3
4
5
6
7
8
9Age 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
分组
单列分组
1 | df_gb = df.groupby('Country') |
输出:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19America
Country Income Age
4 America 40000 250
China
Country Income Age
0 China 10000 5000
1 China 10000 4321
6 China 8000 4500
India
Country Income Age
2 India 5000 1234
3 India 5002 4010
7 India 5000 4321
Japan
Country Income Age
5 Japan 50000 250
多列分组
1 | df_gb = df.groupby(['Country', 'Income']) |
输出:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25('America', 40000)
Country Income Age
4 America 40000 250
('China', 8000)
Country Income Age
6 China 8000 4500
('China', 10000)
Country Income Age
0 China 10000 5000
1 China 10000 4321
('India', 5000)
Country Income Age
2 India 5000 1234
7 India 5000 4321
('India', 5002)
Country Income Age
3 India 5002 4010
('Japan', 50000)
Country Income Age
5 Japan 50000 250
聚合
对分组后数据进行聚合
默认情况对分组之后其他列进行聚合1
2df_agg = df.groupby('Country').agg(['min', 'mean', 'max'])
print(df_agg)
输出:1
2
3
4
5
6
7Income Age
min mean max min mean max
Country
America 40000 40000.000000 40000 250 250.000000 250
China 8000 9333.333333 10000 4321 4607.000000 5000
India 5000 5000.666667 5002 1234 3188.333333 4321
Japan 50000 50000.000000 50000 250 250.000000 250
对分组后的部分列进行聚合
某些情况只需要对部分数据进行不同的聚合操作,可以通过字典来构建1
2num_agg = {'Age':['min', 'mean', 'max']}
print(df.groupby('Country').agg(num_agg))
输出:1
2
3
4
5
6
7Age
min mean max
Country
America 250 250.000000 250
China 4321 4607.000000 5000
India 1234 3188.333333 4321
Japan 250 250.000000 250