电商寻求市场增长点

项目背景&产品架构

  • 客户需求:拜耳官方旗舰店寻求市场增长点
  • 产品架构:
    在这里插入图片描述

数据说明

  • “驱虫剂市场”文件
    • 子文件:top100品牌数据、灭鼠杀虫剂、电蚊香套装、盘香灭蟑香蚊香盘、蚊香加热器、蚊香液、蚊香片、防霉防蛀片
  • 灭鼠杀虫剂细分市场
    • 子文件:杀虫、灭鼠、虱子、螨、蟑螂
  • 竞争数据
    • 子文件:商品销售数据、商品交易数据、流量渠道数据、评论舆情数据

1 驱虫市场的潜力分析

 1、分析整个市场的总体趋势
 2、分析各子类目市场占比及变化趋势
 3、分析市场集中度,即是否存在垄断

导包

import glob
import os 
import pandas as pd
import numpy as np
import re
import datetime as dt
from sklearn.linear_model import LinearRegression
import seaborn as sns;sns.set()
from matplotlib import pyplot as plt
import jieba
import jieba.analyse
import imageio
from wordcloud import WordCloud
from snownlp import SnowNLP
import warnings
warnings.filterwarnings('ignore')
plt.rcParams['font.sans-serif']='simhei'
plt.rcParams['axes.unicode_minus']=False

加载并清洗数据

filenames = glob.glob('*近三年交易额.xlsx')
filenames

在这里插入图片描述

def load_file(filename):
    colname = re.search(r'.*(?=市场)',filename).group()
    df = pd.read_excel(filename)
    if df['时间'].dtypes == 'int64':   # 可能存在的时间数据杂乱清洗
        df['时间'] = pd.to_datetime(df['时间'],unit='D',origin=pd.Timestamp('1899-12-30'))
    df.rename(columns={df.columns[1]:colname},inplace=True)
    df = df.set_index('时间')
    return df
dfs = [load_file(i) for i in filenames]
df = pd.concat(dfs,axis=1).reset_index()
df.head()

在这里插入图片描述

线性回归补全2018年11、12月数据,便于年维度分析

这里假设:
	1、各月之间没有明显的周期性变化;
	2、每年对应月份的数据呈线性变化。
month = df['时间'].dt.month  # 提取月份便于索引
for i in [11,12]:   
    dm = df[month == i]
    xtrain = np.array(dm['时间'].dt.year).reshape(-1,1)
    ytest = [pd.datetime(2018,i,1)] #测试y第一列为日期
    for j in range(1,len(dm.columns)):
        ytrain = np.array(dm.iloc[:,j]).reshape(-1,1)
        lm = LinearRegression().fit(xtrain,ytrain) #2015、16、17数据训练
        yhat = lm.predict(np.array([2018]).reshape(-1,1))
        ytest.append(round(yhat[0][0],2)) #对应列的预测值附在新增加的行后
    newrow = pd.DataFrame([dict(zip(df.columns,ytest))]) #给预测结果赋值对应的列名
    df = newrow.append(df)
df

在这里插入图片描述

1.1 市场变化趋势描述

# 分组求和,看整个市场交易额逐年变化趋势
byyear = df.groupby('年份').sum(axis=1).reset_index()
byyear
# 绘图
sns.relplot('年份','合计',kind='line',marker='o',data=byyear)
plt.title('近三年驱虫市场趋势',fontsize=16)
plt.xticks(byyear.年份)
plt.xlabel('年份')
plt.yticks(byyear.合计)
plt.ylabel('总交易额')
plt.show()

在这里插入图片描述
总趋势:驱虫市场整体处于增长趋势,上升期。

1.2 近三年各子类目市场交易额分析

1.2.1各子类目市场趋势

在这里插入图片描述
可见:灭鼠杀虫剂份额大,增长高。

1.2.2 灭鼠杀虫剂市场近三年的增长趋势

在这里插入图片描述

1.2.3 各子类目市场交易额占比

在这里插入图片描述
可见:每年占比情况变化不大,灭鼠杀虫剂和蚊香液市场大。

1.2.4 各子类目市场年增幅情况

# 计算年增幅
byyear_p = byyear.iloc[:,1:-1]
byyear_diff = byyear_p.diff().iloc[1:,:].reset_index(drop=True)/byyear_p.iloc[:2,:]
byyear_diff.index = ['16-17','17-18']
byyear_diff

在这里插入图片描述
在这里插入图片描述
可见:

1、电蚊香套装进入负增长,该领域不可进;
2、较稳定增长领域:灭鼠杀虫剂;
3、考虑蚊香加热器产品寿命长,且总交易额较低,占比较低,市场小,故主要考虑灭鼠杀虫剂市场。

1.3 市场集中度描述

