开发环境:Python3
工具:pandas、matplotlib.pyplot
数据来源:
数据地址:数据集
数据描述:本数据集共收集了发生在一个月内的28010条数据,
包含以下:
[‘订单编号’, ‘总金额’, ‘买家实际支付金额’, ‘收货地址’, ‘订单创建时间’, '订单付款时间 ', ‘退款金额’] 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/1fBMX27gkvkQ4Lowu35ymQA
提取码:j43u
阿里云网盘下载:
「淘宝交易数据分析代码」,点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载,极速在线查看享用。
链接:https://www.aliyundrive.com/s/rLmKsGffw8N
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)