天猫订单数据分析

import pandas as pd
df = pd.read_csv('tmall_order_report.csv')
df.head(50)

df.columns

df.describe()

df.info()

df.isnull().sum()#缺失值的查看,订单付款时间为空说明没有付款

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

df.columns

df.columns = df.columns.str.strip()#去列名的空值
df.columns

df.shape

df[df.duplicated()].count()#列重复值查看

#对收货地址做字符串处理
df.收货地址.unique()#返回列的唯一值

df.收货地址=df.收货地址.str.replace('自治区|省|壮族|维吾尔|回族','',regex=True)#regex表示用正则表达式
df.收货地址

data1 = df.总金额.sum()
data1

data2 = df.退款金额.sum()
data2

data3 = df.买家实际支付金额.sum()
data3

data4=data3-data2#总收入
data4

df[df.订单付款时间.isnull()]#未付款订单

df['订单编号'][df.订单付款时间.isnull()].count()

result = {}#创建空字典
result['未付款订单数'] = df['订单编号'][df.订单付款时间.isnull()].count()#存入数据
result['已完成订单数']=  df['订单编号'][df.订单付款时间.notnull()].count()
result

result['总订单数'] = df['订单编号'].count()
result['退款订单数'] = df['订单编号'][df.退款金额>0].count()
result['总订单金额'] = df['总金额'].sum()
result['总退款金额'] = df['退款金额'].sum()
result['总实际收入金额'] = df['买家实际支付金额'].sum()
result

result1 = {}#创建空字典
result1['未付款订单数'] = df['订单编号'][df.订单付款时间.isnull()].count()#存入数据
result1['已完成订单数']=  df['订单编号'][df.订单付款时间.notnull()].count()
result1['总订单数'] = df['订单编号'].count()
result1['退款订单数'] = df['订单编号'][df.退款金额>0].count()
result1['总订单金额'] = df['总金额'].sum()
result1['总退款金额'] = df['退款金额'].sum()
result1['总实际收入金额'] = df['买家实际支付金额'][df.订单付款时间.notnull()].sum()
result1

import numpy as np
table = pd.DataFrame(result1,index = np.arange(1))#把7个变量放入二维表中
table

#统计地区订单量,以柱状图显示
import matplotlib.pyplot as plt

result2 = df[df.订单付款时间.notnull()].groupby('收货地址')['订单编号'].size()
#to_dict()直接把Series和DataFrame转成字典,tolist()转换成列表
result21 = result2.to_dict()
#esult21.keys()
result22 = sorted(result21.items(),key = lambda item:item[1]) #排序之后是列表

result23 = {}
for i in range(len(result22)):
    result23[result22[i][0]] = result22[i][1]
result23#排序之后字典

result24 = []
for j in result23.keys():
    result24.append(j)
#result22  #把地址转换为列表形式
[list(x) for x in result22]


#plt.rcParams['font.family'] = ['SimHei']#设置中文正常显示
#plt.rcParams['axes.unicode_minus'] = False#设置符号正常显示

#fig = plt.figure(figsize=(12,10)) #设置画布大小
#plt.barh(range(1,len(result23)+1),result23.values(),tick_label = list)
#plt.show()

#分析订单走势
df.info()

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

result3 = df.groupby(df['订单创建时间'].apply(lambda x:x.strftime("%Y-%m-%d")))['订单编号'].size()
result31 = result3.to_dict()
fig = plt.figure(figsize=(30,10)) #设置画布大小
plt.plot(result31.keys(),result31.values())
plt.show

从图上来看,2月份上半月由于受新冠疫情影响,订单量较少,随着复工开展,下半月订单量增长明显。

from pyecharts import options as opts #配置
from pyecharts.charts import Map,Pie,Bar
#from pyecharts.globals import CurrentConfig, NotebookType
#CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
#Jupyter Notebook 直接调用render_notebook随时随地渲染图表,默认为Jupter-Notebook

#result12 列表包含元组
mapDD=(
    Map()
    .add("订单量",[list(x) for x in result22],"china")
    .set_global_opts(title_opts=opts.TitleOpts(title="地区订单分布"),
                    visualmap_opts=opts.VisualMapOpts(max_=2000)) #最大值不用比数据中最大值大
)
#mapDD.render_notebook()
mapDD.render('html\\mapDD.html')

result4=df.groupby(df['订单创建时间'].apply(lambda x:x.strftime('%H')))['订单编号'].size().to_dict()
list(result4.keys()) #list() 方法
[*result4.keys()]# *解包

from pyecharts import options as opts 
from pyecharts.charts import Map,Bar
barDD=(
    Bar()
    .add_xaxis(list(result4.keys()))
    .add_yaxis("订单量",list(result4.values()))
    .set_global_opts(title_opts=opts.TitleOpts(title="每小时订单走势"))
)
barDD.render_notebook()

从每小时订单量走势来看,一天中有三个高峰期(10点、15点、21点),其中21点-22点之间是一天中订单量最多的时候,这个结果和之前一亿条淘宝用户行为数据分析结果一致,对于卖家的指导意义是,为了提高订单量,高峰期时应该尽量保证客服的回复速度,尤其是晚上21点-22点之间,所以很多做电商的基本douy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值