文章目录
Pandas数据分析-Task5
记录DataWhale的Pandas数据分析的学习过程,使用的教材为 joyful-pandas。
Task4是pandas的变形函数,分为三个部分,第一部分介绍长宽表变形,包括pivot(),pivot_table(),melt(),wide_to_long()函数;第二部分介绍了索引的变形函数,包括行索引变列索引的unstack()和列索引变行索引的stack()函数;第三部分介绍另外一些常用的函数,包括将类型变量变为哑铃编码的pd.get_dummies(),以及功能和pivot_table()函数类似的pd.crosstable()函数。本篇文章中所有的代码示例中用到的原始文件都可以在 此链接中下载。
长宽表变形
长表变宽表:pivot()方法
pivot()功能是将长表变为宽表,有index, columns, values 这三个参数,新生成宽表的
列索引是columns对应原来长表列的unique值,而新生成的宽表的行索引是index 对应原来长表列的unique 值,而values 对应要展示的数值列。使用pivot()方法的前提是原长表中的index 和columns 对应两个列的行组合必须唯一。
#长表
df = pd.DataFrame({
'Class':[1,1,2,2],'Name':['San Zhang','San Zhang','Si Li','Si Li'],'Subject':['Chinese','Math','Chinese','Math'],'Grade':[80,75,90,85]})
> Class Name Subject Grade
0 1 San Zhang Chinese 80
1 1 San Zhang Math 75
2 2 Si Li Chinese 90
3 2 Si Li Math 85
#用pivot()方法变宽表
df_pr=df.pivot(index='Name',columns='Subject',values='Grade')
>Subject Chinese Math
Name
San Zhang 80 75
Si Li 90 85
长表变宽表+聚合函数:pivot_table()方法
上面说到,使用pivot()方法的前提是**原长表中的index 和columns 对应两个列的行组合必须唯一,当原表中组合存在重复值时,可以将重复的结果经过聚合函数聚合为1个标量值。能完成这样操作的方法为pivot_table()方法。pivot_table()方法比pivot()方法多了两个参数:aggfunc和margins,aggfunc就是要使用的聚合函数,而设置margins=True时实现边际汇总的功能,即变换后每一行没一列的结果都进行聚合。例如:张三和李四都参加了两次语文考试和数学考试,最后的成绩是两次考试分数的平均值,求最后成绩并转换为宽表。
#原长表
df = pd.DataFrame(