Pandas数据分析系列8-数据分组与聚合

本文详细介绍了Pandas中的数据分组与聚合操作,包括如何使用groupby进行分组,分组后如何提取数据,以及常见的聚合函数如size、get_group等。通过实例演示了按月份分组对销售金额进行统计的方法,并提到了agg函数在一次计算中聚合多个统计数据的能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Pandas 数据分组

   在处理数据时,经常会需要对某一列或多列进行分组,分组后再对数据进行计算累加、最大值、最小值等。类似于Excel里的分类汇总,

Pandas中,我们可以使用groupby 来完成这系列的分组统计。

语法结构:

dataframe.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs)

参数说明:

by:指定分组依据的列名或列名的列表

axis:默认为0,表示按行进行分组;若axis=1,表示按列进行分组

level:用于多层索引的分组,默认为None

as_index:默认为True,表示分组后的列作为索引,若设置为False

          则不以分组的列作为索引

sort:默认为True,表示分组后的结果是否按照列名进行排序

group_keys:默认为True,表示在最终结果中添加分组键

squeeze:默认为False,表示当只有一个分组时,结果是否以Series形式返回

多学一招

按某列分组: groupby("列名称")

按多列分组: groupby(["列名称1","列名称2"])

Pandas 数据分组后常见提取方法

   数据分组后,有如下对数据分组操作使用方法。

df=pd.read_excel(“门店销售数据.xlsx”)
#按门店编号分组

df=df.groupby("门店编号")
#统计每组的大小
print(df.size())
#获每个组的第一行数据
print(df.first())
#获每个组的最后一行数据
print(df.last())
#获取每组的第二行数据
print(df.nth(1))
#获取指定组的数据
group1=df.get_group("A1001")
print(group1)

 df.size(),输出图如下:

df.get_group("A1001") 提取某一组数据,输出如下:

 Pandas 聚合函数

  分组聚合依某列或多列将数据分成若干组,然后对分组后的数据分别进行汇总计算,如求和,最大值,最小值,平均值,方差等,

这些用于汇总计算的函数就是聚合函数。

Pandas 常见聚合函数

函数名

功能

示例

sum()

计算数据的总和

dataframe.聚合函数名称()

series.聚合函数名称()

mean()

计算数据的均值

median()

计算数据的中位数

min()

计算数据的最小值

max()

计算数据的最大值

count()

计算非缺失值的数量

std()

计算数据的标准差

var()

计算数据的方差

quantile()

计算数据的分位数

describe()

提供数据的描述性统计信息(如计数、均值等)

first()

第一次出现的值

last()

最后一次出现的值

 Pandas 数据分组与聚合示例

需求,将销售明细表2022表与销售明细表2023表按月份分组,对销售金额列进行统计,以便后成进行可视化。

df2022=pd.read_excel("门店销售数据.xlsx",sheet_name="销售明细表2022")
df2022Groupe = df2022.groupby(["月份"])["销售金额"].sum().reset_index(name="2022").T
df2023=pd.read_excel("门店销售数据.xlsx",sheet_name="销售明细表2023")
df2023Groupe = df2023.groupby(["月份"])["销售金额"].sum().reset_index(name="2023").T
allGroup=pd.concat([df2022Groupe,df2023Groupe[1:]])
print(allGroup)

 输出图如下:

Pandas agg函数 

agg函数提供的聚合功能可以在一次计算中按分组计算多个统计数据,可以接受多个参数,其中最常用的参数是一个字典,字典的键表示要进行聚合计算的列名,字典的值表示要应用的聚合函数。聚合函数可以是内置的统计函数,'mean'(计算均值)'sum'(计算总和)'max'(找到最大值)'min'(找到最小值)等,也可以是自定义的函数。

 

df2022=pd.read_excel("门店销售数据.xlsx",sheet_name="销售明细表2022")
df2022Groupe = df2022.groupby(["月份"]).agg({"销售数量":"sum","销售金额":"sum"})
print(df2022Groupe)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值