Pandas 按索引和列分组
在本文中,我们将介绍Pandas中的按索引和列分组。分组是数据分析中常用的技术。Pandas中的分组操作非常强大,可以按照索引和列进行分组,并支持多级分组。
阅读更多:Pandas 教程
按索引分组
按索引分组是指按照DataFrame或Series的索引进行分组。下面是一个示例。首先,创建一个包含三列的DataFrame。其中,索引为A、B、C、D四个字母,列名为x、y、z。
import pandas as pd
df = pd.DataFrame({
'x': [1, 2, 3, 4],
'y': [5, 6, 7, 8],
'z': [9, 10, 11, 12]
}, index=['A', 'B', 'C', 'D'])
接着,按照索引进行分组,计算每组的平均值。
grouped = df.groupby(level=0).mean()
print(grouped)
输出结果为:
x y z
A 1.0 5.0 9.0
B 2.0 6.0 10.0
C 3.0 7.0 11.0
D 4.0 8.0 12.0
按列分组
按列分组是指按照DataFrame的列进行分组。下面是一个示例。创建一个包含三列的DataFrame。其中,列名为A、B、C,索引为1到4。
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3, 4],
'B': [5, 6, 7, 8],
'C': [9, 10, 11, 12]
}, index=[1, 2, 3, 4])
接着,按照列B进行分组,计算每组的平均值。
grouped = df.groupby('B').mean()
print(grouped)
输出结果为:
A C
B
5 1 9
6 2 10
7 3 11
8 4 12
按索引和列分组
按索引和列分组是指按照DataFrame的索引和列进行分组。下面是一个示例。创建一个包含三列的DataFrame。其中,列名为A、B、C,索引为1到4。
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3, 4],
'B': [5, 5, 6, 6],
'C': [1, 2, 3, 4]
}, index=[1, 2, 3, 4])
接着,按照索引和列B进行分组,计算每组的平均值。
grouped = df.groupby([df.index, 'B']).mean()
print(grouped)
输出结果为:
A C
1 5 1.0 1.0
2 5 2.0 2.0
3 6 3.0 3.0
4 6 4.0 4.0
多级分组
多级分组是指按照多个条件进行分组。下面是一个示例。创建一个包含四列的DataFrame。其中,列名为A、B、C、D,索引为1到4。按照列A、B进行分组,计算每组的平均值。
import pandas as pd
df = pd.DataFrame({
'A': [1, 1, 2, 2],
'B': [3, 3, 4, 4],
'C': [5, 6, 7, 8],
'D': [9, 10, 11, 12]
}, index=[1, 2, 3, 4])
grouped = df.groupby(['A', 'B']).mean()
print(grouped)
输出结果为:
C D
A B
1 3 5.5 9.5
2 4 7.5 11.5
总结
Pandas中的分组操作非常强大,支持按索引、列、索引和列进行分组,并支持多级分组。掌握分组操作可以方便我们进行数据分析和处理。
极客教程