采用赫芬达尔指数(Herfindahl-Hirschman Index,缩写HHI)

df1 = pd.read_excel('top100品牌数据.xlsx')
df1

在这里插入图片描述

# 生成交易指数占比列,用以描述市场份额
df1['交易指数占比'] = df1['交易指数']/df1['交易指数'].sum() 

在这里插入图片描述

# 计算HHI指数
HHI = sum(df1['交易指数占比']**2)  
print(f'驱虫市场HHI指数:{HHI:.6f}(或{HHI*10000:.2f}),等效公司数:{1/HHI:.2f}')

在这里插入图片描述
可见:该市场存在一定竞争,但不存在垄断。

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

1、最受欢迎的产品类型
2、重点产品细分价格段分析
3、细分市场其它属性分析

加载并清洗数据

os.listdir('../灭鼠杀虫剂细分市场')

在这里插入图片描述

os.chdir('../灭鼠杀虫剂细分市场')
filenames1 = glob.glob('*.xlsx')
dfs1 = [pd.read_excel(i) for i in filenames1]
df2 = pd.concat(dfs1,sort=False)
df2.info() 

在这里插入图片描述

缺失值

df2.isnull().mean()

在这里插入图片描述
删除列

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

在这里插入图片描述

2.1 产品类别分布

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

2.2 灭鼠产品分析

2.2.1 不同价格区间的产品分布

在这里插入图片描述

# 对价格分箱进一步观察
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.2.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
byprice = bykey(df24,'价格区间')
byprice

在这里插入图片描述

# 绘图观察
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()

在这里插入图片描述
可见:

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

2.2.3 0-50细分价格市场分析

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

2.2.4 细分市场的其它属性分析

2.2.4.1 店铺类型

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

2.2.4.2 型号
# 筛选出排名前5%的型号,更倾向于大众的产品
bytype1 = bytype[bytype['预估销售额']>=bytype['预估销售额'].quantile(0.95)] 

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

2.2.4.3 物理形态、净含量

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

3 竞争分析

  • 对比市场份额前三的拜耳、安速、科凌虫控,挖掘拜耳市场增长策略

      1、产品分布情况
      2、产品结构特征(BCG矩阵)及发展策略
      3、流量结构及推广策略
      4、舆情评论及情感分析(拜耳公司)
    
os.listdir('../竞争数据')

在这里插入图片描述

3.1 品类分布(占比)

3.1.1 类目

an31 = df3an.groupby('类目').sum()
an31

在这里插入图片描述

bai31 = df3bai.groupby('类目').sum()
bai31

在这里插入图片描述

kl31 = df3kl.groupby('类目').sum()
kl31

在这里插入图片描述
在这里插入图片描述
可见:拜耳只有一个市场,竞争对手则有不同市场,但主要市场都是灭鼠杀虫剂。

3.1.2 适用对象

在这里插入图片描述
可见:

1、拜耳的主要对象是蟑螂,而另外两家除此之外还有螨,鼠。
2、从之前的分析看灭鼠和蟑螂的整体市场份额都大,所以对拜耳公司而言,应开拓新市场,尤其是灭鼠,也应考察其他两家都开拓的螨市场。

3.2 产品结构分析

# 函数1:关键指标
def byproduct(df):
    '''
    定义关键指标函数
    '''
    dfb = df.groupby('商品').mean().loc[:,['交易增长幅度']] #DataFrame
    dfb['交易金额'] = df.groupby('商品').sum()['交易金额']  #Series
    dfb['交易金额占比'] = dfb['交易金额']/dfb['交易金额'].sum()
    dfb['商品个数'] = df.groupby('商品').count()['交易金额']
    dfb.reset_index(inplace=True)
    return dfb
# 函数2:盖帽法处理异常值
def block(x):
    '''盖帽函数
    用90%的值替换最大值
    '''
    get = x.quantile(0.9)
    out = x.mask(x>get,get)
    return(out)
    
def block1(df):
    df1 = df.copy()
    df1['交易增长幅度']=block(df1['交易增长幅度'])
    df1['交易金额占比']=block(df1['交易金额占比'])
    return df1
# 函数3:绘制波士顿矩阵图
def plotBCG(df,mean=False,q1=0.5,q2=0.5):
    f,ax = plt.subplots(figsize=(10,8))
    ax = sns.scatterplot('交易金额占比','交易增长幅度',
                        hue='商品个数',size='商品个数',sizes=(20,200),
                        palette='cool',legend='full',data=df)
    for i in range(0,len(df)):
        ax.text(df['交易金额占比'][i]+0.001,df['交易增长幅度'][i],i)
    if mean:  # 均值线
        plt.axvline(df['交易金额占比'].mean())
        plt.axhline(df['交易增长幅度'].mean())
    else:
        plt.axvline(df['交易金额占比'].quantile(q1))
        plt.axhline(df['交易增长幅度'].quantile(q2))
    plt.show()
