Pandas 如何使用groupby进行求和
在本文中,我们将介绍Pandas中groupby函数的使用,实现对数据集的分组求和。
Pandas是Python数据分析领域使用最为广泛的库之一,其中的groupby函数允许我们很方便地对数据进行分组计算,例如求和、均值等。
阅读更多:Pandas 教程
groupby函数
groupby函数的作用是将数据集按照指定的列进行分类,并对同一类别的数据进行聚合计算。其函数定义如下:
DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=<object object at 0x7f77d40eff50>, observed=False, dropna=True)
- by:用于指定分组列的名称或名称列表。
- axis:用于指定分组的轴,0表示按照行的方向分组,1表示按照列的方向分组。
- level:用于指定分组列级别。
- as_index:用于指定分组列是否作为索引,如果为false,则分组列会作为新的列添加到结果中。
- sort:用于指定是否按分组后的列排序。
- group_keys:用于指定是否为结果分组添加标签。
- squeeze:用于指定是否删除单列的结果中单列的外部层级(axis=0)或名称(axis=1)。
- observed:用于指定分类变量中的任何缺少值如何处理。
- dropna:用于指定是否在结果中删除任何无效分组键。
分组求和示例
我们现在使用Pandas内置数据集tips来演示groupby函数的分组求和功能。
import seaborn as sns
tips = sns.load_dataset('tips')
tips.head()
输出结果如下:
total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4
我们现在希望计算出每个星期几的总支出(total_bill)和小费(tip)的和。可以使用groupby函数来实现,代码如下:
tips.groupby('day')[['total_bill', 'tip']].sum()
输出结果如下:
total_bill tip
day
Thur 1096.33 171.83
Fri 325.88 51.96
Sat 1778.40 260.40
Sun 1627.16 247.39
这个结果告诉我们,周六是最受欢迎的日子,用户的总支出和小费最高。同时,我们也可以按照性别和是否抽烟等维度来分别计算支出和小费。
tips.groupby(['sex', 'smoker'])[['total_bill', 'tip']].sum()
输出结果如下:
total_bill tip
sex smoker
Male Yes 1337.07 183.07
No 1919.75 302.00
Female Yes 593.27 96.74
No 1570.95 246.51
这个结果告诉我们,男性和非吸烟者下单了更贵的菜品,留下的小费也更多。女性和吸烟者在此方面略逊一筹。
总结
正如我们所看到的,groupby函数可以帮助我们在Python中对大量数据进行简单和复杂的分组计算,无论是针对某一列分组还是多列分组都可以通过groupby函数实现。并且,groupby函数的参数设置也很灵活,可以满足不同的需求。
在实际的数据分析中,例如对销售数据或用户行为数据进行分析,groupby函数的使用尤为重要,能够提高我们的数据处理效率和分析能力。因此,熟练掌握groupby函数的使用,对于Python数据分析工程师来说是非常必要的基本技能。
本文中,我们简单介绍了Pandas中groupby函数的基本使用方法,其中包括函数的参数设置和分组求和实例。希望这篇文章能够帮助读者更好地掌握和应用groupby函数。
极客笔记