TianMao订单数据分析

import pandas as pd
df = pd.read_csv('D:/data/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()



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()

from pyecharts import options as opts #全局配置项
from pyecharts.charts import Map #导入地图
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('html\\mapDD.html')



#分析订单走势
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月份上半月受新冠疫情的影响,订单量比较少,随着复工开幕,下半月订单量增长明显

df.info()


#9
result4=df.groupby(df['订单创建时间'].apply(lambda x:x.strftime("%H")))['订单编号'].size().to_dict()
#list(result4.keys())
[*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()
barDD.render('html\\barDD.html')

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

要计算每天的成交订单数和退款订单数,你需要使用 Pandas 进行数据分析和处理。以下是一个简单的示例代码,假设你有一个包含订单数据的 Pandas DataFrame,其中包含订单日期、订单状态(已成交、退款等)等信息。 ``` import pandas as pd # 读取订单数据 df = pd.read_csv('orders.csv') # 将日期列转换为日期时间类型 df['order_date'] = pd.to_datetime(df['order_date']) # 按照订单状态和日期进行分组,并计算每组的订单数量 grouped = df.groupby(['order_status', 'order_date'])['order_id'].count() # 获取已成交和退款的订单数量 completed = grouped.loc['completed'] refunded = grouped.loc['refunded'] # 计算每天的成交订单数和退款订单数 completed_per_day = completed.resample('D').sum() refunded_per_day = refunded.resample('D').sum() ``` 在上面的代码中,我们首先读取订单数据,将日期列转换为 Pandas 的日期时间类型。然后,我们按照订单状态和日期进行分组,并使用 count() 函数计算每组的订单数量。接着,我们使用 loc 函数获取已成交和退款的订单数量,并使用 resample 函数按照天进行重采样,计算每天的成交订单数和退款订单数。最终,我们得到了两个包含每天成交订单数和退款订单数的 Pandas Series。 请注意,这只是一个简单的示例代码,实际情况可能更为复杂,例如需要考虑订单状态的分类、订单数量的统计方法等。在实际应用中,你需要根据具体情况进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值