Pandas 透视表概述
数据透视表(Pivot Table)是一种交互式的表,可以进行某些计算,如求和与计数等。所进行的计算与数据跟数据透视表中的排列有关。
之所以称为数据透视表,是因为可以动态地改变它们的版面布置,以便按照不同方式分析数据,也可以重新安排行号、列标和页字段。每一次改变版面布置时,数据透视表会立即按照新的布置重新计算数据。另外,如果原始数据发生更改,则可以更新数据透视表。
Pandas pivot_table函数介绍:pandas有两个pivot_table函数
- pandas.pivot_table
- pandas.DataFrame.pivot_table
- pandas.pivot_table 比 pandas.DataFrame.pivot_table 多了一个参数data,data就是一个dataframe,实际上这两个函数相同
pivot_table参数中最重要的四个参数 values,index,columns,aggfunc,下面通过案例介绍pivot_tabe的使用
零售会员数据分析案例
业务背景介绍
某女鞋连锁零售企业,当前业务以线下门店为主,线上销售为辅,通过对会员的注册数据以及的分析,监控会员运营情况,为后续会员运营提供决策依据。
会员等级说明:
- 白银: 注册(0)
- 黄金: 下单(1~3888)
- 铂金: 3888~6888
- 钻石: 6888以上
案例中用到的数据:
- 会员信息查询.xlsx
- 会员消费报表.xlsx
- 门店信息表.xlsx
- 全国销售订单数量表.xlsx
每月存量,增量是最基本的指标,通过会员数量考察会员运营情况
import pandas as pd custom_info=pd.read_excel('data/会员信息查询.xlsx') custom_info.info() custom_info.head()
需要按月统计注册的会员数量
from datetime import datetime custom_info.loc[:,'注册年月'] = custom_info['注册时间'].apply(lambda x : x.strftime('%Y-%m')) custom_info[['会员卡号','会员等级','会员来源','注册时间','注册年月']].head()
month_count = custom_info.groupby('注册年月')[['会员卡号']].count() month_count.columns = ['月增量'] month_count.head()
用数据透视表实现相同功能:dataframe.pivot_table()
- index:行索引,传入原始数据的列名
- columns:列索引,传入原始数据的列名
- values: 要做聚合操作的列名
- aggfunc:聚合函数
custom_info.pivot_table(index = '注册年月',values = '会员卡号',aggfunc = 'count’)
计算存量 cumsum 对某一列 做累积求和 1 1+2 1+2+3 1+2+3+4 ...
month_count.loc[:,'存量'] = month_count['月增量'].cumsum() month_count
可视化,需要去除第一个月数据
第一个月数据是之前所有会员数量的累积(数据质量问题)
由于会员等级跟消费金额挂钩,所以会员等级分布分析可以说明会员的质量
通过groupby实现,注册年月,会员等级,按这两个字段分组,对任意字段计数
分组之后得到的是multiIndex类型的索引,将multiIndex索引变成普通索引
custom_info.groupby(['注册年月','会员等级'])['会员卡号'].count().reset_index()
或使用unsatck:
custom_info.groupby(['注册年月','会员等级'])['会员卡号'].count().unstack()
使用透视表可以实现相同效果:
增量等级占比分析,查看增量会员的整体情况
Pandas透视表及应用(二)+https://developer.aliyun.com/article/1543896?spm=a2c6h.13148508.setting.14.1fa24f0exT0YLK