Pandas透视表及应用

发布时间:2024年01月05日

?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的使用?

零售会员数据分析案例

业务背景介绍

某女鞋连锁零售企业,当前业务以线下门店为主,线上销售为辅,通过对会员的注册数据以及的分析,监控会员运营情况,为后续会员运营提供决策依据。

会员等级说明:

  1. 白银: 注册(0)
  2. 黄金: 下单(1~3888)
  3. 铂金: 3888~6888
  4. 钻石: 6888以上

案例中用到的数据:

  1. 会员信息查询.xlsx
  2. 会员消费报表.xlsx
  3. 门店信息表.xlsx
  4. 全国销售订单数量表.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 ...

#通过cumsum 对月增量做累积求和
month_count.loc[:,'存量'] = month_count['月增量'].cumsum()
month_count

可视化,需要去除第一个月数据

第一个月数据是之前所有会员数量的累积(数据质量问题)

?????????

由于会员等级跟消费金额挂钩,所以会员等级分布分析可以说明会员的质量?

通过groupby实现,注册年月,会员等级,按这两个字段分组,对任意字段计数

?分组之后得到的是multiIndex类型的索引,将multiIndex索引变成普通索引

custom_info.groupby(['注册年月','会员等级'])['会员卡号'].count().reset_index()
# 使得结果更美观

?或使用unsatck:

custom_info.groupby(['注册年月','会员等级'])['会员卡号'].count().unstack()

使用透视表可以实现相同效果:?

?

?增量等级占比分析,查看增量会员的整体情况

?

?整体等级分布

?

报表可视化

?

从业务角度,将会员数据拆分成线上和线下,比较每月线上线下会员的运营情况?

将“会员来源”字段进行拆解,统计线上线下会员增量?


各地区会销比

会销比的计算和分析会销比的作用

会销比 = 会员消费的金额 / 全部客户消费的金额

由于数据脱敏的原因,没有全部客户消费金额的数据,所以用如下方式替换

会销比 = 会员消费的订单数 / 全部销售订单数

会销比统计的是会员消费占所有销售金额的比例

通过会销比可以衡量会员的整体质量?

加载数据
custom_consume=pd.read_excel('data/会员消费报表.xlsx')
all_orders=pd.read_excel('data/全国销售订单数量表.xlsx')
custom_consume.head()
all_orders.head()

?为会员消费报表添加年月列

?

merge连接相当于SQL的join?

剔除电商数据,统计会员购买订单数量:

?

全部订单数

?计算各地区会销比

?会员连带率分析

统计订单的数量:需要对"订单号"去重,并且只要"下单"的数据,"退单"的不要?

?统计消费商品数量

?计算连带率

?会员复购率分析

?上面计算的数据为所有数据的复购率,我们要统计每年的复购率,所以要先对数据进行订单日期筛选,这里我们定义一个函数?

统计2018年01月~2018年12月复购率和2018年02月~2019年01月复购率

计算2018年的复购率?

计算2018年02月~2019年01月的复购率?计算复购率环比

文章来源:https://blog.csdn.net/qq_64685283/article/details/135397335
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。