最新要闻

广告

手机

光庭信息跌4.57% 2021上市超募11亿2022扣非降74% 时快讯

光庭信息跌4.57% 2021上市超募11亿2022扣非降74% 时快讯

搜狐汽车全球快讯 | 大众汽车最新专利曝光:仪表支持拆卸 可用手机、平板替代-环球关注

搜狐汽车全球快讯 | 大众汽车最新专利曝光:仪表支持拆卸 可用手机、平板替代-环球关注

家电

讯息:# 02. 数据分组整合之unique+groupby

来源:博客园


(资料图片)

前几天帮L师兄处理数据的时候,遇到了这样的问题:

我目前有如下的数据表格(假设数据举例):但是在实际对数据进行异常点的检测时,我们需要针对不同的班级、不同的科目来进行。所以会需要进行数据的分组与整合。

班级科目分数
1班语文39.79778
2班数学5.846467
2班英语6.386726
3班数学68.92978
1班数学91.70355
3班英语5.590154
2班语文95.36453
1班英语62.11803
3班语文24.62038

为了便于分组和整合,在举例数据中特地模糊了姓名这一特征

提取思路:首先获取列中不重复的数据(unique),例如科目中的不重复数据为语文数学英语,再通过不重复数据作为索引去获取相关的行数据(groupby)。当我们需要针对不同的班级、不同的科目时,我们可以先对班级分组数据,再拿获取到的数据再进行分组,在代码中的表现就是循环中嵌套循环。

实现代码如下:

# %%# 运行之前需要关掉与程序有关的excel文件import numpy as npimport pandas as pdimport os#conding=utf8  data = pd.read_excel("成绩单.xlsx")# 按班级clas=data["班级"].unique()for c in clas:    print("班级"+clas)    cla=data.groupby(["班级"]).get_group(c)    suject=cla["科目"].unique()    # 按科目    for s in suject:        print("科目为"+s)        data_output=cla.groupby(["科目"]).get_group(s)    # 输出分组结果        print(data_output)# %%print("------------------------程序已运行完成--------------------------------")

关键词: