【Python文本挖掘数据分析】(2)

灭鼠杀虫剂市场机会点

业务逻辑

  1. 子类目市场确定后(灭鼠杀虫剂市场):确定市场中最受欢迎的产品类别–>细分价格段
    –>属性进一步分析:什么样的价格作为主市场,什么样的商品符合大众口味
  2. 不同用途的商品定位:
  3. 引流商品:价格低,利润空间几乎没有,目的是为了引流
    · 获取流量的方式有免费和付费两种,免费流量看缘分(lian),控制付费流量成本
    即是对流量精准度的要求,即精准营销
  4. 利润商品:价格合理,只要的盈利来源
  5. 品牌商品:价格偏高,门面商品或奢侈品
  6. 商品布局时要考虑的问题:价格,产品特征,用户喜好度,商品需求等

产品类别

· 使用灭鼠杀虫剂细分市场数据(截止到2018年11月22日30天的交易数据):

  • 读取五个文件并且合并
  • 清洗:去掉大量缺失值的列,去掉单一值的列,去掉逻辑上不可用的列,如:‘时间’,‘链
    接’,‘主图链接’,‘主图视频链接’,‘页码’,‘排名’,‘宝贝标题’,‘运费’,‘下架时间’,‘旺旺’
    · 查看各产品’类别’总的’预估销售额’的分布,以此表示市场分布情况

灭鼠类别分析

数据处理
os.listdir('../灭鼠杀虫剂细分市场')
['杀虫.xlsx', '灭鼠.xlsx', '虱子.xlsx', '螨.xlsx', '蟑螂.xlsx']
os.chdir('../灭鼠杀虫剂细分市场')
filenames1 = glob.glob('*.xlsx')
dfs1 = [pd.read_excel(i) for i in filenames1]
df2 = pd.concat(dfs1,sort=False)
df2.info() 
<class 'pandas.core.frame.DataFrame'>
Int64Index: 6556 entries, 0 to 1742
Columns: 229 entries, 类别 to 产品名
dtypes: float64(129), int64(5), object(95)
memory usage: 11.5+ MB
#缺失值
df2.isnull().mean()
类别      0.0
时间      0.0
页码      0.0
排名      0.0
链接      0.0
       ... 
宝贝成份    1.0
规格:     1.0
樟脑      1.0
包装      1.0
产品名     1.0
Length: 229, dtype: float64

1、NA > 98% 2、单一值 3、逻辑上可删: - 如果我有新数据,新数据里会不会有这个x,会有则留下,没有则删去 - 链接等没用的列 4、类ID列 - 名字 - 分类多,每类频次太少,预测能力差

# 计算空值占比
null_percent = df2.isnull().sum() / len(df2)

# 找出空值占比大于98%的列
ind1 = null_percent > 0.98

# 删除空值占比大于98%的列
df20 = df2.loc[:, ~ind1]
# 药品登记号之后的文号列作用不大且空值占比依旧较大,删除
ind11 = df20.columns.get_loc('药品登记号')
df20 = df20.iloc[:,:ind11]
# 特征值单一,删除
ind2 = np.array([len(df20[i].unique())==1 for i in df20.columns])
df21 = df20.loc[:,~ind2]
# 删除逻辑上不可能用到的列
useless = ['时间','页码','链接','主图链接','主图视频链接',
           '排名','运费','下架时间','旺旺']   #目标:寻找增长点,新数据中没有排名信息,故删除
df22 = df21.drop(columns=useless)
df22.isnull().mean()
类别        0.000000
宝贝标题      0.000000
宝贝ID      0.000000
销量(人数)    0.000000
售价        0.000000
预估销售额     0.005491
评价人数      0.022880
收藏人数      0.000000
地域        0.406955
店铺类型      0.000000
品牌        0.095333
型号        0.423276
净含量       0.421599
适用对象      0.279896
物理形态      0.286303
dtype: float64
# 按照 '类别' 列进行分组,并计算每个类别的总预估销售额
sales_by_category = df22.groupby('类别')['预估销售额'].sum()
print(sales_by_category)
类别
杀虫     8207628.10
灭鼠    25686011.99
虱      4512886.01
螨     10886752.88
蟑螂    18037223.68
Name: 预估销售额, dtype: float64
# 画出横向柱状图
plt.figure(figsize=(10, 5))
sales_by_category.plot(kind='barh')
plt.xlabel('预估销售额')
plt.ylabel('类别')
plt.title('按类别统计的预估销售额')
plt.show()

请添加图片描述

# 画出饼图
plt.figure(figsize=(8, 8))
sales_by_category.plot(kind='pie', autopct='%1.1f%%', startangle=90)
plt.ylabel('')  # 隐藏y轴标签
plt.title('按类别统计的预估销售额分布')
plt.show()

在这里插入图片描述
可见:最受欢迎的是灭鼠类产品,市场占比最大,高达38%,需要重点研究。

0_50细分价格市场

不同价格区间的产品分布

df24 = df22[df22['类别'] == '灭鼠']
# 对价格分箱进一步观察
bins = [0,50,100,150,200,250,300,500]
labels = ['0-50','50-100','100-150',
         '150-200','200-250','250-300','300以上']
df24['价格区间'] = pd.cut(df24['售价'],bins,labels=labels,include_lowest=True)
df24['价格区间'].value_counts()
0-50       1138
50-100      242
100-150      62
150-200      35
300以上        28
200-250       9
250-300       9
Name: 价格区间, dtype: int64

