Pandas-数据透视表

文章目录

  • [一. Pandas透视表概述](#一. Pandas透视表概述)
    • [1. pivot_table函数介绍](#1. pivot_table函数介绍)
  • [二. 栗子-零售会员数据分析](#二. 栗子-零售会员数据分析)
    • [1. 案例业务介绍](#1. 案例业务介绍)
    • [2. 会员存量、增量分析](#2. 会员存量、增量分析)
      • [① group by](#① group by)
      • [② 透视表](#② 透视表)
      • [③ 可视化](#③ 可视化)

一. Pandas透视表概述

数据透视表(Pivot Table)是一种交互式的表,可以进行某些计算,如求和与计数等。所进行的计算与数据跟数据透视表中的排列有关。

之所以称为数据透视表,是因为可以动态地改变它们的版面布置,以便按照不同方式分析数据,也可以重新安排行号、列标和页字段。每一次改变版面布置时,数据透视表会立即按照新的布置重新计算数据。另外,如果原始数据发生更改,则可以更新数据透视表。

在使用Excel做数据分析时,透视表是很常用的功能,Pandas也提供了透视表功能,对应的API为pivot_table

1. 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)
      ② 黄金: 下单(1~3888)
      ③ 铂金: 3888~6888
      ④ 钻石: 6888以上
  • 数据分析要达成的目标

    • 描述性数据分析
    • 使用业务数据,分析出会员运营的基本情况
  • 案例中用到的数据

    ① 会员信息查询.xlsx

    ② 会员消费报表.xlsx

    ③ 门店信息表.xlsx

    ④ 全国销售订单数量表.xlsx

  • 分析会员运营的基本情况

    • 从量的角度分析会员运营情况:
      ① 整体会员运营情况(存量,增量)
      ② 不同渠道(线上,线下)的会员运营情况
      ③ 线下业务,拆解到不同的地区、门店会员运营情况
    • 从质的角度分析会员运营情况:
      ① 会销比
      ② 连带率
      ③ 复购率

2. 会员存量、增量分析

每月存量,增量是最基本的指标,通过会员数量考察会员运营情况

用到的数据:会员信息查询.xlsx

  • 加载数据

    python 复制代码
    import pandas as pd
    custom_info=pd.read_excel('data/会员信息查询.xlsx')
    custom_info.info()
  • 会员信息查询

    python 复制代码
    custom_info.head()
  • 需要按月统计注册的会员数量

    注册时间原始数据需要处理成年-月的形式

    python 复制代码
    # 给 会员信息表 添加年月列
    from datetime import datetime
    custom_info.loc[:,'注册年月'] = custom_info['注册时间'].apply(lambda x : x.strftime('%Y-%m'))
    custom_info[['会员卡号','会员等级','会员来源','注册时间','注册年月']].head()

① group by

python 复制代码
month_count = custom_info.groupby('注册年月')[['会员卡号']].count()
month_count.head()
python 复制代码
month_count.columns = ['月增量']
month_count.head()

② 透视表

  • 用数据透视表实现相同功能:dataframe.pivot_table()
    index:行索引,传入原始数据的列名
    columns:列索引,传入原始数据的列名
    values: 要做聚合操作的列名
    aggfunc:聚合函数
python 复制代码
custom_info.pivot_table(index='注册年月',values='会员卡号',aggfunc='count').head()

计算存量 cumsum 对某一列 做累积求和 1 1+2 1+2+3 1+2+3+4 ...

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

③ 可视化

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

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

python 复制代码
#Pandas版本>1.1
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei'] # 正常显示汉字
plt.rcParams['axes.unicode_minus'] = False # 正常显示负号

month_count['月增量'].plot(figsize = (20,8),color='red',secondary_y = True)
month_count['存量'].plot.bar(figsize = (20,8),color='gray',xlabel = '年月',legend = True,ylabel = '存量')
plt.title("会员存量增量分析",fontsize=20)
相关推荐
Python之栈1 天前
PandasAI:当数据分析遇上自然语言处理
人工智能·python·数据分析·pandas
zhuyixiangyyds2 天前
day21和day22学习Pandas库
笔记·学习·pandas
冷月半明3 天前
《Pandas 性能优化:向量化操作 vs. Swifter 加速,谁才是大数据处理的救星?》
python·数据分析·pandas
慕丹3 天前
虫洞数观系列三 | 数据分析全链路实践:Pandas清洗统计 + Navicat可视化呈现
python·mysql·数据挖掘·数据分析·pandas
lzq6034 天前
【Python实战】用Pandas轻松实现Excel数据清洗与可视化
python·excel·pandas
啊阿狸不会拉杆6 天前
第十五章:Python的Pandas库详解及常见用法
开发语言·python·数据分析·pandas
夜松云6 天前
Python数据可视化与数据处理全解析:Matplotlib图形控制与Pandas高效数据分析实战
python·算法·信息可视化·pandas·matplotlib
蹦蹦跳跳真可爱5896 天前
Python----数据分析(足球运动员数据分析)
python·数据挖掘·数据分析·pandas·matplotlib
liuweidong08027 天前
【Pandas】pandas Series to_xarray
linux·运维·pandas
王有品8 天前
python之size,count的区别
python·机器学习·pandas