Python 电商平台购物数据分析,整体销售情况分析(折线图、饼图分析) 源码下载

开发环境:

开发环境: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/1fBMX27gkvkQ4Lowu35ymQA
提取码:j43u

阿里云网盘下载:

「淘宝交易数据分析代码」,点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载,极速在线查看享用。
链接:https://www.aliyundrive.com/s/rLmKsGffw8N

Guess you like

Origin blog.csdn.net/weixin_43796109/article/details/121437299