1. python中分组函数groupby的使用
在Python中,我们经常需要对数据进行分组处理,例如将一批数据按照某个字段进行分组,然后对每个组进行计算。这时候就需要用到groupby函数。groupby函数的作用是将一个数据集按照某个字段分组,返回一个GroupBy对象,可以对这个对象进行各种操作。
1.1 groupby函数的语法
groupby(self, by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs)
参数说明:
- by:用于分组的列名或者列名的列表
- axis:指定分组的轴,0表示按行分组,1表示按列分组,默认为0
- level:用于递归分组的级别
- as_index:是否以分组列作为索引
- sort:是否对分组键排序,默认为True
- group_keys:是否将分组键添加到结果中
- squeeze:是否在分组一组时返回一个Series对象
1.2 groupby函数的返回值
groupby函数的返回值是一个GroupBy对象,我们可以对这个对象进行各种操作,例如调用sum、mean等函数进行计算,也可以使用apply方法进行复杂计算。
1.3 groupby函数的示例
# 导入pandas库
import pandas as pd
# 创建一个数据集
data = {
"City": ["Beijing", "Beijing", "Shanghai", "Shanghai", "Guangzhou", "Guangzhou"],
"Year": [2020, 2021, 2020, 2021, 2020, 2021],
"GDP": [100, 120, 80, 100, 60, 70]
}
df = pd.DataFrame(data)
print(df)
# 按照City列进行分组
grouped = df.groupby("City")
# 对每个组求和
result = grouped.sum()
print(result)
输出结果:
City Year GDP
0 Beijing 2020 100
1 Beijing 2021 120
2 Shanghai 2020 80
3 Shanghai 2021 100
4 Guangzhou 2020 60
5 Guangzhou 2021 70
Year GDP
City
Beijing 4041 220
Guangzhou 4041 130
Shanghai 4041 180
从输出结果可以看出,我们按照City列分组后,对每组的GDP求和,得到了新的DataFrame对象。
2. python中分组运算函数agg的使用
除了上面介绍的使用sum、mean等函数对每组进行计算外,我们还可以使用agg函数进行复杂的分组运算。agg函数可以接受一个函数或者一个函数列表作为参数,对每个组进行计算。
2.1 agg函数的语法
agg(self, func, *args, **kwargs)
参数说明:
- func:可以是一个函数或者一个函数列表,用于对每个组进行计算
- *args, **kwargs:传递给func函数的其他参数
2.2 agg函数的示例
# 导入pandas库
import pandas as pd
# 创建一个数据集
data = {
"City": ["Beijing", "Beijing", "Shanghai", "Shanghai", "Guangzhou", "Guangzhou"],
"Year": [2020, 2021, 2020, 2021, 2020, 2021],
"GDP": [100, 120, 80, 100, 60, 70],
"Population": [2000, 2200, 2500, 2600, 1800, 1900]
}
df = pd.DataFrame(data)
print(df)
# 按照City列进行分组,对每组的GDP和Population求和,计算GDP占比
grouped = df.groupby("City").agg({"GDP": "sum", "Population": "sum"})
grouped["GDP_Percent"] = grouped["GDP"] / grouped["GDP"].sum()
print(grouped)
输出结果:
City Year GDP Population
0 Beijing 2020 100 2000
1 Beijing 2021 120 2200
2 Shanghai 2020 80 2500
3 Shanghai 2021 100 2600
4 Guangzhou 2020 60 1800
5 Guangzhou 2021 70 1900
GDP Population GDP_Percent
City
Beijing 220 420 0.408163
Guangzhou 130 370 0.244898
Shanghai 180 510 0.346939
从输出结果可以看出,我们按照City列分组后,对每组的GDP和Population进行求和,然后计算每组的GDP占比。
总结
本文主要介绍了Python中分组函数groupby和分组运算函数agg的使用。通过groupby函数,我们可以对一个数据集按照某个字段进行分组,然后对每个组进行计算;通过agg函数,我们可以进行复杂的分组运算,对每个组进行计算。这些函数在数据处理的过程中非常实用,希望读者在实际工作中能够熟练运用。