python数据分析小案例:天猫订单数据综合分析

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取

本数据集共收集了发生在一个月内的28010条数据,包含以下:

7个字段说明

  1. 订单编号:订单编号

  2. 总金额:订单总金额

  3. 买家实际支付金额:总金额 - 退款金额(在已付款的情况下)。金额为0(在未付款的情况下)

  4. 收货地址:各个省份

  5. 订单创建时间:下单时间

  6. 订单付款时间:付款时间

  7. 退款金额:付款后申请退款的金额。如无付过款,退款金额为0

分析目的

  1. 订单每个环节的转化转化率

  2. 订单成交的时间(按天)趋势(按实际成交)

  3. 订单数在地图上的分布

订单读取及处理

读取数据
import pandas as pd
df = pd.read_csv('tmall_order_report.csv',encoding='gbk')
df.head()

处理数据
df.columns
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# 将字段名称中空格去掉,规范字段名称
df = df.rename( columns = {'收货地址 ':'收货地址','订单付款时间 ':'订单付款时间'} )
df.columns

df.info()

重复值

df.duplicated().sum()

缺失值

df.isnull().sum()
# 订单付款时间 有2923个缺失值,属于正常现象,说明这些单位付过款,无需处理

订单转化率-漏斗图

计算每个环节的数据
  • 将得到如下的数据:

    [[‘总订单数’, ‘28010’],

    [‘付款订单数’, ‘24087’],

    [‘到款订单数’, ‘18955’],

    [‘全额到款订单数’, ‘18441’]]

    买家实际支付金额:总金额 - 退款金额(在已付款的情况下)。金额为0(在未付款的情况下)

    退款金额:付款后申请退款的金额。如无付过款,退款金额为0

订单总笔数
dict_convs = dict()
key = '总订单数'
dict_convs[key] = len(df)
len(df)
付过款的订单数
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
key = '付款订单数'

# 付款时间不为空的,表示付过款
df_payed = df[df['订单付款时间'].notnull()]

dict_convs[key] = len(df_payed)

len(df_payed)
到款订单数
key = '到款订单数'

# 买家实际支付金额:总金额 - 退款金额(在已付款的情况下)
# 买家实际支付金额不为0的,说明订单商家收到过款
df_trans = df_payed[df_payed['买家实际支付金额'] != 0]

dict_convs[key] = len(df_trans)

len(df_trans)
全额到款订单数
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
key = '全额到款订单数'

# 在付款的订单中,退款金额为0的,说明没有退款,表示全额收款
df_trans_full = df_payed[df_payed['退款金额'] == 0]

dict_convs[key] = len(df_trans_full)

len(df_trans_full)
# 查看转化数据
dict_convs
转化率-呈现
df_convs = pd.Series(dict_convs,name = '订单数').to_frame()
df_convs

总体转化率
round(df_convs['订单数']/df_convs.loc['总订单数','订单数']*100,0)

# 添加总体转化率,每个环节除以总订单数
name = '总体转化率'
total_convs = round(df_convs['订单数']/df_convs.loc['总订单数','订单数']*100,0)
df_convs[name] = total_convs
df_convs

# 漏斗图 Funnel
from pyecharts.charts import Funnel
from pyecharts import options as opts
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
funnel = (
    Funnel()
    .add(
        "总体转化率",
        [list(z) for z in zip(df_convs.index,df_convs["总体转化率"])],

        # 让外面的字体出现在图上面
        label_opts = opts.LabelOpts(position = 'inside')
        )
    # 设置系列选项,格式化输出
    .set_series_opts(tooltip_opts = opts.TooltipOpts(formatter = '{a}<br/>{b}:{c}%'))

    # 设置全局选项,添加标题
    .set_global_opts(title_opts = opts.TitleOpts(title = "总体转化率"))
)
funnel.render_notebook()

  • 那么这个的话就是我们的一个漏斗图,我们可以看到天猫的一个总体转化率还是非常高的对吧

  • 所以说像这个天猫他的一个对于商品的推荐还是做的非常不错的

单一环节转化率
# 添加单一环节转化率,每个环节除以上一环节

name = '单一环节转化率'

# shift(): 让整个列往下移动一个位置
# 那么移完位置之后就不可避免会出现第一个位置是空的
# 所以这里我们把第一个位置填数据
df_convs["单一环节转化率"] = df_convs['订单数'].shift().fillna(28010.0)

df_convs["单一环节转化率"] = round((df_convs['订单数']/df_convs["单一环节转化率"]*100),0)
df_convs

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
name = '单一环节转化率'

funnel = (
    Funnel()
    .add(
        series_name = name,
        data_pair = [list(z) for z in zip(df_convs.index,df_convs[name])],
        label_opts = opts.LabelOpts(position = 'inside')
    )
    .set_series_opts(tooltip_opts = opts.TooltipOpts(formatter = '{a}<br/>{b}:{c}%'))
)
funnel.render_notebook()