# 函数4:根据BCG矩阵,抽取明星、奶牛、问题产品
def extractBCG(df,q1=0.5,q2=0.5,by='交易金额占比'):
    '''
    从原始数据中,抽取明星产品、奶牛产品、问题产品
    '''
    # 明星产品
    star = df.loc[(df['交易金额占比']>=df['交易金额占比'].quantile(q1)
            ) & (df['交易增长幅度']>=df['交易增长幅度'].quantile(q2)),:]
    star = star.sort_values(by,ascending=False)
    # 奶牛产品:关心市场份额,依交易金额占比排序
    cow = df.loc[(df['交易金额占比']>=df['交易金额占比'].quantile(q1)
            ) & (df['交易增长幅度']<df['交易增长幅度'].quantile(q2)),:]
    cow = cow.sort_values(by,ascending=False)
    # 问题产品:关心市场增长率,依交易增长幅度排序
    que = df.loc[(df['交易金额占比']<df['交易金额占比'].quantile(q1)
            ) & (df['交易增长幅度']>=df['交易增长幅度'].quantile(q2)),:]
    que = que.sort_values(by,ascending=False)
    return star,cow,que

3.2.1 拜耳

在这里插入图片描述
可见:

1、问题产品中的潜力款和奶牛产品的商品个数普遍比较多。
2、突出的明星产品不足,但是有快进入明星产品的问题产品。
baistar,baicow = extractBOG(bai4)[:2]
baique = extractBOG(bai4,by='交易增长幅度')[-1]

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总结:拜耳大部分产品集中在除蟑上,杀虫也有一定的规模,但是明星产品略乏力,可以进一步发展问题产品灭鼠为明星产品。

3.2.2 安速

在这里插入图片描述
可见:奶牛产品足,明星产品部分有前途,问题产品部分有潜力,瘦狗产品不多。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总结:安速没有明显的灭鼠市场,同拜耳在灭蟑方面存在竞争。因此拜耳更应率先发展起灭鼠市场,在新市场增长点建立先发优势。

3.2.3 科凌虫控

在这里插入图片描述
可见:奶牛产品足,明星产品少,大部分有前途,问题产品部分有潜力,瘦狗产品少。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总结:科凌虫控每个产品结构相对独立(奶牛除蟑,明星灭鼠,潜力除螨),缺少后续的支持。拜耳若决定进驻灭鼠市场,应仔细研究科凌虫控在灭鼠市场的产品表现,做好准备。

3.3 流量结构分析

  • 抽取交易指数排名前10的流量渠道分析

      好的流量结构:
      1、合理的产品结构;
      2、适当的付费广告占比(一般不超过40%);
      3、尽可能提升流量入口数量;
      4、参考同行流量结构
    
# 自定义流量结构及说明函数
def flow(df):
	'''
	流量结构及说明函数
	'''
    df0 = df.copy()
    top10 = df0.sort_values('交易指数',ascending=False
                           ).reset_index(drop=True).iloc[:10,:]  
    top10['交易指数占比'] = top10['交易指数']/top10['交易指数'].sum()  
    top10.set_index('流量来源',inplace=True)
    paid =  ['付费流量','直通车','淘宝客','淘宝联盟']  #查得4个付费流量渠道
    ind = np.any([top10.index == i for i in paid],axis=0)   
    explode = ind * 0.1  
    ax = top10['交易指数占比'].plot.pie(autopct='%.2f%%',
                                  figsize=(5,5),explode=explode)
    ax.set_ylabel('')
    plt.show()
    paidsum = top10['交易指数占比'][ind].sum()
    salesum = top10['交易指数'].sum() 
    paidsale = salesum * paidsum
    print(f'前10流量中:\
总交易指数:{salesum:.0f},付费流量占比:{paidsum*100:.2f}%,付费流量带来交易指数:{paidsale:.0f}')  
    return top10

3.3.1 拜耳

bai5top10 = flow(df5bai)

在这里插入图片描述
在这里插入图片描述

3.3.2 安速

an5top10 = flow(df5an) 

在这里插入图片描述
在这里插入图片描述

3.3.3 科凌虫控

kl5top10 = flow(df5kl)

在这里插入图片描述
在这里插入图片描述
可见:付费流量占比三家无较大差异,但拜耳付费流量带来的交易指数占比最高,流量结构较为优秀,应继续维护。

3.4 舆情评论及情感分析

3.4.1 分析过程

1、文本数据清洗

(1)去非中英文(英文应变小写)
(2)分词(jieba/stemming--自定义词典--搜狗词库)
(3)去停用词
(4)去低频词

2、可视化:词云
3、建模:

