↑↑↑关注后"星标"Datawhale
每日干货 & 每月组队学习,不错过
Datawhale干货
作者:耿远昊,Datawhale成员,华东师范大学
pandas 是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用于数据挖掘和数据分析,同时也提供数据清洗功能。
Pandas做分析数据,可以分为索引、分组、变形及合并四种操作。前边已经介绍过索引操作、分组操作,现在接着对Pandas中的变形操作进行介绍,涉及知识点提纲如下图:
本文目录
1. 透视表
1.1. pivot
1.2. pivot_table
1.3. crosstab(交叉表)
-
2. 其他变形方法
2.1. melt函数
2.2. 压缩与展开
3. 哑变量与因子化
-
3.1. Dummy Variable(哑变量)
3.2. factorize方法
在详细讲解每个模块之前,首先读入数据:
import numpy as np
import pandas as pd
df = pd.read_csv('joyful-pandas-master/data/table.csv')
df.head()
透视表
1. pivot
一般状态下,数据在DataFrame会以压缩(stacked)状态存放,例如上面的Gender,两个类别被叠在一列中,pivot函数可将某一列作为新的cols:
df.pivot(index='ID',columns='Gender',values='Height').head() # 设行列名,变成一个新的DataFrame
然而pivot函数具有很强的局限性,除了功能上较少之外,还不允许values中出现重复的行列索引对(pair),例如下面的语句就会报错:
# df.pivot(index='School',columns='Gender',values='Height').head()
# ValueError: Index contains duplicate entries, cannot reshape
因此,更多的时候会选择使用强大的pivot_table函数。
2. pivot_table
pd.pivot_table(df,index='ID',columns='Gender',values='Height').head()
但是在速度上,由于功能更多,自然是比不上原来的pivot函数的。
%timeit df.pivot(index='ID',columns='Gender',values='Height')
%timeit pd.pivot_table(df,index='ID',columns='Gender',values='Height')
Pandas中提供了各种选项,下面介绍常用参数:
① aggfunc:对组内进行聚合统计,可传入各类函数,默认为'mean'
pd.pivot_table(df,index='School',columns='Gender',values='Height',aggfunc=['mean','sum']).head()
② margins:汇总边际状态
pd.pivot_table(df,index='School',columns='Gender',values='Height',aggfunc=['mean',