6.python数据分析 交叉制表 与数据透视表总结

6.python数据分析交叉制表与数据透视表总结

**数据集 **

import pandas as pd
import numpy as np
an=pd.DataFrame({'id':['01','01','01','01','01','02','02','02','02','02','03','03','03','03','03','04','04','04','04','04','04'],'name':['A','B','C','D','E','C','D','E','A','B','A','B','C','D','E','A','B','C','D','E','E'],
                 'num':[20,23,23,33,32,19,20,20,56,32,12,16,27,42,61,21,23,25,32,12,13]})

在这里插入图片描述

一.行索引转列索引:unstack()函数

**扩展:**stack()函数,列索引转行索引

#如有索引组合列有重复数据,需先groupby+聚合函数去重
an_group=an.groupby(by=['id','name']).sum().reset_index()
#设置索引,set_index得到的都是行索引
an_1=an_group.set_index(['id','name'])
#unstack将'id'列设置成列索引
an_1.unstack('id')
print(an_1)

在这里插入图片描述

二. 透视表提供的pivot_table 方法

数据透视表是数据分析中常见的工具之一,根据一个或多个键值对数据进行聚合,根据行或列的分组将数据划分到各个区域中。说到分组,除了之前所用到的groupby函数,直接使用透视表提供的pivot_table 方法更加方便。

​ 默认显示mean平均值,如需其他类型聚合,可在参数aggfunc中设置
在这里插入图片描述

ans_2=pd.pivot_table(an[['id','name','num']],index=['name'],columns=['id'],aggfunc=np.sum)
print(ans_2)

在这里插入图片描述

三. 交叉表crosstab函数

交叉表是一种特殊的透视表,主要用于计算分组频率。利用pandas提供的crosstab函数可以制作交叉表。
在这里插入图片描述

​ 交叉表是透视表的一种,crosstab函数的参数和pivot_table的函数基本相同。不同之处在于crosstab函数中的index、columns、values,输入的都是从DataFrame中提取的某一列。

ans_3=pd.crosstab(values=an['num'],index=an['name'],columns=an['id'],aggfunc=np.sum)
print(ans_3)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值