(1)转化为文档词矩阵(DTM)
(2)有监督:贝叶斯
(3)无监督:LDA、分群、情感分析
# 分词函数
def w_cut(df):
    df_new = []
    for i in df:
        seg0 = pd.Series(jieba.lcut(i))
        ind3 = pd.Series([len(j) for j in seg0])>1 #筛选出长度大于1的词
        seg1 = seg0[ind3]
        ind31 = ~seg1.isin(pd.Series(stopwords)) #去停用词并去重
        seg2 = list(seg1[ind31].unique())
        if len(seg2)>0:  #去空列表
            df_new.append(seg2)
    return df_new

3.4.2 评论词云图

# 绘制词云图函数
def word_cloud(df):
    mask = imageio.imread(r"D:\CDA课件\10月30日 项目1:电商文本挖掘\data\leaf.jpg")
    font = r'C:\Windows\Fonts\simkai.ttf' 
    wc = WordCloud(background_color='white',mask=mask,font_path=font).generate(df)
    plt.figure(figsize=(6,8))
    plt.imshow(wc)
    plt.axis('off')
    plt.show()
word_cloud(bai64) 

在这里插入图片描述

3.4.3 关键词提取

w = pd.DataFrame(jieba.analyse.extract_tags(bai64,20,True),columns=['关键词','重要度比重'])
w

在这里插入图片描述
在这里插入图片描述
可见:从词云和关键词来看,舆论评价偏好。

3.4.4 情感分析

# 情感评分函数
def senti(df):
    sc = []
    for i in df.评论:
        s = SnowNLP(str(i))
        sc.append(s.sentiments)
    df['情感评分']=sc
    return df

在这里插入图片描述
在这里插入图片描述
可见:与竞争品牌相比,拜耳产品的买家评分还较低,可以考虑在产品和售后方面进一步挖掘改进。

3.4.5 挖掘较差评分

s_bai = s_bai.sort_values('情感评分')
bad = s_bai.iloc[:100]['评论']
bad

在这里插入图片描述
在这里插入图片描述
可见:差评反映了使用效果欠佳、客服存在不周、快递较慢等问题,应结合实际业务进行考察改进。

4 拜耳市场增长点分析结论

4.1 驱虫市场方面:

1、整体市场处于快速增长阶段。
2、灭鼠杀虫剂市场份额大(高于60%),约占第二名蚊香液市场的2倍,且市场增长率接近40%,可认为是明星产品类目,需重点投资和关注。
3、驱虫市场不存在垄断,竞争相对激烈,尚无明显来自大公司的压力。

4.2 灭鼠杀虫剂市场机会点:

1、该市场中,需重点关注的产品类别是:灭鼠和蟑螂。
2、灭鼠方面:

  • 最大的市场集中在0-50价格区间内,但该价格段竞争也很激烈。
  • 200-250价格区间的市场份额占10%左右,竞争度很低,是值得挖掘的高价市场。

3、灭鼠0-50价格段的产品市场中:

  • 10-20价格段市场容量大,竞争度低,值得进一步开发,20-30也不错。
  • 店铺类型方面天猫明显优于淘宝。
  • 市场份额高的型号是黏鼠板,而型号0005市场份额还行,竞争度较低,值得研究。
  • 固态是普遍被大众认可的产品形态。
  • 物理形态为固态,净含量是1时,市场份额高竞争度相对较低,值得开发。

4.3 竞争分析方面:

1、产品分布上:

  • 可以继续专精于灭鼠杀虫剂市场,但在产品的适用对象方面,灭鼠应当是开拓新市场的增长点。
  • 就竞争对手参与都较大的螨虫市场(约30%),结合螨类产品16.17%的市场占比,也应当准备参与。

2、产品结构上:

  • 主要集中在除蟑,杀虫也有一定的规模,但是明星产品略乏力。
  • 作为问题产品的灭鼠类,交易增幅已然最大且远超第二名,应加大投资,将其推成明星产品。
  • 作为竞争对手的安速尚未大力发展灭鼠产品,可抢占先机。但科凌虫控已经在此领域有一定规模,应仔细研究科其在灭鼠市场的产品表现,做好准备。

3、流量结构上:较为优秀,应继续维护。

4、舆情及情感分析上:

  • 整体偏好,但在买家评论的评分上与竞争对手相比偏消极。
  • 消极评论主要集中在使用效果、客服表现和快递较慢的问题上,应结合业务进一步考察改进。

4.4 核心概括:

1、大力发展灭鼠产品,10-20、20-30、200-250的价格段产品是机会点,店铺优选天猫、型号优选黏鼠板,产品形态优选固态,做好对科凌虫控在灭鼠市场的产品研究。
2、适当发布消螨产品,拓宽产品发展线。
3、考察、改进在产品效果、客服表现和物流系统方面的潜在不足。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值