Pandas数据分析面试基础题(九)

580 阅读2分钟

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

image.png

# 按照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()

原创不易,如果小伙伴们觉得有帮助,麻烦点个赞再走呗~

最后,感谢女朋友在工作和生活中的包容、理解与支持 !