共计 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()
正文完