整体订单数趋势

# 按到款订单统计

# 将订单创建时间这一字段改成时间类型的数据
df_trans['订单创建时间'] = df_trans['订单创建时间'].astype('datetime64')
# 然后让订单创建时间变成行标
df_trans=df_trans.set_index('订单创建时间')
# 最后看一下前5行
df_trans.head()

df_trans.resample('D')['订单编号'].count().index.day.astype('str').tolist()
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# 重采样,时间序列的内容

# 统计每天的订单数量
se_trans_month = df_trans.resample('D')['订单编号'].count()
se_trans_month

from pyecharts.charts import Line
x = se_trans_month.index.day.astype('str').tolist()
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
line = (
    Line()
    # 准备x轴数据,先拿到x轴数据
    # se_trans_month.index
    # 然后只取天
    # se_trans_month.index.day
    # 转成字符串类型,因为直接用整数类型画图会有一点问题
    .add_xaxis(x)
    .add_yaxis(
        "订单数",
        se_trans_month,
    )
    
    # 设置背景有格子
    # 选择性讲,可不讲
    .set_global_opts(
        yaxis_opts = opts.AxisOpts(
            splitline_opts = opts.SplitLineOpts(is_show = True)
        )
    )
    
)
line.render_notebook()

结论:

2月上半个月,企业多数未复工,快递停运,无法发货

下半个月,随着企业复工逐渐增多,订单数开始上涨

#订单平均价格
df_trans['买家实际支付金额'].mean()

销量区域分布-地理图

se_trans_map = df_trans.groupby('收货地址')['订单编号'].count()
se_trans_map

import pyecharts.options as opts
from pyecharts.charts import Map
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# 展示地理分布图
map1 = (
    Map()
    .add(
         "订单数",
        [list(i) for i in se_trans_map.items()],
        'china'
    )
    .set_global_opts(
        visualmap_opts=opts.VisualMapOpts(
            max_=max(se_trans_map)*0.6
        )
    )
    
)
map1.render_notebook()

尾语

最后感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

if语句和switch语句来确定金额之下的优惠折扣

一、优惠规则 输入相应的金额&#xff0c;可以获得规则之下&#xff0c;金额相应的享受的折扣&#xff0c;需要先定义金额&#xff0c;然后就是使用if语句进行判断&#xff0c;使用switch语句选择判断规则之下对应的优惠折扣。 二、相关代码 public class DiscountPrice {p…

Dockerfile文件

什么是dockerfile? Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。 docker build命令用于从Dockerfile构建映像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Docke…

ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders

1.关于稀疏卷积的解释&#xff1a;https://zhuanlan.zhihu.com/p/382365889 2. 答案&#xff1a; 在深度学习领域&#xff0c;尤其是计算机视觉任务中&#xff0c;遮蔽图像建模&#xff08;Masked Image Modeling, MIM&#xff09;是一种自监督学习策略&#xff0c;其基本思想…

rpc原理与应用

IPC和RPC&#xff1f; RPC 而RPC&#xff08;Remote Procedure Call&#xff09;&#xff0c;又叫做远程过程调用。它本身并不是一个具体的协议&#xff0c;而是一种调用方式。 gRPC 是 Google 最近公布的开源软件&#xff0c;基于最新的 HTTP2.0 协议&#xff0c;并支持常见…

【计算机网络】HTTPS协议原理

目录 一. HTTPS的基础概念 二. 概念准备 1. 密码学 2. 为什么要加密 三. 常见加密方式 1. 对称加密 2. 非对称加密 四. HTTPS原理探究 五. CA认证 1. 数据指纹&&数据摘要 2. 证书 3. 签名与验证 4. 琐碎知识点 5. 总结——完整流程 结束语 一. HTTPS的基…

开发猿的平平淡淡周末---2023/12/9

上周回顾 完成了遗留的开发任务&#xff0c;基本全部完成进一步了解了系统当时设计的原理熟悉了代码的重构 2023.12.9 天气晴 温度适宜 前言 小伙伴们大家好&#xff0c;时间很快&#xff0c;又来到了周末&#xff0c;也是一个平平淡淡的周末。上周只更了一篇博客...原…

交换机基本原理和配置

目录 一、数据链路层功能 二、交换机的工作原理 三、交换机的四大功能 一、数据链路层功能 位于网络层与物理层之间 数据链路的建立、维护与拆除帧包装、帧传输、帧同步帧的差错恢复流量控制 二、交换机的工作原理 交换机通过数据帧的源 MAC 地址&#xff0c;学习到交换机端…

讲座 | 颠覆传统摄像方式乃至计算机视觉的“脉冲视觉”

传统相机拍摄视频时其实是以一定帧率进行采样&#xff0c;视频其实还是一串图片的集合&#xff0c;因此低帧率时会觉得视频卡&#xff0c;拍摄高速运动物体时会有运动模糊等等问题。然而你能想象这一切都可以被“脉冲视觉”这一前沿技术改变吗&#xff1f; 今天下午听了北京大学…

