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

news2024/11/15 21:58:33

前言

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章

什么是数据分析

明确目的–获得数据(爬虫,现有,公开的数据)–数据预处理——数据可视化——结论

准备

环境使用:

在开始写我们的代码之前,我们要准备好运行代码的程序

  • Anaconda (python3.9)

    –> 识别我们写的代码

开发工具:

  • jupyter notebook

    –> 代码编辑功能敲代码的工具

不会安装的可以文末名片+我获取哦 😎

数据准备:

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

7个字段说明

订单编号:订单编号

总金额:订单总金额

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

收货地址:各个省份

订单创建时间:下单时间

订单付款时间:付款时间

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

分析目的

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

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

订单数在地图上的分布

订单读取及处理

读取数据

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

处理数据


缺失值

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

订单转化率-漏斗图

计算每个环节的数据

  • 将得到如下的数据:

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

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

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

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

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

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

订单总笔数

付过款的订单数

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)

# 漏斗图 Funnel
from pyecharts.charts import Funnel
from pyecharts import options as opts
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
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()
# 重采样,时间序列的内容

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


结论:

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

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

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

销量区域分布-地理图

se_trans_map = df_trans.groupby('收货地址')['订单编号'].count()
se_trans_map
import pyecharts.options as opts
from pyecharts.charts import Map
# 展示地理分布图
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.coloradmin.cn/o/506467.html

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

相关文章

Java Stream API的基本使用方法

前言 Java各个版本所更新的主要内容&#xff1a; 1.Java SE 8&#xff1a;引入了一些新特性&#xff0c;如lambda表达式、Stream API、格式化日期、国际化等。此外&#xff0c;还对并发编程进行了改进&#xff0c;引入了线程安全的Stream API。 2.Java SE 9&#xff1a;新增了…

李沐论文精度系列之十:GPT-4

文章目录 一、AIGC资讯速览1.1 Toolformer&#xff08;2023.2.9&#xff09;1.2 ChatGPT plugin1.3 LLaMA&#xff08;2023.2.24&#xff09;1.4 Visual ChatGPT&#xff08;2023.3.8&#xff09;1.5 GigaGAN&#xff08;2023.3.9&#xff09;1.6 Stanford Alpaca&#xff08;2…

面试官:详细说一下Java语言层面3种IO模型的实现

在Java中&#xff0c;一共有三种IO模型&#xff0c;分别是阻塞IO(BIO)、非阻塞IO(NIO)和异步IO(AIO)。 Linux五种IO模型和Java三种IO模型 Java BIO Java BIO就是Java的传统IO模型&#xff0c;对应了操作系统IO模型里的阻塞IO。 Java BIO相关的实现都位于java.io包下&#xf…

ECMA 各版本特性汇总

&#xff08;走运时,要想到倒霉&#xff0c;不要得意得过了头&#xff1b;倒霉时,要想到走运&#xff0c;不必垂头丧气。心态始终保持平衡&#xff0c;情绪始终保持稳定&#xff0c;此亦长寿之道。。——季羡林&#xff09; ECMA ecma官方网站 ecma github版本记录 w3schools …

由浅入深,聊聊OkHttp的那些事(易懂,不繁琐)

作者&#xff1a;Petterp 引言 在 Android 开发的世界中&#xff0c;有一些组件&#xff0c;无论应用层技术再怎么迭代&#xff0c;作为基础支持&#xff0c;它们依然在那里。 比如当我们提到网络库时&#xff0c;总会下意识想到一个名字&#xff0c;即 OkHttp 。 尽管对于大…

LVS和nginx和keepalived四层和7层的一些测试,nginx和keepalived共用环境的部署,lvs,nginx客户端IP透传

