iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >五个Pandas 实战案例带你分析操作数据
  • 788
分享到

五个Pandas 实战案例带你分析操作数据

2024-04-02 19:04:59 788人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录构建数据分析维度1:时间2019-2021年每月销量走势2019-2021销售额走势年度销量、销售额和平均销售额分析维度2:商品水果年度销量占比各水果年度销售金额对比商品月度销量

大家好,之前分享过很多关于 pandas 的文章,今天我给大家分享5个小而美的 Pandas 实战案例。

内容主要分为:

  • 如何自行模拟数据
  • 多种数据处理方式
  • 数据统计与可视化
  • 用户RFM模型
  • 用户复购周期

构建数据

本案例中用的数据是小编自行模拟的,主要包含两个数据:订单数据和水果信息数据,并且会将两份数据合并


import pandas as pd
import numpy as np
import random
from datetime import *
import time

import plotly.express as px
import plotly.graph_objects as Go
import plotly as py

# 绘制子图
from plotly.subplots import make_subplots

1、时间字段

图片

2、水果和用户

图片

3、生成订单数据


order = pd.DataFrame({
    "time":time_range,  # 下单时间
    "fruit":fruit_list,  # 水果名称
    "name":name_list,  # 顾客名
    # 购买量
    "kilogram":np.random.choice(list(range(50,100)), size=len(time_range),replace=True) 
})

order

图片

4、生成水果的信息数据


infortmation = pd.DataFrame({
    "fruit":fruits,
    "price":[3.8, 8.9, 12.8, 6.8, 15.8, 4.9, 5.8, 7],
    "region":["华南","华北","西北","华中","西北","华南","华北","华中"]
})

infortmation

图片

5、数据合并

将订单信息和水果信息直接合并成一个完整的DataFrame,这个df就是接下来处理的数据

图片

6、生成新的字段:订单金额

图片

到这里你可以学到:

  • 如何生成时间相关的数据
  • 如何从列表(可迭代对象)中生成随机数据
  • Pandas的DataFrame自行创建,包含生成新字段
  • Pandas数据合并

分析维度1:时间

2019-2021年每月销量走势

1、先把年份和月份提取出来:


df["year"] = df["time"].dt.year
df["month"] = df["time"].dt.month
# 同时提取年份和月份
df["year_month"] = df["time"].dt.strftime('%Y%m')

df

图片

2、查看字段类型:

图片

3、分年月统计并展示:


# 分年月统计销量
df1 = df.groupby(["year_month"])["kilogram"].sum().reset_index()

fig = px.bar(df1,x="year_month",y="kilogram",color="kilogram")
fig.update_layout(xaxis_tickangle=45)   # 倾斜角度

fig.show()

图片

2019-2021销售额走势


df2 = df.groupby(["year_month"])["amount"].sum().reset_index()

df2["amount"] = df2["amount"].apply(lambda x:round(x,2))

fig = go.Figure()
fig.add_trace(go.Scatter(  #
    x=df2["year_month"],
    y=df2["amount"],
    mode='lines+markers', # mode模式选择
    name='lines')) # 名字

fig.update_layout(xaxis_tickangle=45)   # 倾斜角度

fig.show()

图片

年度销量、销售额和平均销售额

图片

分析维度2:商品

水果年度销量占比


df4 = df.groupby(["year","fruit"]).agg({"kilogram":"sum","amount":"sum"}).reset_index()
df4["year"] = df4["year"].astype(str)
df4["amount"] = df4["amount"].apply(lambda x: round(x,2))

from plotly.subplots import make_subplots
import plotly.graph_objects as go

fig = make_subplots(
    rows=1, 
    cols=3,
    subplot_titles=["2019年","2020年","2021年"],
    specs=[[{"type": "domain"},   # 通过type来指定类型
           {"type": "domain"},
           {"type": "domain"}]]
)  

years = df4["year"].unique().tolist()

for i, year in enumerate(years):
    name = df4[df4["year"] == year].fruit
    value = df4[df4["year"] == year].kilogram
    
    fig.add_traces(go.Pie(labels=name,
                        values=value
                       ),
                 rows=1,cols=i+1
                )

fig.update_traces(
    textposition='inside',   # 'inside','outside','auto','none'
    textinfo='percent+label',
    insidetextorientation='radial',   # horizontal、radial、tangential
    hole=.3,
    hoverinfo="label+percent+name"
)

fig.show()

图片

各水果年度销售金额对比


years = df4["year"].unique().tolist()

for _, year in enumerate(years):
    
    df5 = df4[df4["year"]==year]
    fig = go.Figure(go.Treemap( 
        labels = df5["fruit"].tolist(),
        parents = df5["year"].tolist(),
        values = df5["amount"].tolist(),
        textinfo = "label+value+percent root"
    ))
    
    fig.show()

