Pandas中Groupby分组操作,22个案例,59张图详解 | 图解Pandas-图文第11篇
01写在前面
大家好,我是阳哥,欢迎来到「Python数据之道」。
今天来跟大家分享《图解Pandas》系列图文内容的 第 11 篇,主要介绍 Pandas 中groupby分组操作
。
本文是付费阅读文章,付费阅读内容包括《图解Pandas》图文干货内容、可以在电脑端观看的视频以及配套的源代码等。
此外,为避免各种不必要的麻烦,微信没有退款机制,付费前请谨慎。
Pandas
是 Python数据分析中用的最多的工具,为了大家能够更好地学习 Pandas
,阳哥开始制作 《图解Pandas》 专题系列内容。
《图解Pandas》 最主要的目标,是以视频图解、动态图片等方式呈现,拆解 Pandas 在数据处理过程中的主要知识点,以便大家能进一步了解 Pandas
的使用,形象地介绍 Pandas
,进而使大家喜欢上 Pandas
这个工具。
在本文编写时,《图解Pandas》系列已发布的图文如下:
图文链接 | 视频号对应编号 |
---|---|
《图解Pandas》内容框架介绍 | - |
图文01-数据结构介绍 | 001 |
图文02-创建数据对象 | 002 |
图文03-读取和存储Excel文件 | 003、004 |
图文04-常见的数据访问 | 005 |
图文05-常见的数据运算 | 006-008 |
图文06-常见的数学计算 | 009、010 |
图文07-常见的数据统计 | 011-015 |
图文08-常见的数据筛选 | 016-028 |
图文09-常见的缺失值处理 | 029-034 |
图文10-数据合并操作 | 035-047 |
《图解Pandas》图文专题,所有图文及最新的内容可以点击下面的图片进行查看。
本次主要介绍 Pandas 中groupby分组操作
,内容框架如下:
该主题包括 10 期视频,在微信视频号「Python数据之道」中发布的对应视频编号为 048
至 057
,大家可以前往观看。
注:本文发布时,在视频号中可以观看视频
048
,后续将发布049
至057
。
在本文后面内容中可以同时观看视频
048
至057
。
扫描下面的二维码,关注视频号,可以观看《图解Pandas》已发布的所有视频以及及时推送最新的视频:
02Groupby分组操作
Python环境
开始之前,按照惯例先介绍下本次内容涉及的 Python 环境,如下:
Python 3.8 Pandas 1.5.0 numpy 1.22.3
我是在 jupyter notebook
中运行代码的,首先引入相关 Python 库:
import pandas as pd
import numpy as np
import sys
print(f"pandas version:{pd.__version__}")
print(f"numpy version:{np.__version__}")
print(f"python version:{sys.version}")
# pandas version:1.5.0
# numpy version:1.22.3
# python version:3.8.2
创建基础数据
在内容介绍过程中,会涉及到不同的数据。咱们先来创建几个 dataframe,也就是“数据框”。
关于创建数据对象的详细介绍,大家可以观看 「图解Pandas」系列的第2期视频。
创建 df
如下:
dict1 = ({
'Courses':["Numpy","Pandas","Java","Pandas","Python","Python",],
'Teacher':["Jack","Lemon",np.nan,"Lemon","Peter","Lemon"],
'Fee' :[3000,4500,5000,4000,4900,5000],
'Duration':['45days','30days','55days','20days','60days','35days'],
'Discount':[200,300,100,120,200,np.nan]
})
df = pd.DataFrame(dict1)
df
创建 data2
如下:
dict2 = {
"a": [80, 90, 60, 73, 89],
"b": [80, 75, 80, 85, 83],
"c": [70, 75, 80, 73, 62],
}
data2 = pd.DataFrame(dict2, index=list("efxyz"))
data2
后续,根据实际需要,还会创建其他的一些数据框。
groupby概述
本次groupby分组操作内容介绍分为8个部分,包括:
基础操作 统计函数应用 分组后列的选取 多重索引的应用 agg聚合函数 apply应用 transform应用 filter应用
groupby 函数有许多参数可以设置,具体的参数使用,在后面会进一步介绍。
DataFrame.groupby(
by=None,
axis=0,
level=None,
as_index=True,
sort=True,
group_keys=_NoDefault.no_default,
squeeze=_NoDefault.no_default,
observed=False,
dropna=True,
)
咱们先来看 groupby操作的基本原理。
概括地说,groupby操作可分解为三个步骤,包括:
拆分(split) 应用(apply) 合并(combine)
第一步是根据分组目标列,按所在列的数据值将数据框拆分为多组,形成多个子数据框;
第二步是根据groupby后的计算或统计方式,对拆分后的各组进行应用。这里对“Fee” 列求平均值,对 “Discount” 列求和。
第三步是将前一步的应用结果进行合并,形成一个新的数据框。
上面描述的过程,图示如下: