import pandas as pd
import matplotlib.pyplot as plt
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()
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()
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()
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
# 买家地区饼图
# address_chart(df)
# 支付金额时间分布
# time_chart(df)
# 销售额走势
money_chart(df)
print('订单数量:', order_num)
print('退货订单数量:', refund_num)
print('退货率:{}%'.format(refund_rate))
print('交易总金额:', amount_sum)
print('成交总金额:', paid_sum)
print('退款总金额:', refund_sum)
print('实际成交额:', paymey)
if __name__ == '__main__':
csv_path = r'./data/tmall_order_report.csv'
taobao_analysis(csv_path)
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论






















收起资源包目录





共 2 条
- 1
资源评论


九瓜
- 粉丝: 55
- 资源: 9
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制
