pandas 数据透视表 pivot

pandas 数据透视表 pivot,第1张

pandas 数据透视表 pivot

数据透视表:透视一词是绘画中的概念,指将立体的空间实物 映射到二维的平面或曲面上的技巧,也就是说提供一个视角上的视图。数据透视表则是将原有的行列结构打散重组成我们需要关系,提供一个分析视角上的视图。

如原始表格

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)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5680312.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存