下面进行“pandas中pd.groupby()的用法详解”的完整攻略:
1. pd.groupby()函数
在pandas中,使用groupby()
函数按照某些标准将数据分成组。一般而言,分组操作包含以下三个步骤:
- Splitting: 按照一定的规则将数据分成不同的组。
- Applying: 对于每一组数据分别执行一些操作,例如汇总、转换等。
- Combining: 对于各个组执行的操作的结果进行合并,得到最终结果。
其中,groupby()
函数处理的对象是pandas.DataFrame或者pandas.Series类型的数据。下面我们将通过两个示例详细讲解该函数的常用用法。
2. 示例一
首先,我们生成一个待处理的DataFrame类型的数据集:
import pandas as pd
df1 = pd.DataFrame({
'key1': ['A', 'B', 'C', 'A', 'B', 'C'],
'key2': ['W', 'X', 'Y', 'X', 'W', 'Z'],
'data1': [1, 2, 3, 4, 5, 6],
'data2': [11, 22, 33, 44, 55, 66]
})
这个数据集包含两个列的标签为key1和key2,以及两个数据列data1和data2,如下所示:
key1 | key2 | data1 | data2 | |
---|---|---|---|---|
0 | A | W | 1 | 11 |
1 | B | X | 2 | 22 |
2 | C | Y | 3 | 33 |
3 | A | X | 4 | 44 |
4 | B | W | 5 | 55 |
5 | C | Z | 6 | 66 |
现在,我们要对这个数据集进行分组操作,按照key1列进行分组。
grouped = df1.groupby('key1')
此时,groupby()
函数会将df1数据集按照key1列的不同值分成3个组,分别是A组、B组和C组。
接下来,我们可以对这些组进行一些操作。例如,对data1和data2列进行求和操作:
grouped[['data1', 'data2']].sum()
这将按照key1列的每个不同值(A、B、C)对data1和data2列进行求和操作,结果如下:
data1 | data2 | |
---|---|---|
key1 | ||
A | 5 | 55 |
B | 7 | 77 |
C | 9 | 99 |
3. 示例二
其次,我们演示如何按照多列进行分组操作。
首先,我们生成一个待处理的DataFrame类型的数据集:
df2 = pd.DataFrame({
'key1': ['A', 'A', 'B', 'B', 'B', 'C'],
'key2': ['W', 'W', 'X', 'X', 'Y', 'Z'],
'data1': [1, 2, 3, 4, 5, 6],
'data2': [11, 22, 33, 44, 55, 66]
})
这个数据集除了包含key1和data1数据列之外,还有一列key2作为分组标准,如下所示:
key1 | key2 | data1 | data2 | |
---|---|---|---|---|
0 | A | W | 1 | 11 |
1 | A | W | 2 | 22 |
2 | B | X | 3 | 33 |
3 | B | X | 4 | 44 |
4 | B | Y | 5 | 55 |
5 | C | Z | 6 | 66 |
现在,我们要对这个数据集进行分组操作,按照key1和key2列进行分组。
grouped = df2.groupby(['key1', 'key2'])
此时,groupby()
函数会将df2数据集按照key1和key2列的不同值分成5个组,分别是(A,W)组、(B,X)组、(B,Y)组、B组和C组。
接下来,我们可以对这些组进行一些操作。例如,对data1和data2列进行求和操作:
grouped[['data1', 'data2']].sum()
这将按照key1和key2列的每种不同组合对data1和data2列进行求和操作,结果如下:
data1 | data2 | |
---|---|---|
key1 | key2 | |
A | W | 3 |
B | X | 7 |
Y | 5 | |
15 | ||
C | Z | 6 |
至此,通过以上两个示例,我们详细讲解了pandas中groupby()
函数的使用方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas中pd.groupby()的用法详解 - Python技术站