LVS和nginx的测试 实验DR模式 服务器IP备注mysql192.168.137.178测试服务器lvs**vip ** 192.168.137.99 RIP 192.168.137.100lvs服务器nginx1RIP 192.168.137.101nginx2RIP 192.168.137.102 LVS四层代理 test----lvs vip—nginx1/ngin2 LVS服务器的配置 [rootlvs openres…

Databend 开源周报第 92 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 在 WHERE 子句中…

算法记录 | Day56 动态规划

583.两个字符串的删除操作 思路&#xff1a; 1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义&#xff1a;dp[i][j]&#xff1a;以i-1为结尾的字符串word1&#xff0c;和以j-1位结尾的字符串word2&#xff0c;想要达到相等&#xff0c;所需要删除元素的最少次数…

别去外包,干了3年,彻底废了......

先说一下自己的情况。大专生&#xff0c;19年通过校招进入湖南某软件公司&#xff0c;干了接近3年的测试&#xff0c;今年年上旬&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落&#xff01;而我已经在一个企业干了三年&#xff0c…

存储迁移到vSAN后将oracle rac的共享虚拟磁盘由“精简置备”转换为“厚置备快速置零”格式

在vSAN 6.5.0环境中&#xff0c;将Oracle RAC虚拟机的存储迁移到vSAN数据存储后&#xff0c;共享磁盘在迁移后全部变成了“精简置备”类型&#xff0c;如下所示&#xff1a; 注&#xff1a;从vSAN 6.7 Patch 01开始&#xff0c;vSAN上的Oracle RAC 不再要求共享的 VMDKs为厚置…

【论文阅读】COPA:验证针对中毒攻击的离线强化学习的稳健策略

COPA: Certifying Robust Policies for Offline Reinforcement Learning against Poisoning Attacks 作者&#xff1a;Fan Wu, Linyi Li, Chejian Xu 发表会议&#xff1a;2022ICRL 摘要 目前强化学习完成任务的水平已经和人类相接近&#xff0c;因此研究人员的目光开始转向…

Springboot Security 认证鉴权——使用JSON格式参数登录

在 Spring Security 中&#xff0c;默认的登陆方式是以表单形式进行提交参数的。可以参考前面的几篇文章&#xff0c;但是在前后端分离的项目&#xff0c;前后端都是以 JSON 形式交互的。一般不会使用表单形式提交参数。所以&#xff0c;在 Spring Security 中如果要使用 JSON …

Ansys Lumerical | 单行载流子光电探测器仿真方法

综述 在本例中&#xff0c;我们将研究混合硅基光电探测器的各项性能。单行载流子&#xff08;uni-traveling carrier&#xff0c;UTC&#xff09;光电探测器&#xff08;PD&#xff09;由InP/InGaAs制成&#xff0c;其通过渐变耦合的方式与硅波导相连。在本次仿真中&#xff0c…

04-Docker镜像

镜像 镜像是一种轻量级、可执行的独立软件包&#xff0c;它包含运行某个软件所需的所有内容&#xff0c;我们把应用程序和配置依赖打包好形成一个可交付的运行环境&#xff08;包括代码、运行时需要的库、环境变量和配置文件等&#xff09;&#xff0c;这个打包好的运行环境就是…

上海亚商投顾:沪指午后跳水跌超1% 两市超4000只个股下跌

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪 沪指今日冲高回落&#xff0c;盘中一度站上3400点关口&#xff0c;午后跳水跌超1%&#xff0c;深成指、创业板指同…

本科生学数据分析转行,能学会吗?

当然可以&#xff0c;大专及以上都可以学习数据分析转行&#xff0c;本科学历学习更有优势。数据分析职业对于学历方面还是比较看重的&#xff0c;同样技能情况下&#xff0c;学历越高&#xff0c;入行薪资起点也会高个至少一两千&#xff1b;入行以后的升职加薪就看个人的能力…

vue3学习七 toRef 和 toRefs

toRef 和 ref 的作用差不多是一样的&#xff0c;都是可以把一个数据变成响应式的 我们一般使用toRef 或都 toRefs 是用来&#xff0c;简化 template 中的 数据的写法的&#xff0c; 使一个深层次的数据不用书写的时候那么麻烦。 如果不嫌麻烦的话&#xff0c; 这两个api 可以不…

尚硅谷-宋红康-JVM上中下篇完整笔记-JVM中篇

一.Class文件结构 1.概述 1.1 字节码文件的跨平台性 所有的JVM全部遵守Java虚拟机规范:Java SE Specifications&#xff0c;也就是说所有的JV环境都是一样的&#xff0c;这样一来字节码文件可以在各种JVM上运行。 1.2 Java的前端编译器 想要让一个Java程序正确地运行在JVM中&am…

安装Nacos

什么是Nacos 官网中如此说道&#xff1a; Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集&#xff0c;帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以…

CSS选择器的常见用法

文章目录 CSS是什么CSS的引入方式内部样式表行内样式表外部样式 选择器基础选择器类选择器id选择器通配符选择器 复合选择器后代选择器 CSS是什么 CSS就是&#xff08;Cascading Style Sheets&#xff09;就是层叠样式表&#xff0c;CSS 能够对网页中元素位置的排版进行像素级…