数据透视表:透视一词是绘画中的概念,指将立体的空间实物 映射到二维的平面或曲面上的技巧,也就是说提供一个视角上的视图。数据透视表则是将原有的行列结构打散重组成我们需要关系,提供一个分析视角上的视图。
如原始表格
userNum score subjectCode subjectName userName
0 001 90 01 语文 张三
1 002 96 01 语文 李四
2 003 93 01 语文 王五
3 001 87 02 数学 张三
4 002 82 02 数学 李四
5 003 80 02 数学 王五
我们想得到 透视表格
subjectName 数学 语文 数学排名 语文排名
userNum userName
001 张三 87 90 1 3
002 李四 82 96 2 1
003 王五 80 93 3 2
我们选择了 用户名作为行维度,学科为列维度,并选择分数为观察数据,对原始表格 提供了一个新的分析视角,这就是透视。
所以pivot_table 必须有的参数有:values index columns,分别指定 观察数据(行列交叉点的值), 行索引(行上的维度),列索引(列上的维度)
实验代码如下:
df=Dataframe(columns=["userNum", "score", "subjectCode", "subjectName", "userName"]) df.userNum = ["001", "002", "003", "001", "002", "003"] df.subjectCode=["01", "01", "01", "02", "02", "02"] df.score = [90, 96, 93, 87, 82, 80] df.loc[df.userNum=="001", "userName"]="张三" df.loc[df.userNum=="002", "userName"]="李四" df.loc[df.userNum=="003", "userName"]="王五" df.loc[df.subjectCode=='01', "subjectName"]="语文" df.loc[df.subjectCode=='02', "subjectName"]="数学" b=df.pivot_table(["score"],index=["userNum", "userName"], columns="subjectName") b.loc[:, ("score","数学排名")] = b["score"]["数学"].rank(ascending=False).astype(int) b.loc[:, ("score","语文排名")] = b["score"]["语文"].rank(ascending=False).astype(int)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)