pandas.DataFrame.groupby()是pandas中用于分组聚合数据的方法。具体来说,它可以按照某些列的值将数据分组,并对每个分组进行聚合操作,如求和、平均、计数等。
使用方法:
pandas.DataFrame.groupby()的基本语法为:
df.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, observed=False, **kwargs)
参数说明如下:
- by:用于指定分组依据的列或列列表;
- axis:用于指定分组的方向,0表示按行分组(默认),1表示按列分组;
- as_index:用于指定是否将用于分组的列设置为索引列;
- sort:用于指定是否对分组结果进行排序;
- group_keys:用于指定是否对分组结果的键进行排序;
- squeeze:用于指定是否对只有一个分组结果的结果进行降维操作;
- observed:用于指定是否只显示观察到的分组结果。
实例1
考虑以下数据集,它包含了不同学生的考试成绩信息:
姓名 | 学科 | 成绩 |
---|---|---|
张三 | 语文 | 95 |
李四 | 语文 | 78 |
王五 | 语文 | 83 |
张三 | 数学 | 85 |
李四 | 数学 | 90 |
王五 | 数学 | 92 |
我们可以按照学科对数据进行分组,然后求每个学科的平均成绩:
import pandas as pd
data = {
'姓名': ['张三', '李四', '王五', '张三', '李四', '王五'],
'学科': ['语文', '语文', '语文', '数学', '数学', '数学'],
'成绩': [95, 78, 83, 85, 90, 92],
}
df = pd.DataFrame(data)
result = df.groupby('学科').mean()
print(result)
运行结果:
成绩
学科
数学 89.000000
语文 85.333333
可以看到,每个学科的平均成绩被求出来了。
实例2
现在考虑以下数据集,它包含了不同城市的气温信息:
城市 | 日期 | 温度 |
---|---|---|
北京 | 2020/01/01 | -3 |
北京 | 2020/01/02 | -4 |
北京 | 2020/01/03 | -2 |
上海 | 2020/01/01 | 7 |
上海 | 2020/01/02 | 9 |
上海 | 2020/01/03 | 8 |
我们可以按照城市对数据进行分组,然后求每个城市的最低温度:
import pandas as pd
data = {
'城市': ['北京', '北京', '北京', '上海', '上海', '上海'],
'日期': ['2020/01/01', '2020/01/02', '2020/01/03', '2020/01/01', '2020/01/02', '2020/01/03'],
'温度': [-3, -4, -2, 7, 9, 8]
}
df = pd.DataFrame(data)
result = df.groupby('城市')['温度'].min()
print(result)
运行结果:
城市
上海 7
北京 -4
Name: 温度, dtype: int64
可以看到,每个城市的最低温度被求出来了。注意,这里我们指定了['温度']是因为我们只关心温度这一列的最小值。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解pandas.DataFrame.groupby()(按列分组)函数使用方法 - Python技术站