数据库数据恢复—Mysql数据库误删表数据的数据恢复案例

mysql数据库数据恢复环境&#xff1a; 本地服务器&#xff0c;windows server操作系统 &#xff0c;部署有mysql单实例&#xff0c;数据库引擎类型为innodb&#xff0c;独立表空间&#xff0c;无数据库备份&#xff0c;未开启binlog。 mysql数据库故障&#xff1a; 工作人员使…

前端vue3——实现二次元人物拼图校验

文章目录 ⭐前言⭐vue3拖拽实现拼图&#x1f496; 思路分解&#x1f496; 布局结构&#x1f496; 拖拽函数&#x1f496; 校验函数&#x1f496; inscode整体代码 ⭐运行效果&#x1f496; 随机顺序&#x1f496; 拖拽中&#x1f496; 校验失败&#x1f496; 校验通过 ⭐总结⭐…

2.2 网络多线程(私聊、群发、发送文件、推送新闻、离线留言)

文章目录 一、私聊1.1 分析1.2 客户端1.2.1 MessageClientService 私聊类1.2.2 ClientConnectServerThread 线程类 1.3 服务端1.3.1 ServerConnectClientThread 线程类 1.4功能演示 二、群发消息2.1 分析2.2 客户端2.2.1 MessageClientService类2.2.2 ClientConnectServerThrea…

使用Microsoft Dynamics AX 2012 - 6. 运营规划

运营规划的主要职责是确保项目在需要的时候可用&#xff0c;同时达到高经济效益的目标。运营规划必须解决高供应准备度和低库存这两个相互冲突的优先事项。 运营规划中的业务流程 在Dynamics AX中&#xff0c;长期预测和短期总体规划由运营规划模块&#xff08;“总体规划”&…

面试计算机网络八股文五问五答第一期

面试计算机网络八股文五问五答第一期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1.TCP和UDP的区别 TCP和UDP是两种网络传输协议&#xff0c;它们的主要区别在…

Android audio环形缓冲队列

1、背景 在学习audio的过程中&#xff0c;看到了大神zyuanyun的博客&#xff0c;在博客的结尾&#xff0c;大神留下了这些问题&#xff1a; 但是大神没有出后续的博文来说明audio环形缓冲队列的具体实现&#xff0c;这勾起了我强烈的好奇心。经过一段时间的走读代码&#xff…

Docker Network(网络)——8

目录&#xff1a; Docker 为什么需要网络管理Docker 网络架构简介 CNMLibnetwork驱动常见网络类型 bridge 网络host 网络container 网络none 网络overlay 网络docker 网络管理命令 docker network createdocker network inspectdocker network connectdocker network disconne…

22、文件上传漏洞——文件上传检测与绕过

文章目录 一、文件上传漏洞原理二、客户端检测及绕过&#xff08;JS检测与绕过&#xff09;三、服务端检测3.1 后缀名检测与绕过3.2 MIME类型检测与绕过3.3 文件内容检测与绕过3.4 00截断检测与绕过3.5 条件竞争检测与绕过 一、文件上传漏洞原理 上传文件时&#xff0c;如果服务…

虾皮什么商品好卖

在虾皮&#xff08;Shopee&#xff09;平台上&#xff0c;有许多商品类别都表现出了较好的销售情况。然而&#xff0c;随着时间和地区的变化&#xff0c;热销商品也会有所不同。本文将介绍一些在虾皮平台上表现较好的商品类别&#xff0c;并提供一些建议&#xff0c;帮助您在虾…

SystemUI下拉通知菜单栏定时自动隐藏

前言 在系统应用开发过程中&#xff0c;常常遇到一些特殊的需求&#xff0c;Android原生的应用并无此适配&#xff0c;此时需要对系统应用进行定制化开发。 目前遇到的这样一个需求&#xff1a;下拉通知菜单栏时&#xff0c;定时8秒后自动关闭通知菜单栏。通知菜单栏为Sytstem…

docke网络之bridge、host、none

一、bridge网络 1.创建一个测试容器 [rootlocalhost ~]# docker run -d -it --name busybox_1 busybox /bin/sh -c "while true;do sleep 3600;done" 03b308c847edd23f21ba69afb825d92f7aaeb05b1ff4431dd47ccee439a0361a 2.查看当前机器docker有哪些网络 [rootlocal…

NestJS的微服务实现

1.1 基本概念 微服务基本概念&#xff1a;微服务就是将一个项目拆分成多个服务。举个简单的例子&#xff1a;将网站的登录功能可以拆分出来做成一个服务。 微服务分为提供者和消费者&#xff0c;如上“登录服务”就是一个服务提供者&#xff0c;“网站服务器”就是一个服务消…