【数据科学与机器学习导论】【笔记】1.6数据分组和汇总

课程链接:https://stepik.org/course/4852/syllabus  语言:俄语

文中使用数据:链接: https://pan.baidu.com/s/1PYqtZWdxr8k-_lTGvhgqKQ 提取码: j6im


import pandas as pd
import numpy as np

file = pd.read_csv("StudentsPerformance.csv")

#将列名中的空格修改为下划线_
file = file.rename(columns = {"parental level of education":"parental_level_of_education","test preparation course":"test_preparation_course","math score":"math_score","reading score":"reading_score","writing score":"writing_score"})


#将数据以一个标准分组
#先将数据以"gender"分组,然后计算列"math_score"中的mean值
#注意,此处不能只有groupby
file.groupby("gender").aggregate({"math_score":"mean"})
#若需要将前面的索引更改为数字排序,可为以下语句
file.groupby("gender",as_index = False).aggregate({"math_score":"mean"})
#同时,可将结果的列名重新修改为目标名。注意,以下程序中的\是因为要换行写,同时,下一行要有一个Tab
file.groupby("gender",as_index = False)\
    .aggregate({"math_score":"mean"})\
    .rename(columns = {"math_score":"mean_math_score"})


#将数据以多个标准分组
#先将数据以["gender","race/ethnicity"]分组,然后计算列"math_score"中的mean值
#注意,此处也可加入as_index=Flase,得到的DataFrame将不一样
mean_math_score=file.groupby(["gender","race/ethnicity"])\
    .aggregate({"math_score":"mean"})\
    .rename(columns = {"math_score":"mean_math_score"})
#查看索引,会发现,结果是以多个标准构成的多维数组
mean_math_score.index
#我们可以通过.loc语句,提取我们想要的特定结果的成绩
#提取特定的一种结果
mean_math_score.loc[("female","group A")]
#提取特定的两种结果 
mean_math_score.loc[[("female","group A"),("male","group A")]]
#排序,默认从小到大排序
file.sort_values(["gender","math_score"])#从小到大排序
file.sort_values(["gender","math_score"],ascending = False)#从大到小排序
#可在排序结束后,分组并分别在每组选取前几列
file.sort_values(["gender","math_score"],ascending = False).groupby("gender").head(5)

#在表格中增加或删除列/行
#在表格中增加一列,保存表格中几列的值的合,默认增加在表格最后
file["total_score"] = file.math_score + file.reading_score + file.writing_score
#也可以这样添加一列,新增列为total_score_log
file = file.assign(total_score_log = np.log(file.total_score))
#删除列
file.drop(["total_score"],axis = 1)

#分组并计算类型有多少行
file.groupby(["gender","race/ethnicity"]).count()


【参考文献】

1.iloc和loc的不同

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值