美文网首页
电商数据分析

电商数据分析

作者: 道末端 | 来源:发表于2020-03-20 00:08 被阅读0次

    本地分析选用19年销售额近10亿的某化妆品旗下某一品牌的电商数据,时间跨度为2019年9月-2019年12月

    分析目标:

    1.查看该电商的运营情况
    2.客户分类,探索不同客户群的营销策略

    分析思路:

    一是探索电商情况,主要探索其订单数和销售额的增长情况、用户每月消费情况,以及各区域销售额对比情况;
    二是构建RFM模型,对客户群进行分类,探索不同客户群的营销策略

    评估并清洗数据

    导入所需要的python包

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt # 加载数据可视化包
    from mpl_toolkits.mplot3d.axes3d import Axes3D# 显示3D散点图导入的库
    import os
    
    #显示所有列
    pd.set_option('display.max_columns', None)
    
    # 可视化显示在页面
    # %matplotlib具体作用是当你调用matplotlib.pyplot的绘图函数plot()进行绘图的时候,或者生成一个figure画布的时候,
    # 可以直接在你的python console里面生成图像。
    %matplotlib inline
    # 更改设计风格
    plt.style.use('ggplot')
    
    # 设置中文编码和负号的正常显示
    plt.rcParams['font.sans-serif']=['SimHei']
    plt.rcParams['axes.unicode_minus']=False
    

    读取所需数据集

    order_Path = os.getcwd()+'\\'+'tm_order'
    order_Products = os.getcwd()+'\\'+'tm_products'
    
    def func(path):
        print('path = ', path)
        
        #将该文件夹下的所有文件名存入一个列表
        file_list = os.listdir(path)
        print('file_list = ',file_list)
        
        #创建一个空列表,存储当前目录下的CSV文件全称
        file_name = []
        
        for i in file_list:
            #判断是否为CSV文件,如果是则存储到列表中
            if os.path.splitext(i)[1] == '.csv':
                file_name.append(i)
        print('file_name = ',file_name)
        all_df = []
        #循环遍历列表中各个CSV文件名
        for i in range(0,len(file_name)):
            df = pd.read_csv(path + '\\' +file_name[i], encoding = 'gb18030',low_memory=False) 
            all_df.append(df)
        columns = all_df[0].columns
        # 将其中一个的列名作为合并后的列名 不然会出现乱序
        data = pd.concat(all_df, sort=True, ignore_index = True,join_axes=[columns])
        return data
    
    data_Order = func(order_Path)
    data_Products = func(order_Products)
    

    数据说明
    因为原数据集比较复杂,订单数据和产品数据都通过相应的键值连接,本文着重分析产品销售情况和客户分类,对数据进行了一定的取舍,数据清洗过程略过
    进过数据清理之后,汇总成3个数据集:

    • orders订单数据集
    • products产品条目数据集

    数据可视化:

    1.店铺销售分析(按月):
    • 每月订单数
    • 每月销售总额
    • 每月客单价
    • 每月消费人数

    每月订单数

    month_orders = orders.groupby('month')['订单号'].nunique()
    store_plot(data=month_orders ,
               xlab='月份',
               ylab='订单数',
               title='每月订单数')
    
    每月订单数.jpg

    可以看到:订单数在11月份-12月份期间增长了30%,有可能是因为双11活动前后大量促销导致

    每月销售总额

    month_sales = orders.groupby('month')['订单实付金额'].sum()
    store_plot(data=month_sales,
               xlab='月份',
               ylab='销售金额',
               title='每月销售总额')   
    
    商店消费情况绘图函数.jpg
    有趣的是,订单数和销售总额在10月初的出现了不一样的走向,订单数下降而销售额上升,原因要看下客单价
    每月客单价
    ATV = orders.groupby('month')['订单实付金额'].sum()/ orders.drop_duplicates(subset=['收货人/提货人']).groupby('month')['收货人/提货人'].count()
    store_plot(data=ATV ,
               xlab='月份',
               ylab='客单价',
               title='每月客单价')
    plt.savefig('每月客单价.jpg')
    
    每月客单价.jpg
    从每月客单价看出,10月份订单数下降而销售额上升是因为客单价提升了,猜测是国庆大促时促销活动进行了比较大幅度的降价(经询问业务后证实了这个猜测)
    每月消费人数
    month_person = orders.drop_duplicates(subset=['收货人/提货人'])
    store_plot(data=month_person.groupby('month')['收货人/提货人'].count(),
               xlab='月份',
               ylab='订单数',
               title='每月消费人数')
    
    每月消费人数.jpg

    从月消费人数来看,国庆大促的促销活动带来了大量用户消费,效果明显。而双11活动的带来用户消费并不多

    2.用户个体消费分析

    • 用户消费金额、消费次数的描述统计
    • 用户累计消费金额占比(百分之多少的用户占了百分之多少的消费额)
      消费金额描述统计
    orders.groupby('收货人/提货人').sum().describe()
    
    消费金额描述统计.png

    用户平均消费68元,中位数为9.9,超过一半的用户仅消费9.9元,方差为302,存在高消费用户(询问业务后发现部分高消费用户为经销商)

    用户累计消费金额占比

    plt.figure(figsize=(12,8))
    plt.plot(orders.groupby('收货人/提货人').sum().sort_values('订单实付金额').apply(lambda x:x.cumsum()/x.sum()).reset_index()['订单实付金额'])
    plt.xlabel('消费金额')
    plt.ylabel('消费占比')
    plt.title('用户累计消费金额占比')
    
    用户累计消费金额占比.jpg

    40%的用户占据了60%的销售额,另外60%占据了40%的销售额,消费集中在一些高消费用户上

    3.用户消费行为分析:

    • 用户分层:
      • RFM
      • 新、老、活跃、回流、流失
    ## RFM分层
    
    # 定义数据框rfm_model
    rfm_model = pd.DataFrame()
    # 筛选最近购买时间 recency
    rfm_model['recency'] = (orders.groupby('收货人/提货人')['订单创建时间'].max()-pd.to_datetime('2019-09-01'))/np.timedelta64(1,'D')
    # # 统计消费次数 frequency
    rfm_model['frequency'] = orders.groupby('收货人/提货人')['订单创建时间'].count()
    # # 计算购买额 money
    rfm_model['money'] = orders.groupby('收货人/提货人').sum().query('订单实付金额 < 10000')['订单实付金额']
    # 重置索引
    rfm_model = rfm_model.reset_index(drop = False)
    
    # 3d呈现数据的三个特征情况
    fig = plt.figure(figsize=(12,8))
    ax = fig.add_subplot(111, projection='3d')
    ax.set_xlabel('Recency')
    
    ax.set_ylabel('Frequency')
    ax.set_zlabel('Monetary')
    ax.scatter(rfm_model['recency'],rfm_model['frequency'],rfm_model['money'],s=30);
    
    不同分层消费者消费总额.jpg

    一般价值客户贡献的金额并不高,所以没必要在这一块花费太多心思和精力,应该着重将运营的中心放在重要保持客户上,如何留住核心收入来源的"重要价值客户"以及通过各种运营方法保持"重要保持客户"和召回"重要挽留客户"是下一阶段的任务

    新、老、活跃、回流、流失

    fig = plt.figure(figsize=(10,5)) # 表示figure 的大小为宽、长(单位为inch)
    ax = fig.add_subplot(111)
    ax.set_xticklabels(indexs)
    players = ['active','new','return','unactive']
    plt.stackplot(indexs,purchase_stats_ct.fillna(0),labels=players)
    plt.title('新老活跃客户')
    plt.legend()
    
    新老活跃客户.jpg

    用户流失相当多,活跃用户相对稳定

    4.区域购买力

    city_top = data_Order[['订单实付金额','收货人城市']].groupby('收货人城市').sum().sort_values('订单实付金额',ascending=False)
    city_top10 = city_top.head(20)
    fig = plt.figure(figsize=(10,5)) # 表示figure 的大小为宽、长(单位为inch)[图片上传中...(城市购买力.jpg-8af9f-1584651760463-0)]
    
    city_bar = plt.bar(city_top10.index,height=city_top10['订单实付金额'].astype('int64'))
    plt.xlabel('城市')
    plt.ylabel('消费金额')
    plt.title('城市购买力')
    
    # 添加数据标签 就是矩形上面的数值
    def add_labels(rects):
        for rect in rects:
            height = rect.get_height()
            plt.text(rect.get_x() + rect.get_width()/2, height, height, ha='center', va='bottom')
            rect.set_edgecolor('white')
    
    add_labels(city_bar)
    
    城市购买力.jpg

    该品牌主要是北上广深等一线和准一线城市较受欢迎,说明与经济发展情况有较大关系

    5.最受欢迎产品

    fig = plt.figure(figsize=(10,5)) # 表示figure 的大小为宽、长(单位为inch)
    ax = fig.add_subplot(111)
    buy_top10.plot(kind="bar",color='#228B22',)
    plt.xlabel('规格编码')
    plt.ylabel('销量')
    plt.title('最受欢迎产品')
    
    最受欢迎产品.jpg

    排名第一的是某款9.9包邮的流量款面膜,可以明显的看出来流量款占据了绝对领先的位置。

    综述:

    就数据反映的情况来说,该品牌化妆品的流量款虽然带来了大量的流量(潜在客户),但是带来的消费贡献并不高,只有重要价值客户提供了大量的消费贡献,要把运营的重点放在老客户身上,毕竟发展一个新客户的成本是维护一个老客户成本的3—10倍。

    相关文章

      网友评论

          本文标题:电商数据分析

          本文链接:https://www.haomeiwen.com/subject/saxdyhtx.html