Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
在数据分析中,分组与聚合是常用的操作,这篇文章就来介绍一下 Dataframe 数据的分组与聚合。
试题一:如何对 DataFrame 数据进行分组?
(难度:medium)
分析
在 Pandas 中通过groupby()函数来实现分组操作,语法如下:
grouped = df.groupby(by=xx)
结果grouped是一个DataFrameGroupBy对象,属于可迭代对象,其中的每一个元素都是一个元组(索引(分组的值), 分组之后的 DataFrame)
以下面 Dataframe 数据为例:
students = {'id':[1,2,3,4,5,6], 'name':['one','two','three','four','five','six'], 'score':[90,88,89,65,95,78], 'class':[1,3,2,1,3,1]}
df = pd.DataFrame(students)
df
# 按照class进行分组
grouped = df.groupby('class')
print(grouped)
# 遍历grouped
for name,group in grouped:
print(name)
print(group)
结果输出如下:
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x7f23e3ef1c10>
1
id name score class
0 1 one 90 1
3 4 four 65 1
5 6 six 78 1
2
id name score class
2 3 three 89 2
3
id name score class
1 2 two 88 3
4 5 five 95 3
还有,Dataframe 也可以根据多个键进行分组,使用时把多个键放到一个列表当中,作为groupby的参数即可,如下:
grouped = df.groupby(['class', 'score'])
print(grouped)
for name,group in grouped:
print(name)
print(group)
试题二:分组后DataFrameGroupBy 对象的聚合函数有哪些,如何使用?
分析 聚合时可以使用 Pandas 内置的函数进行聚合计算,内置函数如下:
| 函数名 | 说明 |
|---|---|
| count | 分组中非NaN的数量 |
| sum | 非NaN值的和 |
| mean | 非NaN值的平均值 |
| median | 非NaN值的中位数 |
| std、var | 非NaN值的标准差、方差 |
| min、max | 非NaN值中的最小值、最大值 |
例如:
# 获取分组中非NaN的数量
grouped.count()
# 获取分组中非NA值中的最大值
grouped.grouped.max()
原创不易,如果小伙伴们觉得有帮助,麻烦点个赞再走呗~
最后,感谢女朋友在工作和生活中的包容、理解与支持 !