图片

图片

图片

商品月度销量变化

图片


fig = px.bar(df5,x="year_month",y="amount",color="fruit")
fig.update_layout(xaxis_tickangle=45)   # 倾斜角度
fig.show()

图片

折线图展示的变化:

图片

分析维度3:地区

不同地区的销量

图片

图片

不同地区年度平均销售额

df7 = df.groupby(["year","region"])["amount"].mean().reset_index()

图片

分析维度4:用户

用户订单量、金额对比

df8 = df.groupby(["name"]).agg({"time":"count","amount":"sum"}).reset_index().rename(columns={"time":"order_number"})
df8.style.background_gradient(cmap="Spectral_r")

图片

用户水果喜好

根据每个用户对每种水果的订单量和订单金额来分析:

df9 = df.groupby(["name","fruit"]).agg({"time":"count","amount":"sum"}).reset_index().rename(columns={"time":"number"})

df10 = df9.sort_values(["name","number","amount"],ascending=[True,False,False])

df10.style.bar(subset=["number","amount"],color="#a97fcf")

图片

px.bar(df10,
       x="fruit",
       y="amount",
#            color="number",
       facet_col="name"
      )

图片

用户分层—RFM模型

RFM模型是衡量客户价值和创利能力的重要工具和手段。

通过这个模型能够反映一个用户的交期交易行为、交易的总体频率和总交易金额3项指标,通过3个指标来描述该客户的价值状况;同时依据这三项指标将客户划分为8类客户价值:

  • Recency(R)是客户最近一次购买日期距离现在的天数,这个指标与分析的时间点有关,因此是变动的。理论上客户越是在近期发生购买行为,就越有可能复购
  • Frequency(F)指的是客户发生购买行为的次数–最常购买的消费者,忠诚度也就较高。增加顾客购买的次数意味着能占有更多的时长份额。
  • Monetary value(M)是客户购买花费的总金额。

图片

下面通过Pandas的多个方法来分别求解这个3个指标,首先是F和M:每位客户的订单次数和总金额

图片

如何求解R指标呢?

1、先求解每个订单和当前时间的差值

图片

2、根据每个用户的这个差值R来进行升序排列,排在第一位的那条数据就是他最近购买记录:以xiaoming用户为例,最近一次是12月15号,和当前时间的差值是25天

图片

3、根据用户去重,保留第一条数据,这样便得到每个用户的R指标:

图片

4、数据合并得到3个指标:

图片

图片

当数据量足够大,用户足够多的时候,就可以只用RFM模型来将用户分成8个类型

用户复购周期分析

复购周期是用户每两次购买之间的时间间隔:以xiaoming用户为例,前2次的复购周期分别是4天和22天

图片

下面是求解每个用户复购周期的过程:

1、每个用户的购买时间升序

图片

2、将时间移动一个单位:

图片

3、合并后的差值:

出现空值是每个用户的第一条记录之前是没有数据,后面直接删除了空值部分

图片

图片

直接取出天数的数值部分:

图片

5、复购周期对比


px.bar(df16,
       x="day",
       y="name",
       orientation="h",
       color="day",
       color_continuous_scale="spectral"   # purples
      )

图片

上图中矩形越窄表示间隔越小;每个用户整个复购周期由整个矩形长度决定。查看每个用户的整体复购周期之和与平均复购周期:

图片

得到一个结论:Michk和Mike两个用户整体的复购周期是比较长的,长期来看是忠诚的用户;而且从平均复购周期来看,相对较低,说明在短时间内复购活跃。

从下面的小提琴中同样可以观察到,Michk和Mike的复购周期分布最为集中。

图片

到此这篇关于五个Pandas 实战案例带你分析操作数据的文章就介绍到这了,更多相关Pandas 分析数据内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 五个Pandas 实战案例带你分析操作数据

