实训日记十二:Python文本挖掘-part3

灭鼠杀虫剂市场机会点分析

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

产品类别

使用灭鼠杀虫剂细分市场数据(截止到2018年11月22日30天的交易数据):
查看各产品’类别’总的’预估销售额’的分布,以此表示市场分布情况

  • 读取五个文件并且合并
  • 清洗:去掉大量缺失值的列,去掉单一值的列,去掉逻辑上不可用的列,如:‘时间’,‘链接’,‘主图链接’,‘主图视频链接’,‘页码’,‘排名’,‘宝贝标题’,‘运费’,‘下架时间’,‘旺旺’
    1、读入数据
os.chdir('../灭鼠杀虫剂细分市场')
filenames1 = glob.glob('*.xlsx')
dfs1 = [pd.read_excel(i) for i in filenames1]
df2 = pd.concat(dfs1,sort=False)
df2.info() 

2、处理缺失值

  • NA > 98%
  • 单一值
  • 逻辑上可删: - 如果我有新数据,新数据里会不会有这个x,会有则留下,没有则删去 - 链接等没用的列
  • 类ID列 - 名字 - 分类多,每类频次太少,预测能力差
#缺失值
df2.isnull().mean()
# 计算空值占比
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()

处理结果为:
在这里插入图片描述
3、按照 ‘类别’ 列进行分组,并计算每个类别的总预估销售额

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

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

灭鼠类别分析

  • 选择灭鼠数据进一步分析–>依据’售价’进行价格划分,得到若干的价格区间
  • 每个价格区间计算:预估销售额(总和),销售额占比,宝贝数(不同’宝贝ID’数),宝贝数占比,单宝贝平均销售额(不同宝贝的平均预估销售额,可以理解为竞争的反面,单宝贝平均销售额越高,竞争越低,单宝贝销售额高才有的分),相对竞争度(由前一项套入线性变换:
    在这里插入图片描述
    得到,0表示类目中最小竞争,1表示最大)
    1、选择灭鼠数据进一步分析
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()

结果如下
在这里插入图片描述

2、计算各价格区间的关键指标(销售额 、销售额占比、 宝贝数 、宝贝数占比 、相对竞争度(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

结果如下:
在这里插入图片描述
3、绘图表示

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])   
    bar = ax1.bar(x, y1, alpha=0.7, color='g', label='销售额占比')
    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])
    line = ax2.plot(x, y2, 'b', ms=10, lw=3, marker='o', label='相对竞争度')
    ax2.set_ylabel('相对竞争度', fontsize=14)
    sns.despine(left=True, bottom=True) 
    ax2.tick_params(labelsize=15)
    
    # 添加图例
    lines = [bar, line[0]]
    labels = [line.get_label() for line in lines]
    ax2.legend(lines, labels, loc='upper right',fontsize=8)
    
    plt.show()


结果如下:
在这里插入图片描述

  • 可见0-50容量大,竞争大,大容量市场(对比的是50-100,容量小,竞争稍小)
  • 200-250,竞争小,做高价市场的优先选择,属于机会点
    可见我们喜欢的类目是:市场份额高(表示更适合大众),相对竞争度低(没人抢).也就是找到闷声发大财的那些个分类去分蛋糕

0-50细分价格市场分析

这里我们选择容量最大的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()
byprice2 = bykey(df25,'价格区间')
byprice2

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

其他属性分析

1、店铺类型
在这里插入图片描述
可见:天猫各个方面都优于淘宝
2、型号

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

最终结果如下:
在这里插入图片描述
可见虽然粘鼠板市场份额普遍较高,但是0005、MT007在竞争度上有明显的优势。
3、物理形态
在这里插入图片描述
可见:常见物理形态是固体,竞争度也偏高,而胶水虽然竞争度低,但是市场份额较低。基本可以认为常见的物理形态就是固体。
4、物理形态、净含量
代码如下:

byhanliang = bykey(df25,['物理形态','净含量'])
byhanliang
import seaborn as sns
import matplotlib.pyplot as plt

def plot_mb(bydf):
    '''
    绘图函数
    '''
    sns.set(font='SimHei', style='white')
    bydf = bydf.reset_index()  # 重置索引以便对多级索引的数据进行处理
    bydf['物理形态_净含量'] = bydf['物理形态'] + ' - ' + bydf['净含量']  # 将两个属性结合成新的横轴属性
    y1 = bydf['销售额占比']
    y2 = bydf['相对竞争度']
    x = bydf['物理形态_净含量']
    
    fig, ax1 = plt.subplots(figsize=(20, 6))  # 使用subplots创建图形
    
    # 柱形图
    bar = ax1.bar(x, y1, alpha=0.7, color='g', label='销售额占比')
    ax1.set_ylabel('销售额占比', fontsize=14)
    ax1.tick_params(labelsize=6)  # 将字号变小
    plt.xticks(rotation=90)  # 将横轴标签旋转90度
    plt.xlabel('物理形态 - 净含量', fontsize=14)
    
    # 折线图
    ax2 = ax1.twinx() 
    line = ax2.plot(x, y2, 'b', ms=4, lw=1.5, marker='o', label='相对竞争度')
    ax2.set_ylabel('相对竞争度', fontsize=14)
    sns.despine(left=True, bottom=True) 
    ax2.tick_params(labelsize=14)  # 将字号变小
    
    # 添加图例
    lines = [bar, line[0]]
    labels = [line.get_label() for line in lines]
    ax2.legend(lines, labels, loc='upper left', fontsize=8)  # 将图例字号变小
    
    plt.show()

结果如下:
在这里插入图片描述
可见当物理形态为固体,净含量为1时,潜力较大

总结

  1. 灭鼠杀虫剂市场中,需要重点关注的产品类别是:灭鼠和蟑螂
  2. 灭鼠中:
  • 最大的市场集中在0-50的价格段,这个价格段竞争也很激烈
  • 200-250这个价格段市场份额占10%左右,竞争度很低,是值得挖掘的高价市场
  1. 灭鼠0-50价格段的产品市场中:
  • 10-20价格段市场容量大,竞争度低,值得进一步开发,20-30也不错
  • 店铺类型方面天猫明显优于淘宝
  • 市场份额高的型号是粘鼠板,然而型号0005市场份额还行,竞争度较低,值得开发
  • 产品的物理形态基本都是固体,也是被大众认可的形态
  • 当物理形态为固体,净含量为1时,市场份额高竞争度低,值得开发
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值