Pandas透视表及应用

 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月的复购率 计算复购率环比

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/598028.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git保姆级安装教程

Git保姆级安装教程 一、去哪下载二、安装2.1 具体安装步骤2.2 设置全局用户签名 一、去哪下载 1、官网(有最新版本):https://git-for-windows.github.io/ 2、本人学习时安装的版本,链接:https://pan.baidu.com/s/1uAo…

Spark内核解析-数据存储5(六)

1、Spark的数据存储 Spark计算速度远胜于Hadoop的原因之一就在于中间结果是缓存在内存而不是直接写入到disk,本文尝试分析Spark中存储子系统的构成,并以数据写入和数据读取为例,讲述清楚存储子系统中各部件的交互关系。 1.1存储子系统概览 …

LabVIEW开发分布式光纤油气管道泄漏检测及预警系统

LabVIEW开发分布式光纤油气管道泄漏检测及预警系统 随着油气工业的发展,管道泄漏成为一个严峻的安全问题。本文介绍了一种基于LabVIEW的分布式光纤油气管道泄漏检测及预警系统的设计思路和组成结构。系统包括硬件和软件两部分,其中硬件部分详细阐述了分…

redis报错:Creating Server TCP listening socket 127.0.0.1:6379: bind: No error

Redis启动时报错: Creating Server TCP listening socket 127.0.0.1:6379: bind: No error 这个错误说明已经开启了redis,并且已经占用了端口6379,需要停止redis后再开启。 redis-cli.exeshutdownexitredis-server redis.windows.conf 参考…

java每日一题——输出星星塔(答案及编程思路)

前言: 打好基础,daydayup! 题目:请编写输出如下图的星星塔 编程思路:1,计算要输入几行;2,计算每行的⭐数量,及空格的数量;计算相应的关系; 如图:假…

Redis 有序集合(sorted set) 命令

目录 1.Redis Zrevrank 命令 - 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序简介语法可用版本: > 2.2.0返回值: 如果成员是有序集 key 的成员,返回成员的排名。 如果成员不是有序集 key 的成员,返回 nil 。 示例 2…

视频号掀起内容新风向,这几类账号为何爆红?

12月初,视频号就迎来了好消息,官方发布消息称,视频号作者加入互选的门槛由10000粉调整为5000粉,其他条件不变。此举旨在激励更多创作者积极投入视频内容创作,从而获得更多商业合作的机会和收益。 为帮助大家更好地洞察…

前端下载文件问题之如何获取报错信息

问题:点击下载后。接口会生成并返回文件流。在极端情况下接口数据返回异常,需要抛出错误信息,比如后端拼接错误情况、空文件情况。 难点:responseType设置为Blob后,返回内容为二进制文件流,从而无法获取错误…

Nginx学习之Nginx高性能的实现原理

Nginx学习之Nginx高性能的实现原理   Nginx 采用的是多进程(单线程) & 多路IO复用模型,使用了 I/O 多路复用技术的 Nginx,就成了”并发事件驱动“的服务器,同时使用sendfile等技术,最终实现了高性能。…

简单最短路径算法

前言 图的最短路径算法主要包括: 有向无权图的单源最短路径 宽度优先搜索算法(bfs) 有向非负权图的单源最短路径 迪杰斯特拉算法(Dijkstra) 有向有权图的单源最短路径 贝尔曼福特算法(Bellman-Ford&#…

全志R128 SDK架构与目录结构

R128 S2 是全志提供的一款 M33(ARM)C906(RISCV-64)HIFI5(Xtensa) 三核异构 SoC,同时芯片内部 SIP 有 1M SRAM、8M LSPSRAM、8M HSPSRAM 以及 16M NORFLASH。本文档作为 R128 FreeRTOS SDK 开发指南,旨在帮助软件开发工程师、技术支持工程师快速上手&…

Kodi 开源多媒体播放器

Kodi (原名 XBMC) 是一款经典开源免费、跨平台且极其强大专业的多媒体影音播放器,包含专业的影音内容管理以及解码播放功能于一体,提供适合在手机/电视/投影/大屏幕上显示的全屏界面,无线手机遥控操作方式,以及功能相当丰富的插件…

Selenium-java元素等待三种方式

第二种方式需要写在创建driver时的代码下面 第三种则是对每个定位元素进行配置

Mybatis之多表查询

目录 一、简介 1、使用嵌套查询: 2、使用多个 SQL 语句: 3、使用关联查询: 4、使用自定义映射查询: 二、业务场景 三、示例 1、一对一查询 2、一对多查询 一、简介 MyBatis 是一个优秀的持久层框架,它提供了强大的支持来执…

/bin/bash: cannot execute binary file

容器内部无法执行二进制文件 原因是docker镜像的 入口点不能指向/bin/bash。移除ENTRYPOINT ["/bin/bash"]就足以使其正常工作。 如果是下载的镜像,不能修改ENTRYPOIN,可以使用dockerfile覆盖掉原来的ENTRYPOINT FROM ubuntu ENTRYPOINT [ …

常见的软件架构风格

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情 以下是最常见的建筑风格: 整体式:将整个应用程序构建为一个单元,其中所有功能和组件都从一个位置进行管理和服务。整体架构的例…

使用“反向代理服务器”的优点是什么?

反向代理服务器是一种网络架构模式,通常位于客户端和实际服务器之间,用于处理客户端请求并转发到实际服务器。以下是使用反向代理服务器的优点: 1.安全性:反向代理服务器可以提供额外的安全层。通过在反向代理服务器上配置防火墙和…

Prometheus-blackbox

一. 部署 apiVersion: v1 kind: ConfigMap metadata:name: blackbox-confignamespace: monitor data:blackbox.yml: |-modules:http_2xx: # http 检测模块 Blockbox-Exporter 中所有的探针均是以 Module 的信息进行配置prober: httptimeout: 10shttp:valid_http_versions: […

Android中的Intent

一.显式Intent 显示Intent是明确目标Activity的类名 1. 通过Intent(Context packageContext, Class<?> cls)构造方法 2.通过Intent的setComponent()方法 3.通过Intent的setClass/setClassName方法 通过Intent(Context packageContext, Class<?> cls)构造方法 通…

羊大师解读,羊奶的口味更适合哪些人群?

羊大师解读&#xff0c;羊奶的口味更适合哪些人群&#xff1f; 羊奶作为一种营养丰富的乳制品&#xff0c;拥有许多独特的品质和口味&#xff0c;备受消费者的青睐。它不仅含有丰富的蛋白质、维生素和矿物质&#xff0c;还具有更易消化的特点&#xff0c;适合许多人群的饮用。…