本文链接: https://www.lsjlt.com/news/163758.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 五个Pandas 实战案例带你分析操作数据
    目录构建数据分析维度1:时间2019-2021年每月销量走势2019-2021销售额走势年度销量、销售额和平均销售额分析维度2:商品水果年度销量占比各水果年度销售金额对比商品月度销量...
    99+
    2024-04-02
  • Python Pandas数据处理高频操作实例分析
    这篇文章主要介绍“Python Pandas数据处理高频操作实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python Pandas数据处理高频操作实例分析”文章能帮助大...
    99+
    2023-07-02
  • Python数据分析Pandas Dataframe排序操作
    目录1.索引的排序2.值的排序前言: 数据的排序是比较常用的操作,DataFrame 的排序分为两种,一种是对索引进行排序,另一种是对值进行排序,接下来就分别介绍一下。 1.索引的排...
    99+
    2024-04-02
  • Python数据分析 Pandas Series对象操作
    目录一、Pandas Series对象Series数据结构创建Series对象二、Series对象的基本操作Series 常用属性Series 常用方法Series 运算一、Pand...
    99+
    2024-04-02
  • 100天精通Python(数据分析篇)——第65天:Pandas聚合操作与案例
    文章目录 一、聚合 (aggregation) 1. 内置的聚合函数 2. 可自定义函数,传入agg方法中 3. 应用多个聚合函数 4. 对不同的列分别...
    99+
    2023-09-11
    python pandas 数据分析
  • 一个Python案例带你掌握xpath数据解析方法
    目录xpath基本概念xpath解析原理环境安装如何实例化一个etree对象xpath(‘xpath表达式’)xpath爬取58二手房实例xpath图片解析下...
    99+
    2024-04-02
  • 数据分析处理库Pandas——对象操作
    Series结构 索引 修改 旧数据赋值给新数据,旧数据不变。 对某一数值进行修改,可以选择保留修改前或修改后的数值。 替换索引 修改某一个索引 添加 在数据1后添加数据2,数据1不改变。 添加...
    99+
    2023-01-31
    对象 操作 数据
  • Python数据分析:案例实操:使用Py
    Python爬虫太火了,没写过爬虫,都不敢说自己学过Python?! 可是刚一开始学,我就遇到了难题----数据分析!听起来很高大上,有没有? 想要做爬虫,就得先学会使用数据分析工具,制作图表这是最基本的。网上发现一个讲Pytho...
    99+
    2023-01-31
    案例 数据 Python
  • Pandas数据操作及数据分析常用技术介绍
    目录DataFrame的应用数据分析统计描述缺失值处理异常值处理排序和Top-N分组聚合操作透视表和交叉表数据可视化Pandas是一个强大的数据分析工具,它提供了数据处理、清洗、转换...
    99+
    2023-05-18
    Pandas数据操作 Pandas数据分析
  • Python的Pandas时序数据实例分析
    这篇文章主要讲解了“Python的Pandas时序数据实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python的Pandas时序数据实例分析”吧!Pandas时序数据前言 在数据分...
    99+
    2023-06-29
  • Python数据分析Pandas Dataframe排序操作的方法
    本文小编为大家详细介绍“Python数据分析Pandas Dataframe排序操作的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python数据分析Pandas Dataframe排序操作的方法”文章能帮助大家...
    99+
    2023-06-30
  • 分享20个Pandas短小精悍的数据操作
    目录1. ExcelWriter2. pipe3. factorize4. explode5. squeeze6. between7. T8. pandas styler9. Pan...
    99+
    2024-04-02
  • Java操作数据库连接池实例分析
    这篇文章主要介绍“Java操作数据库连接池实例分析”,在日常操作中,相信很多人在Java操作数据库连接池实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java操作数据库连接池实例分析”的疑惑有所帮助!...
    99+
    2023-06-20
  • 100天精通Python(数据分析篇)——第66天:Pandas透视表基础+实战案例(pivot_table函数)
    文章目录 一、透视表基础参数说明+实战案例 0. 导入Excel数据 1. data 2. index 3. values 4. columns ...
    99+
    2023-09-07
    python pandas 数据分析
  • MySQL数据库的基本操作实例分析
    本文小编为大家详细介绍“MySQL数据库的基本操作实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL数据库的基本操作实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、MySQL简介1、数据...
    99+
    2023-06-30
  • Python Pandas中的数据结构实例分析
    今天小编给大家分享一下Python Pandas中的数据结构实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
    99+
    2023-07-02
  • Redis的五种数据类型实例分析
    本篇内容主要讲解“Redis的五种数据类型实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redis的五种数据类型实例分析”吧!1.Redis的5种数据类...
    99+
    2024-04-02
  • Python数据分析之 Pandas Dataframe合并和去重操作
    目录一、之 Pandas Dataframe合并二、去重操作一、之 Pandas Dataframe合并 在数据分析中,避免不了要从多个数据集中取数据,那就避免不了要进行数据的合并,...
    99+
    2024-04-02
  • Python文件操作和数据格式实例分析
    这篇文章主要介绍“Python文件操作和数据格式实例分析”,在日常操作中,相信很多人在Python文件操作和数据格式实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python文件操作和数据格式实例分析...
    99+
    2023-06-30
  • Pandas如何对Categorical类型字段数据统计实战案例
    目录一、Pandas如何对Categorical类型字段数据统计1.1主要知识点1.2创建 python 文件1.3运行结果二、Pandas如何从股票数据找出收盘价最低行2.1主要知...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作