天猫订单数据可视化分析

在当前的电子商务环境中,淘宝作为中国最大的在线购物平台之一,对于各类商品的销售情况具有重要的参考价值。本文主要利用天猫某一月的订单数据做数据可视化分析。

本文数据可在公众号后台回复:“天猫订单数据”  获取。

一、数据预处理

先导入库

import pandas as pd
import matplotlib.pyplot as plt
from pyecharts import options as opts
from pyecharts.charts import Map, Timeline, Bar, Line, Pie

读取数据 

df = pd.read_csv(r"D:\浏览器下载\tmall_order_report.csv")
df.head()

查看数据基本信息 

# 查看数据基本信息
df.info()

# 查看数据集列标签
df.columns

收货地址那儿有一个空白符,把它去掉 

# 去除列标签中的空白符
df.columns = df.columns.str.strip()
df.columns

#查看是否有重复值
df.duplicated().sum()

查看缺失值 

#查看数据缺失情况
df.isnull().sum()

许多顾客都是点击购买后没有付款,导致有许多的订单付款时间是空值。 

接下来统计该月各省订单量

#各省订单量
df.收货地址.value_counts()

通过对各省订单量的统计,我们发现经济发达地区的订单量更多,欠发达地区订单零较少。

接下来对省份名称进行规范化处理,你也可以根据自己的需求进行处理。 

# 规范省份名称
def rename(p):
    if p in ['北京', '上海', '天津', '重庆']:
        return p+"市"
    return p
df.收货地址 = df.收货地址.map(rename)
df.收货地址.value_counts()

去除订单付款时间中的空值

#过滤掉(删掉)没有付款的订单数据
df[df.订单付款时间.notnull()]

去除订单付款时间的空值之后,各省的下单量。换言之也就是统计各省实际下单量 

#统计各省订单数量
res = df[df.订单付款时间.notnull()]
res = res.收货地址.value_counts()
data = res.to_dict()
data

二、数据可视化

导入图形在jupyter中显示的必要依赖,我的pyecharts版本号为2.0.6,如果你加上我的这句话后图像还是不显示,尽量去pyecharts官网进行查看最新版本的依赖。

 from pyecharts.globals import CurrentConfig, NotebookType # 使图表在jupyter显示
 CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
c = (
    Map(init_opts=opts.InitOpts(width="1000px", height="600px"))
    .add('各省份订单量', 
        [list(i) for i in zip(data.keys(), data.values())], 
         'china',
         is_map_symbol_show=False
    )
    .set_series_opts(label_opts=opts.LabelOpts(is_show=True))
    .set_global_opts(
        title_opts=opts.TitleOpts(title='各省份天猫订单数量'),
        visualmap_opts=opts.VisualMapOpts(
            max_=3100,
            is_piecewise=True,  #定义图例为分段型,默认为连续的图例
            pos_top= "middle",  #分段位置
            pos_left="left",
            orient="vertical",
            split_number=10
        )
    )
)
c.load_javascript()

这个图是可以放大的,但是在这里因为截图的原因,就比较难看 

c.render_notebook()

对每天的订单量进行统计分析 

df['订单创建时间'] = pd.to_datetime(df.订单创建时间)
df['订单付款时间'] = pd.to_datetime(df.订单付款时间)
df.head()

# 格式化日期格式
order_time = df.订单创建时间.map(lambda x: x.strftime('%Y-%m-%d'))
df['order_add_time' ] = order_time 
# 统计每天下单数量
cnt = pd.pivot_table(df, index='order_add_time', values='订单编号', aggfunc='count')
result = cnt.to_dict()['订单编号']
cnt
c = (
    Line()
    .add_xaxis(list(result.keys()))
    .add_yaxis(
        '订单量',
        list(result.values())
    )
    .set_series_opts(
        label_opts=opts.LabelOpts(is_show=False),
        markpoint_opts=opts.MarkPointOpts(
            data=[
                opts.MarkPointItem(type_='max')
            ]
        )
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title='每天订单量')
    )
)
c.render_notebook()

通过上图可以看出,到月底之后,订单量明显比月初时订单量多得多。 

统计每小时的订单

order_add_time2 = df.订单创建时间.map(lambda x: x.strftime('%H'))
# 统计每小时下单数量
cnt = df.groupby(order_add_time2).agg({"订单编号": "count"}).to_dict()["订单编号"]
# 可视化结果
c = (
    Bar()
    .add_xaxis( list(cnt.keys()) )
    .add_yaxis('订单量', list(cnt.values()))
    
    .set_series_opts(
        label_opts=opts.LabelOpts(is_show=False),
        markpoint_opts=opts.MarkPointOpts(
            data=[
                opts.MarkPointItem(type_='max')
            ]
        )
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title='每小时订单量')
    )
)
c.render_notebook()

上图可以看出,晚上九点是购物下单最多的时间段。

接下里对订单转换率进行可视化分析

# 计算各阶段订单量
create_order = df.订单编号.count()
print('下单数量为:',create_order)
buy_order = df[~df.订单付款时间.isnull()].订单编号.count()
print('支付订单数量为:',buy_order)
finish_order = df[df.买家实际支付金额 > 0].订单编号.count()
print('成交订单数量为:',finish_order)
whole_finish_order = df[df.总金额 == df.买家实际支付金额].订单编号.count()
print('全额成交订单量为:',whole_finish_order)
# 计算各阶段转化率
transform = [['创建订单',(round(create_order / df.shape[0],2))*100%],
             ['支付订单',(round(buy_order / df.shape[0],2))*100],
             ['成交订单',(round(finish_order / df.shape[0],2))*100],
             ['全额成交订单',(round(whole_finish_order / df.shape[0],2))*100]]
transform
import pyecharts.options as opts
from pyecharts.charts import Funnel

(
    Funnel()
    .add(
        series_name="",
        data_pair=transform,
        gap=4,
        tooltip_opts=opts.TooltipOpts(trigger="item", formatter='{b}%:{c}%'),
        label_opts=opts.LabelOpts(is_show=True, position="inside", formatter='{b}%:{c}%'),
        itemstyle_opts=opts.ItemStyleOpts(border_color="#fff", border_width=1),
        
    )
    .set_global_opts(title_opts=opts.TitleOpts(title="订单转换率漏斗图"))
    .render_notebook()
)

学习永无止境,今天的分享就到这里啦,如果有用的话就点个赞吧。当然本文也只是对部分数据做了可视化分析,还有一部分没有做,读者可以根据自己的需求自行完善。

喜欢的话就点个赞吧

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吴闹闹888

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值