美文网首页大数据 爬虫Python AI Sql大数据呆鸟的Python数据分析
数据分析实战——母婴产品上新策略分析

数据分析实战——母婴产品上新策略分析

作者: 勤奋的土豆鹿鹿 | 来源:发表于2019-05-04 19:49 被阅读2次

    分析目的:本次分析将针对母婴类产品,根据市场销售数据分析需求,确定产品,指导上新。

    本文使用python进行分析。并提出了自己的一些想法。

    数据来源:https://tianchi.aliyun.com/dataset/dataDetail?dataId=45

    数据解释:

    • user_id:用户ID

    • birthday:出生日期

    • gender:性别:0男,1女,2未知

    • auction_id:交易id

    • cat_id:产品id

    • property:商品属性

    • buy_mount:购买数量

    • cat1:根商品类目

    • day:成交日期

    分析步骤包括:

    (1)定类目

    • 各类目母婴产品销量比较

    • 各类目母婴产品ID数量比较

    (2)定产品

    • 选定类目产品销售量比较

    (3)上新筹备

    • 上新时间:分析母婴产品年度销售趋势

    • 产品卖点:分析母婴产品成交记录中高频关键词

    • 消费者画像:消费者年龄、消费者性别比(儿童基本信息)

    首先相关模块和数据导入:

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
    plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
    data_history = pd.read_csv('mum_baby_trade_history.csv')
    data_info = pd.read_csv('mum_baby.csv')
    
    

    前期处理

    
    #两个表格的时间处理
    data_info['birthday'] = pd.to_datetime(data_info['birthday'],format='%Y%m%d',errors='ignore')
    data_history['day'] = pd.to_datetime(data_history['day'], format='%Y%m%d', errors='ignore')
    #两个表格关联(只保留有儿童信息的部分)
    data_all = pd.merge(data_history,data_info,on='user_id',how='right')
    #时间处理
    data_all['year'] = pd.DatetimeIndex(data_all['day']).year
    data_all['quarter'] = pd.DatetimeIndex(data_all['day']).quarter
    #儿童年龄计算
    data_all['age'] = ((data_all['day'] - data_all['birthday']).dt.days)/356
    
    

    1 定类目

    (1)各类目购买总量

    异常值分析

    
    plt.scatter(range(len(data_all)),data_all['buy_mount'],alpha=0.5)
    
    
    image

    有一个产品在某日的购买量特别大,由于购买量几乎都分布在40以下,考虑这个点为异常点。去除

    (2)每年的销售量和购买人数分析

    
    data_all = data_all[data_all['buy_mount']<50]
    year = [2012,2013,2014,2015]
    buymount_sum = pd.DataFrame(columns=[2012,2013,2014,2015])
    cat1_customer_sum= pd.DataFrame(columns=[2012,2013,2014,2015])
    for i in year:
        buymount_sum.loc[:,i] = data_all[data_all['year']==i].groupby('cat1')['buy_mount'].sum()
    #各类目购买人数
        cat1_customer_sum.loc[:,i] = data_all[data_all['year']==i].groupby('cat1')['cat_id'].count()
    buymount_sum.plot(kind='bar',alpha=0.5,title='每年各类目销量')
    cat1_customer_sum.plot(kind='bar',alpha=0.5,title='每年各类目购买人数')
    
    
    image image

    在各类目销量中,50008168一直保持着最佳销量位置,而且近一年来增长速度最快

    同时该类目购买人数也是近几年增长最快的

    (3)总销售量、总购买人数、竞品数量和平均购买量

    各类目竞品数量

    
    list1 = [50008168,50014815,28,50022520,122650008,38]
    cat1_pro_sum = pd.DataFrame(index = list1,columns=['竞品数量'])
    for i in list1:
        cat1_pro_sum.loc[i,'竞品数量'] = (len(data_all[data_all['cat1']==i].groupby('cat_id').size()))
    
    data2 = pd.concat([buymount_sum,cat1_customer_sum,cat1_pro_sum],axis=1)
    data2.rename(columns={'buy_mount':'各类目购买总量','cat_id':'各类目购买人数'},inplace=True)
    
    

    各类目每个人平均购买量

    data2['平均购买量'] = data2['各类目购买总量']/data2['各类目购买人数']
    data2.sort_values(by='各类目购买总量',ascending=False,inplace=True)
    fig = plt.figure()
    ax1 = fig.add_subplot(1,1,1)
    ax2 = ax1.twinx()
    data2[['各类目购买总量','各类目购买人数','竞品数量']].plot(kind='bar',alpha=0.5,title='各类目购买总量和平均购买量',ax=ax1,rot=0)
    ax2.plot(range(len(data2)),data2['平均购买量'],color='r',alpha=0.5)
    ax2.grid(False)
    
    
    image

    类目选择总结

    (1)在各类目销量中,50008168一直保持着最佳销量位置,而且近一年来增长速度最快,同时该类目购买人数也是近几年增长最快的

    (2)从整体来看类别50008168销量最高,而且购买人数最多,但是每个人的需求比较少;而类别50014815、28在销量上,人均需求上都差不多,这两类的优点是人均需求高

    • 公司发展从稳的角度来看,选择50008168比较好

    • 首先是50008168的竞品数目少,如果加入新的产品,竞争压力相对较小;

    • 其次50008168人数需求和销量都很高,更像是生活必需品;

    • 最后,从历年销量和客户人数来看,50008168近几年增速最快,发展前景好;

    • 如果从想追求高利润的角度来看,类别50014815、28是不错的选择

    • 因为这两类单客户购买量大,如果能够注意产品运营,增加产品新意和质量,

    • 吸引客户,这两类产品将能够带来最大的效益

    • 同时也可以考虑小规模上新类目38,该类目竞品最少,但是人均销量很高,如果能够对该类商品进行进一步的运营,有很大的发展空间

    2 定产品

    选定类目产品销售量比较(考虑类目50008168)

    先看整体

    pro_data = data_all[data_all['cat1']==50008168][['year','cat_id','buy_mount']]
    pro_sum = pd.DataFrame(pro_data.groupby(['cat_id'])['buy_mount'].sum())
    pro_sum.rename(columns={'buy_mount':'类50008168产品销量'},inplace=True)
    
    

    分析整体产品销量大于20的产品

    
    fig = plt.figure(figsize=(6,10))
    ax1 = fig.add_subplot(2,1,1)
    pro_sum[pro_sum['类50008168产品销量']>=30].sort_values(by='类50008168产品销量',ascending=False).plot(kind='bar',alpha=0.5,title='类50008168产品销量',ax=ax1,rot=1)
    
    

    再看局部产品每年销量:50010558,50013636,50006602,50013207

    
    pro_data2 = pro_data[(pro_data['cat_id'] == 50010558 ) |
            (pro_data['cat_id'] == 50013636)|
            (pro_data['cat_id'] == 50006602)|
             (pro_data['cat_id']==50013207)]
    pro_year = pro_data2.groupby(['cat_id','year'])['buy_mount'].sum()
    ax2 = fig.add_subplot(2,1,2)
    pro_year = pro_year.loc[:,[2012,2013,2014]]
    pro_year[50010558].plot(kind='line',marker='o',color='r',alpha=0.8,label='50010558销量',ax=ax2)
    pro_year[50013636].plot(kind='line',marker='o',color='b',alpha=0.8,label='50013636销量',ax=ax2)
    pro_year[50006602].plot(kind='line',marker='o',color='g',alpha=0.8,label='50006602销量',ax=ax2)
    pro_year[50013207].plot(kind='line',marker='o',color='y',alpha=0.8,label='50013207销量',ax=ax2)
    plt.legend()
    
    image

    产品选择总结

    • 从产品销售总量来看,产品50013636销售总额最多,其次是50006602

    • 从每年产品销售量变化来看,各产品销售量都成逐年增长趋势,但是产品50013636增长有放缓趋势,而50006602销量增长趋势明显

    • 由此可见是产品50013636有可能已经处于饱和状态

    • 因此在产品选择时,建议选择产品50006602

    3 上新筹备

    • 上新时间:分析母婴产品每一年每季度销售趋势,确定合适的上新季度

    • 产品卖点:分析母婴产品成交记录中高频关键词

    • 消费者画像:消费者年龄、消费者性别比(儿童基本信息)

    分析50006602产品

    (1)分析母婴产品每季度销售趋势,确定合适的上新季度

    fig = plt.figure(figsize=(6,15))
    ax1 = fig.add_subplot(3,1,1)
    pro_data3 = data_all[(data_all['cat_id'] == 50006602)&(data_all['year'] != 2015)]
    pro_quarter = pd.DataFrame(pro_data3.groupby('quarter')['buy_mount'].sum())
    pro_quarter.plot(kind='line', marker='o',alpha=0.5,title='每季度母婴产品销量',ax=ax1)
    
    

    下图中可知在第三季度后开始上新比较好

    (2)产品卖点分析:分析母婴产品成交记录中高频关键词

    
    import re
    property = pd.DataFrame()
    pattern = re.compile(r'(\d+:\d+);?')
    for i in range(len(pro_data3)):
        property = property.append(pd.DataFrame(pattern.findall(pro_data3.iloc[i,4])))
    property.rename(columns={0:'关键词'},inplace=True)
    best_property = property['关键词'].value_counts()
    
    

    选择最佳关键词大类是1628665,细分关键词可以设置为3233942、3233941等

    (3)消费者画像分析

    消费者年龄分段

    
    ax2 = fig.add_subplot(3,1,2)
    sns.distplot(pro_data3['age'],bins=10,kde=True,ax=ax2)
    
    

    性别分布分析

    
    male = len(pro_data3[pro_data3['gender']==0])/len(pro_data3)
    female = len(pro_data3[pro_data3['gender']==1])/len(pro_data3)
    unknow = len(pro_data3[pro_data3['gender']==2])/len(pro_data3)
    labels = ['男','女','未知']
    size = [male, female, unknow]
    ax3 = fig.add_subplot(3,1,3)
    ax3.pie(size,labels = labels, autopct='%.2f%%')
    
    

    消费者人群中,年龄段主要分布在-1到2岁之间,性别中男孩占了多数

    image

    总结和建议:

    (1)经分析类别50008168总销量最高,总购买人数最多,竞品压力小,近几年增速最快,发展前景好。

    (2)产品50006602近几年销量增长趋势明显,销售前景良好;

    (3)产品最佳上新时间为3月份。最佳关键词大类为1628665。受众年龄为-1-2岁,性别中男孩占多数。

    相关文章

      网友评论

        本文标题:数据分析实战——母婴产品上新策略分析

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