JupyterLab+pyecharts天猫订单数据可视化项目

30次阅读
没有评论

共计 2036 个字符,预计需要花费 6 分钟才能阅读完成。

读取数据

import pandas as pd

data = pd.read_csv(" 天猫订单.csv")
data.head()
data.shape

数据处理

data.info()  # 订单付款时间 24087 non-null
data.columns
data.columns = data.columns.str.strip()  # 去除列名中首尾空格 

重复值查看:data.duplicated().sum(),重复数据:109

缺失值查看:data.isnull().sum(),缺失数据:订单付款时间 3923

数据可视化

各省订单量

def province_map(p):
    if p in [" 北京 ", " 天津 ", " 上海 ", " 重庆 "]:
        return p + " 市 "
    return p

data. 收货地址 = data. 收货地址.map(province_map)

# 统计各省订单量,去除没有付款的订单数据
result = data[data. 订单付款时间.notnull()]

# 统计各省订单量
result2 = result.groupby(" 收货地址 ")[[" 订单编号 "]].count().to_dict()[" 订单编号 "]

from pyecharts import options as opts
from pyecharts.charts import Bar, Line, Map, Pie, Timeline
from pyecharts.globals import CurrentConfig, NotebookType

# 不同 notebook 坏境有不同渲染要求,pyecharts 在底层做了适配处理
# 但因为无法在 import pyecharts 时知道具体使用哪种 noteboook 坏境,所以需要在使用时声明坏境类型
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB

c = (Map()
    .add(" 各省订单量 ", [*result2.items()], "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_=2000),
    )
)
# c.load_javascript()  # 第一次渲染,要调用 load_javascript 方法
c.render_notebook()

时间序列分析

# 转成时间类型
data. 订单创建时间 = pd.to_datetime(data. 订单创建时间)
data. 订单付款时间 = pd.to_datetime(data. 订单付款时间)

每天订单量

order_add_time = data. 订单创建时间.map(lambda x: x.strftime("%Y-%m-%d"))

result3 = data.groupby(order_add_time).agg({" 订单编号 ": "count"}).to_dict()[" 订单编号 "]
result3

c = (Line()
    .add_xaxis(list(result3.keys()))
    .add_yaxis(" 订单量 ", list(result3.values()))
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False),
        markpoint_opts=opts.MarkAreaOpts(data=[opts.MarkPointItem(type_="max")]),
    )
    .set_global_opts(title_opts=opts.TitleOpts(title=" 每天订单量 "))
)
c.render_notebook()

每小时订单量

order_add_time2 = data. 订单创建时间.map(lambda x: x.strftime("%H"))

result4 = data.groupby(order_add_time2).agg({" 订单编号 ": "count"}).to_dict()[" 订单编号 "]
result4

c = (Bar()
    .add_xaxis(list(result4.keys()))
    .add_yaxis(" 订单量 ", list(result4.values()))
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False),
        markpoint_opts=opts.MarkAreaOpts(data=[opts.MarkPointItem(type_="max")]),
    )
    .set_global_opts(title_opts=opts.TitleOpts(title=" 每小时订单量 "))
)
c.render_notebook()

正文完
post-qrcode
 0
三毛
版权声明:本站原创文章,由 三毛 于2024-01-22发表,共计2036字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)