首页 > 作文

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

更新时间:2023-04-04 18:49:24 阅读: 评论:0

目录
构建数据分析维度1:时间2019-2021年每月销量走势2019-2021销售额走势年度销量、销售额和平均销售额分析维度2:商品水果年度销量占比各水果年度销售金额对比商品月度销量变化分析维度3:地区不同地区的销量分析维度4:用户用户订单量、金额对比用户水果喜好用户分层—rfm模型用户复购周期分析

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

内容主要分为:

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

构建数据

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

import pandas as pdimport numpy as npimport randomfrom datetime import *import timeimport plotly.express as pximport plotly.graph_objects as goimport 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.choi情侣名字符号ce(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.yeardf["month"] = df["time"].dt.month# 同时提取年份和月份df["year_month"] = df["time"].dt.strftime('%y%m')df

2、查看字段类型:

3、分年月统计并展示:

# 分年月统计销量df1 = df.groupby(["year_month"])["kilogram"].sum().ret_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().ret_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"}).ret_index()df4["year"] = df4["year"].astype(str)df4["amount"] = df4["amount"].apply(lambda x: round(x,2))from plotly.subplots import make_subplotsimport plotly.graph_objects as gofig = 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().ret_index()

分析维度4:用户

用户订单量、金额对比

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

用户水果喜好

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

df9 = df.groupby(["name","fruit"]).agg({"time":"count","amount":"sum"}).ret_index().rename(columns={"time":"number"})df10 = df9.sort_values(["name","number","amount"],ascending=[true,fal,fal])df10.style.bar(subt=["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 分析数据内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 18:49:22,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/19ae9a903392e3acd1620228d836b1ba.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:五个Pandas 实战案例带你分析操作数据.doc

本文 PDF 下载地址:五个Pandas 实战案例带你分析操作数据.pdf

上一篇:氟化氢沸点
下一篇:返回列表
标签:用户   数据   销量   周期
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图