开发环境:
开发环境:Python3
工具:pandas、matplotlib.pyplot
数据来源:
数据地址:数据集
数据描述:本数据集共收集了发生在一个月内的28010条数据,
包含以下:
[‘订单编号’, ‘总金额’, ‘买家实际支付金额’, ‘收货地址’, ‘订单创建时间’, '订单付款时间 ', ‘退款金额’] 7个字段。
7个字段说明:
订单编号:订单编号
总金额:订单总金额
买家实际支付金额:总金额 - 退款金额(在已付款的情况下)。金额为0(在未付款的情况下)
收货地址:各个省份
订单创建时间:下单时间
订单付款时间:付款时间
退款金额:付款后申请退款的金额。如无付过款,退款金额为0
数据截图
分析目标:
1、整体销售情况
- 订单交易数量
- 退货订单数量
- 退货率
- 交易总金额
- 成交总金额
- 退款总金额
- 实际成交额
2、买家地区分布(饼图)
3、支付金额时间分布(折线图)
4、销售额走势图(折线图)
代码及结果:
1、整体销售情况
def taobao_analysis(csv_path):
df = pd.DataFrame(pd.read_csv(csv_path))
# id 总金额 实际支付金额 地址 订单创建时间 付款时间 退款金额
df.columns = ['id', 'amount', 'paid', 'address', 'ordertime', 'paytime', 'refund']
df.paytime = pd.to_datetime(df.paytime)
df.ordertime = pd.to_datetime(df.ordertime)
# 订单交易数量
order_num = df.id.count()
# 退货订单数量
refund_num = df[df['refund'] > 0].refund.count()
# 退货率
refund_rate = round(refund_num / order_num * 100, 3)
# 交易总金额
amount_sum = df.amount.sum()
# 成交总金额
paid_sum = df.paid.sum()
# 退款总金额
refund_sum = df.refund.sum()
# 实际成交额
paymey = paid_sum - refund_sum
print('订单数量:', order_num)
print('退货订单数量:', refund_num)
print('退货率:{}%'.format(refund_rate))
print('交易总金额:', amount_sum)
print('成交总金额:', paid_sum)
print('退款总金额:', refund_sum)
print('实际成交额:', paymey)
结果截图:
2、买家地区分布(饼图)
def address_chart(df):
add = df.groupby('address')['id'].count().sort_values(ascending=False)
plt.rcParams['font.sans-serif'] = ['SimHei']
add.plot.pie(figsize=(12,6),labels=add.index, autopct='%1.1f')
plt.title('买家地区分布')
plt.show()
结果截图
3、支付金额时间分布(折线图)
def time_chart(df):
df1 = df.copy()
df1['paytime'] = df1['paytime'].dt.time
df1['paytime'] = pd.to_datetime(df.paytime)
plt.figure(figsize=(20,8), dpi=80)
s = df1['paytime'].dt.floor('30T')
df1['paytime'] = s.dt.strftime('%H:%M') + '-' + (s+pd.Timedelta(29*60,unit='s')).dt.strftime("%H:%M")
timedf1 = df1.groupby('paytime')['id'].count()
timedf1.drop(index='NaT-NaT', inplace=True)
timedf_x = timedf1.index
timedf_y = timedf1.values
plt.xticks(rotation=60)
plt.plot(timedf_x, timedf_y)
plt.show()
结果截图
4、销售额走势图(折线图)
def money_chart(df):
df['day'] = df['ordertime'].dt.day
xx = df.groupby('day')['amount'].sum().index
yy_1 = df.groupby('day')['amount'].sum().values/10000
yy_2 = df.groupby('day')['paid'].sum().values/10000
yy_3 = df.groupby('day')['refund'].sum().values/10000
plt.plot(xx,yy_1,label='Order Amount',color='red',marker='+')
plt.plot(xx,yy_2,label='Payment Amount',color='green',marker='o')
plt.plot(xx,yy_3,label='Refund Amount',color='blue',marker='.')
plt.xlabel('day')
plt.ylabel('money(10000yuan)')
plt.show()
结果截图
源码及数据下载:
CSDN下载:下载地址
百度网盘下载:
通过百度网盘分享的文件:淘宝交易数据分析…
链接:https://pan.baidu.com/s/1j6ZCH2gIrSDGXJlksaNRlw?pwd=7562
提取码:7562
复制这段内容打开「百度网盘APP 即可获取」
阿里云网盘下载:
「淘宝交易数据分析代码」,点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载,极速在线查看享用。
链接:https://www.aliyundrive.com/s/rLmKsGffw8N
CSDN下载:下载地址