销售额 销售额占比 宝贝数 宝贝数占比 相对竞争度(1-归一化[‘单宝贝销售额’])

def bykey(df,by,sort='销售额占比'):
    byk = pd.DataFrame(df.groupby(by).sum()).loc[:,['预估销售额']]
    byk['销售额占比'] = byk['预估销售额']/byk['预估销售额'].sum()
    byk['宝贝数'] = df.groupby(by).nunique()['宝贝ID']
    byk['宝贝数占比'] = byk['宝贝数']/byk['宝贝数'].sum()
    byk['单宝贝平均销售额'] = byk['预估销售额']/byk['宝贝数']
    byk['相对竞争度'] = 1-(byk['单宝贝平均销售额']-byk['单宝贝平均销售额'].min())/(
                        byk['单宝贝平均销售额'].max()-byk['单宝贝平均销售额'].min())
    if sort:
        byk.sort_values(sort,ascending=False,inplace=True)
    return byk

byprice = bykey(df24,'价格区间')
# 绘图观察
def plot_m(bydf):
    '''
    绘图函数
    '''
    sns.set(font='SimHei',style='white')
    y1 = bydf['销售额占比']
    y2 = bydf['相对竞争度']
    x = bydf.index.tolist()
    fig = plt.figure(figsize=(10,6))
    # 柱形图
    ax1 = fig.add_subplot(111)
    ax1.set_ylim([0,1])   
    ax1.bar(x, y1, alpha=0.7,color='g')
    ax1.set_ylabel('销售额占比',fontsize='14')
    ax1.tick_params(labelsize=15)
    for i,(_x, _y) in enumerate(zip(x, y1)):
        plt.text(_x, _y,f'{_y*100:.2f}%',color='black', fontsize=20, ha='center', va='bottom') 
    plt.xlabel('价格区间')
    # 折线图
    ax2 = ax1.twinx() 
    ax2.set_ylim([-0.1,1.1])
    ax2.plot(x, y2, 'b', ms=10, lw=3, marker='o')
    ax2.set_ylabel(u'相对竞争度', fontsize='14')
    sns.despine(left=True, bottom=True) 
    ax2.tick_params(labelsize=15)
    ax2.legend(loc='upper right')
    plt.show()

plot_m(byprice)

在这里插入图片描述
1、0-50是大容量市场,虽然竞争大,但这么大的蛋糕能参与还是要参与。 2、200-250,竞争小,做高价市场的优先选择,属于机会点,可发展轻奢产品。

0-50细分价格市场分析

# 创建 df25,其中包含 df22 中 '售价' 大于 0 且小于 50 的每一行
df25 = df24[(df24['售价'] > 0) & (df24['售价'] < 50)]
# 对0-50价格分箱进一步观察
bins = [0,10,20,30,40,50]
labels = ['0-10','10-20','20-30',
         '30-40','40-50']
df25['价格区间'] = pd.cut(df25['售价'],bins,labels=labels,include_lowest=True)
df25['价格区间'].value_counts()
20-30    381
10-20    361
0-10     207
30-40    136
40-50     49
Name: 价格区间, dtype: int64
byprice2 = bykey(df25,'价格区间')
plot_m(byprice2)

在这里插入图片描述
可见:10-20相对竞争度低,容量大,优选,20-30也不错

其他属性分析


店铺类型
byprice3 = bykey(df24,'店铺类型')
plot_m(byprice3)

在这里插入图片描述
可见:天猫各个方面都优于淘宝

型号
bytype = bykey(df25,'型号')
#预估销售额 前5%的型号
bytype1 = bytype[bytype['预估销售额']>=bytype['预估销售额'].quantile(0.95)]
plot_m(bytype1)

在这里插入图片描述
可见虽然粘鼠板市场份额普遍较高,但是0005、MT007在竞争度上有明显的优势。

物理形态
byshape = bykey(df25,'物理形态')
plot_m(byshape)

在这里插入图片描述
可见:常见物理形态是固体,竞争度也偏高,而胶水虽然竞争度低,但是市场份额较低。

物物理形态,净含量
byhanliang = bykey(df25,'净含量')
plot_m(byhanliang)

在这里插入图片描述

结论

可见:当物理形态为固体,净含量为1时,潜力较大。

可见市场份额最高的是固体,竞争度也偏高, 而胶水虽然竞争度低,但是市场份额较低, 基本可以认为常见的物理形态就是固体。

灭鼠杀虫剂市场机会点-结论

灭鼠杀虫剂市场中,需要重点关注的产品类别是:灭鼠和蟑螂
灭鼠中: · 最大的市场集中在0-50的价格段,这个价格段竞争也很激烈 · 200-250这个价格段市场份额占10%左右,竞争度很低,是值得挖掘的高价市场
灭鼠0-50价格段的产品市场中: · 10-20价格段市场容量大,竞争度低,值得进一步开发,20-30也不错 · 店铺类型方面天猫明显优于淘宝 · 市场份额高的型号是粘鼠板,然而型号0005市场份额还行,竞争度较低,值得开发 · 产品的物理形态基本都是固体,也是被大众认可的形态 · 当物理形态为固体,净含量为1时,市场份额高竞争度低,值得开发 · 思考:数据分类多是人为填写的,那么分类的严谨性和可扩展性都值得考量,需要结合 业务逻辑和市场环境进一步判断

  • 16
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值