一、Pandas分组聚合之groupby()方法的使用教程
1. groupby()方法的基本语法及功能
groupby()方法是Pandas中非常强大的分组聚合工具,其基本语法格式为:DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, observed=False,
dropna=True)
各参数说明:
- by:分组的依据,可以是列名、Series、数组或函数等多种形式
- axis:指定在哪个轴方向上进行分组,默认为0,即按行进行分组
- level:在多层索引的情况下,指定分组的层级
- as_index:默认为True,表示分组后返回的结果是否以分组列作为索引
- sort:默认为True,表示分组结果是否进行排序
- group_keys:默认为True,表示在结果中表示组名的键是否作为索引
- squeeze:默认为False,表示当分组结果只有一列时是否压缩成Series
- observed:用于处理分类变量中不存在类型的情况,默认为False
- dropna:是否剔除缺失值,默认为True
groupby()方法会根据指定的分组依据对数据进行分组,并对每一组数据进行聚合操作。
- 示例说明
下面以一个名为"sales_data.csv"的销售数据为例,来演示groupby()方法的使用。
首先,我们需要读入并查看原始数据:
import pandas as pd
df = pd.read_csv('sales_data.csv')
print(df.head())
结果如下:
OrderDate Region Product Quantity
0 2015/1/1 East Plastic 481
1 2015/1/2 North Office goods 3784
2 2015/1/3 North Plastic 2259
3 2015/1/4 Central Food 7614
4 2015/1/5 South Food 1656
接下来,我们以"Region"列作为分组依据,并计算出每个区域的销售总量:
grouped = df.groupby(by='Region')
result = grouped.sum()
print(result)
结果如下:
Quantity
Region
Central 342481
East 267937
North 219477
South 301163
West 267130
从结果可以看出,原始数据集按"Region"列进行了分组操作,并计算出了每个区域的销售总量。
二、Pandas分组聚合之agg()方法的使用教程
1. agg()方法的基本语法及功能
agg()方法是Pandas中另一个非常常用的分组聚合工具,其基本语法格式为:DataFrame.agg(func=None, axis=0, *args, **kwargs)
各参数说明:
- func:单个或多个聚合函数,可以是字符串(内置函数、自定义函数)或函数列表
- axis:指定在哪个轴方向上进行分组,默认为0,即按行进行分组
- args和kwargs:用于传递给聚合函数的参数
agg()方法基于groupby()方法,但可以通过指定聚合函数对每个分组进行不同的聚合操作,可以同时指定多个聚合函数。
- 示例说明
继续以上述销售数据为例,我们以"Region"列作为分组依据,并使用agg()方法计算每个区域的销售总量、平均销售量、最大值和最小值:
grouped = df.groupby(by='Region')
result = grouped['Quantity'].agg(['sum', 'mean', 'max', 'min'])
print(result)
结果如下:
sum mean max min
Region
Central 342481 302.990265 99967 4
East 267937 245.798845 96324 2
North 219477 221.889411 95492 1
South 301163 243.226714 99907 1
West 267130 262.175389 98624 1
从结果可以看出,我们通过agg()方法指定了要进行的聚合操作,包括求和、均值、最大值和最小值,并将结果按照"Region"列进行了分组。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pandas分组聚合之groupby()、agg()方法的使用教程 - Python技术站