pandas 数据透视表 pivot_table 的使用

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

如原始表格

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值