层次化索引应用场景
例子
王小呆的女朋友李小妹是高三老师,高考结束可以查分后,李小妹让班级里面的同学将查分结果汇总给她,形式都是 张三.csv、李四.csv、王五.csv,内容如下:
张三.csv
姓名,科目,分数
张三,英语,128
张三,语文,110
张三,数学,125
张三,理综,238
李四.csv
姓名,科目,分数
李四,英语,108
李四,语文,98
李四,数学,135
李四,理综,245
王五.csv
姓名,科目,分数
王五,英语,135
王五,语文,105
王五,数学,140
王五,理综,256
李小妹看到这一系列的文件,有点犯愁,于是给小呆交代了一项任务,把这些文件的内容做成一张包含姓名各科成绩的表格。
小呆默默的打开python,先想把这些数据导进去再说,于是写下代码
import pandas as pd
std1 = pd.read_csv('张三.csv', encoding = 'gb2312')
print(std1)
结果报错,小呆想到张三.csv文件和上两次的文件不一样,这是中文名命名的文件,所以是不是需要做点什么变化,而且要将科目作为索引,应该怎么做呢?小呆请教了小瓜,小瓜写下代码
std1 = pd.read_csv('张三.csv', encoding = 'gb2312', engine = 'python', index_col = '科目')
print(std1)
结果如下
分数
姓名 科目
张三 英语 128
语文 110
数学 125
理综 238
连续导入李四.csv、王五.csv。并利用上次的堆叠技术将他们组合成一个数据块。于是小呆写下代码
std = pd.concat([std1, std2, std3])
print(std)
结果如下:
分数
姓名 科目
张三 英语 128
语文 110
数学 125
理综 238
李四 英语 108
语文 98
数学 135
理综 245
王五 英语 135
语文 105
数学 140
理综 256
做到这里小呆想起来小瓜说过的层次化索引就是这个吧,我可以通过外索引直接索引一个数据块,于是小呆写下代码
print(std['李四'])
运行结果报错KeyError。小呆问小瓜什么情况。对于这种情况(注①)不能直接和列表切片索引一样的方式进行索引,而要采用loc方法才能正确进行索引。小瓜写下一行代码
print(std.loc[('李四')])
结果如下:
分数
科目
英语 108
语文 98
数学 135
理综 245
小呆想着怎么把这样一绺的数据转换成表格呢?他想起小瓜说起过stack和unstack方法。于是他写下代码
print(std.unstack())
结果如下:
分数
科目 数学 理综 英语 语文
姓名
张三 125 238 128 110
李四 135 245 108 98
王五 140 256 135 105
小呆看到结果想想,原来这个unstack方法好像是把最内层的行索引旋转成列索引了,然后列内容按照指定的索引添满。
那么stack方法一定是将列索引旋转重排成行索引,然后按指定的索引添满相对应的值。为了验证想法,小呆写下代码
std4 = std.unstack()
print(std4.stack())
结果如下:
分数
姓名 科目
张三 数学 125
理综 238
英语 128
语文 110
李四 数学 135
理综 245
英语 108
语文 98
王五 数学 140
理综 256
英语 135
语文 105
果真如此,小呆将结果std4交给了小妹。
注①:这个情况是什么情况呢?小呆还是想不通,小瓜告诉小呆,当是DataFrame格式的数据时,要用loc函数来进行行索引。
文章导引列表:
机器学习
- 小瓜讲机器学习——分类算法(一)logistic regression(逻辑回归)算法原理详解
- 小瓜讲机器学习——分类算法(二)支持向量机(SVM)算法原理详解
- 小瓜讲机器学习——分类算法(三)朴素贝叶斯法(naive Bayes)
- 小瓜讲机器学习——分类算法(四)K近邻法算法原理及Python代码实现
- 小瓜讲机器学习——分类算法(五)决策树算法原理及Python代码实现
- 小瓜讲机器学习——聚类算法(一)K-Means算法原理Python代码实现
- 小瓜讲机器学习——聚类算法(二)Mean Shift算法原理及Python代码实现
- 小瓜讲机器学习——聚类算法(三)DBSCAN算法原理及Python代码实现
数据分析
- 小呆学数据分析——使用pandas中的merge函数进行数据集合并
- 小呆学数据分析——使用pandas中的concat函数进行数据集堆叠
- 小呆学数据分析——pandas中的层次化索引
- 小呆学数据分析——使用pandas的pivot进行数据重塑
- 小呆学数据分析——用duplicated/drop_duplicates方法进行重复项处理
- 小呆学数据分析——缺失值处理(一)
- 小呆学数据分析——异常值判定与处理(一)
- 小瓜讲数据分析——数据清洗