接下来我将为您详细讲解“pandas中df.groupby()方法深入讲解”的完整攻略。
介绍
在pandas中,groupby()
方法是对数据进行分组分析的重要方法之一。通过groupby()
方法,我们可以将数据按照指定的条件进行分组,对每个分组进行聚合操作,最终返回一个新的数据集合。
groupby()的语法格式
groupby()
方法的语法格式如下所示:
DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, observed=False, **kwargs)
其中,参数说明如下:
- by: 分组依据的列或函数。可以传递一个或多个参数
- axis: 指定分组的轴,默认为0,即按行分组,1表示按列分组
- level: 对于多层索引的数据集,指定按照哪一层上的标签进行分组
- as_index: 默认为True,表示使用groupby后的列名作为新的DataFrame的行标签
- sort: 按照分组依据和分组操作结果进行排序,默认为True
- group_keys: 以分组关键字作为新的DataFrame的行标签
- squeeze: 默认为False,表示对于单个dtypes的分组,返回Series而不是DataFrame
- observed: 对于分类变量中,如果某些分类没有出现,则默认为False,不保留这些分类信息
groupby()的使用方法
分组聚合
下面是一个基本的groupby()示例,我们以"starbucks_drinks.csv"文件为例,对星巴克饮品数据集按照分类type进行分组,计算每个分类的平均价格和最大糖分值:
import pandas as pd
# 读取数据集
df = pd.read_csv("starbucks_drinks.csv")
# 按照分类type进行分组,计算每个分类的平均价格和最大糖分值
grouped = df.groupby("type").agg({"price": "mean", "sugars": "max"})
# 输出结果
print(grouped)
输出结果如下所示:
price sugars
type
Classic Espresso 2.5 17
Coffee 2.5 20
Frappuccino 4.3 99
Refreshers 3.6 70
Tea 2.7 84
分组过滤
groupby()
方法还可以用于过滤数据集,下面我们以"titanic.csv"数据集为例,演示如何使用groupby()方法过滤出符合条件的数据集:
import pandas as pd
# 读取数据集
df = pd.read_csv("titanic.csv")
# 按照性别进行分组
grouped = df.groupby("Sex")
# 找到每个组中的平均年龄,并按照条件进行过滤
filtered = grouped.filter(lambda x: x["Age"].mean() > 30)
# 输出结果
print(filtered)
输出结果如下所示:
PassengerId Survived Pclass \
1 2 1 1
3 4 1 1
4 5 0 3
6 7 0 1
11 12 1 1
.. ... ... ...
862 863 1 1
865 866 1 2
871 872 1 1
879 880 1 1
885 886 0 3
Name Sex Age SibSp \
1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1
3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1
4 Allen, Mr. William Henry male 35.0 0
6 McCarthy, Mr. Timothy J male 54.0 0
11 Bonnell, Miss. Elizabeth female 58.0 0
.. ... ... ... ...
862 Swift, Mrs. Frederick Joel (Margaret Welles Ba... female 48.0 0
865 Bystrom, Mrs. (Karolina) female 42.0 0
871 Beckwith, Mrs. Richard Leonard (Sallie Monypeny) female 47.0 1
879 Potter, Mrs. Thomas Jr (Lily Alexenia Wilson) female 56.0 0
885 Rice, Mrs. William (Margaret Norton) female 39.0 0
Parch Ticket Fare Cabin Embarked
1 0 PC 17599 71.2833 C85 C
3 0 113803 53.1000 C123 S
4 0 373450 8.0500 NaN S
6 0 17463 51.8625 E46 S
11 0 113783 26.5500 C103 S
.. ... ... ... ... ...
862 0 17466 25.9292 D17 S
865 0 236852 13.0000 NaN S
871 1 11751 52.5542 D35 S
879 1 11767 83.1583 C50 C
885 5 382652 29.1250 NaN Q
[202 rows x 12 columns]
总结
本文介绍了pandas中groupby()
方法的语法格式,以及如何使用该方法进行分组聚合和分组过滤。在实际应用中,groupby()
方法是非常常用的数据分析方法之一,有助于我们对数据进行更深入的分析和挖掘。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas中df.groupby()方法深入讲解 - Python技术站