ds案例

市场规模

市场容量分析是对行业规模的分析判断

import pandas as pd
import numpy as np
import warnings
warnings.filterwarnings("ignore")

导入数据

path1 = '驱虫剂市场/'
#电蚊香套装市场近三年交易额
dwx=pd.read_excel(path1+'电蚊香套装市场近三年交易额.xlsx')
#防霉防蛀片市场近三年交易额
fmfz=pd.read_excel(path1+'防霉防蛀片市场近三年交易额.xlsx')
#灭鼠杀虫剂市场近三年交易额
msmc=pd.read_excel(path1+'灭鼠杀虫剂市场近三年交易额.xlsx')
#盘香灭蟑香蚊香盘市场近三年交易额
mz=pd.read_excel(path1+'盘香灭蟑香蚊香盘市场近三年交易额.xlsx')
#蚊香加热器市场近三年交易额
wxq=pd.read_excel(path1+'蚊香加热器市场近三年交易额.xlsx')
#蚊香片市场近三年交易额
wxp=pd.read_excel(path1+'蚊香片市场近三年交易额.xlsx')
#蚊香液市场近三年交易额
wxy=pd.read_excel(path1+'蚊香液市场近三年交易额.xlsx')

数据探索

数据合并

#汇总每一个市场的数据
m_sum=pd.DataFrame(data=[dwx.sum().values,fmfz.sum().values,msmc.sum().values,mz.sum().values,wxq.sum().values,wxp.sum().values,wxy.sum().values],columns=['市场规模'],
index=['电蚊香','防霉防蛀','灭鼠灭虫','灭蟑','蚊香加热器','蚊香片','蚊香液'])
m_sum.loc['驱虫市场']=m_sum.sum()
m_sum
市场规模
电蚊香 2.178805e+07
防霉防蛀 1.804635e+08
灭鼠灭虫 2.527161e+09
灭蟑 2.515832e+08
蚊香加热器 3.313501e+07
蚊香片 1.281525e+08
蚊香液 8.523022e+08
驱虫市场 3.994585e+09

绝对数据 市场的绝对规模-市场的具体规模数据

相对规模-市场占比 相对规模方便我们理解数据的意义

# 计算相对规模
m_sum['相对规模']=round(m_sum/m_sum.iloc[7,0]*100,1)
m_sum
市场规模 相对规模
电蚊香 2.178805e+07 0.5
防霉防蛀 1.804635e+08 4.5
灭鼠灭虫 2.527161e+09 63.3
灭蟑 2.515832e+08 6.3
蚊香加热器 3.313501e+07 0.8
蚊香片 1.281525e+08 3.2
蚊香液 8.523022e+08 21.3
驱虫市场 3.994585e+09 100.0

可视化比数字更加直观

可视化展示

import matplotlib.pyplot as plt
import seaborn as sns
plt.style.use('seaborn')
#设置字体样式
plt.rcParams['font.family'] = ['Arial Unicode MS', 'Microsoft Yahei', 'sans-serif']
#设置matplotlib支持汉语
plt.rcParams['font.sans-serif']=['SimHei']
#设置显示中文后,负号显示受影响,显示负号  
plt.rcParams['axes.unicode_minus']=False
x=m_sum.index.values
y=m_sum.市场规模.values
pl = plt.figure(figsize=(12,8))
plt.bar(x,y,width=0.618)
plt.xlabel("一级市场")
plt.ylabel('绝对市场规模')
# 设置数字标签
for a,b in zip(x,y):
     plt.text(a,b+30000000,'%.0f'%b,ha='center',va='bottom',fontsize=8)
plt.show();

ds案例_第1张图片

#相对市场份额
size = m_sum.iloc[0:-1,1]
labels = m_sum.index.values[0:-1]
pl= plt.figure(figsize=(8,8))
plt.pie(size,labels=labels,autopct='%.1f%%',shadow=False,startangle=180)
# plt.axis('equal')#设置饼图使得饼图为圆形
plt.title('相对市场份额')
plt.show()

ds案例_第2张图片

市场增幅趋势

7个子行业数据合并

数据处理

数据整合

#7个子行业数据合并
d=pd.merge(dwx,fmfz,on='时间')
for i in [msmc,mz,wxq,wxp,wxy]:
    d=pd.merge(d,i,on='时间')
d.columns=['时间','电蚊香', '防霉防蛀', '灭鼠灭虫', '灭蟑', '蚊香加热器', '蚊香片', '蚊香液']
d
时间 电蚊香 防霉防蛀 灭鼠灭虫 灭蟑 蚊香加热器 蚊香片 蚊香液
0 2018-10-01 106531.29 8541153.59 1.136548e+08 4171283.35 315639.48 1032414.29 7.814546e+06
1 2018-09-01 105666.63 8825870.43 1.440261e+08 6784500.17 457366.41 1566651.88 1.065497e+07
2 2018-08-01 201467.03 6320153.44 1.540426e+08 10709683.41 746513.13 2617149.00 1.783558e+07
3 2018-07-01 438635.29 6302595.06 1.480032e+08 16589184.89 1871757.00 6209040.06 3.887792e+07
4 2018-06-01 953749.78 7047206.98 1.359438e+08 23526385.73 3641025.92 12484919.63 7.649909e+07
5 2018-05-01 1238967.37 7942340.44 1.241642e+08 28118581.25 5032466.78 15309721.94 1.050396e+08
6 2018-04-01 841051.93 7031364.60 7.509661e+07 16420341.87 3130513.43 7954875.07 6.254165e+07
7 2018-03-01 475177.48 6051561.02 5.918182e+07 7900094.91 1198332.81 2950648.32 2.632447e+07
8 2018-02-01 33232.95 1393948.47 2.292138e+07 545917.66 75714.46 218915.63 2.235774e+06
9 2018-01-01 54305.20 2607776.07 3.653873e+07 592663.20 86670.45 298146.11 1.759451e+06
10 2017-12-01 71600.17 3259747.23 4.292283e+07 796930.46 69145.59 314120.38 2.213103e+06
11 2017-11-01 94993.76 5447184.43 5.838217e+07 1581530.20 168141.79 617094.94 4.257594e+06
12 2017-10-01 145925.31 6152868.25 8.226882e+07 2824785.80 166522.62 766588.77 4.290843e+06
13 2017-09-01 242194.37 5792065.80 1.010081e+08 5581352.42 353042.45 1574779.65 7.833349e+06
14 2017-08-01 332922.02 5081714.64 1.049504e+08 7229409.84 544076.63 2323304.14 1.376039e+07
15 2017-07-01 913425.95 6691694.17 1.116729e+08 13718046.88 1357778.93 6627299.71 4.257757e+07
16 2017-06-01 2045163.59 7155138.87 1.051463e+08 19635925.59 2639777.66 12422420.21 8.283230e+07
17 2017-05-01 3606141.82 8145781.12 9.185035e+07 20275515.85 3185961.75 15961946.71 1.014605e+08
18 2017-04-01 1285599.49 6682161.49 5.363586e+07 9197868.29 1554864.42 6214963.68 4.880687e+07
19 2017-03-01 390486.57 3904656.82 4.078967e+07 3397837.60 317206.48 1319399.22 1.488979e+07
20 2017-02-01 209643.87 2584035.90 3.467502e+07 1519446.34 148158.07 687697.46 5.929509e+06
21 2017-01-01 39434.76 1781773.46 2.047156e+07 596744.04 48164.63 238973.09 1.213749e+06
22 2016-12-01 84350.57 3504367.98 3.546668e+07 1234900.05 52118.96 293737.20 1.558634e+06
23 2016-11-01 106291.23 4975519.21 4.780625e+07 1473418.20 82835.82 512990.23 2.758827e+06
24 2016-10-01 179015.23 4600717.78 6.339722e+07 2543813.78 130484.07 690912.02 3.641803e+06
25 2016-09-01 210456.69 4642681.07 6.864724e+07 3092898.02 168724.83 930513.91 4.632818e+06
26 2016-08-01 316467.14 4151326.68 7.610885e+07 4389862.79 272553.95 1581021.50 8.956868e+06
27 2016-07-01 932728.10 5412185.06 7.832954e+07 7384968.66 761159.35 4088320.77 2.260036e+07
28 2016-06-01 2184985.33 5694825.13 7.693264e+07 10859461.67 1728788.53 8004562.69 4.640197e+07
29 2016-05-01 2059879.80 5469360.60 5.812696e+07 9912801.93 1618361.54 7474421.97 4.777690e+07
30 2016-04-01 1034992.53 5253619.06 3.762602e+07 4687913.18 758206.81 3435257.35 2.432917e+07
31 2016-03-01 352013.31 3481194.46 2.952610e+07 1204574.20 246106.75 746709.07 6.656382e+06
32 2016-02-01 96979.48 1274810.96 1.500135e+07 449199.41 36193.85 109108.05 6.939075e+05
33 2016-01-01 108412.71 1562393.95 2.107822e+07 619042.01 49670.25 113284.71 4.828890e+05
34 2015-12-01 110068.83 2333602.08 2.472756e+07 818479.56 34076.91 134890.48 5.832845e+05
35 2015-11-01 185094.22 3364112.14 3.303873e+07 1197791.27 86889.91 325744.43 1.579796e+06

数据的预测与补全

预测12月份数据

#预测一个子行业的12月份数据
t17=d.where(d.时间=='2017-12-1').dropna()
t16=d.where(d.时间=='2016-12-1').dropna()
t15=d.where(d.时间=='2015-12-1').dropna()
t=pd.concat([t17,t16,t15])
#x变量我们选择2015,2016,2017
#y每一年12月份的数据
y=t.drop('时间',axis=1)
#使用回归算法预测
from sklearn import linear_model
import numpy as np
x=[2017,2016,2015]
#写循环预测所有子行业的12月数据
y_12=[]
for i in range(7):
    #训练集数据格式处理
    x_train=np.array(x).reshape(-1,1)
    y_train=np.array(y.iloc[:,i])
    linear_reg=linear_model.LinearRegression()#模型的实例化
    linear_reg.fit(x_train,y_train)#模型的训练
    y_pre=linear_reg.predict(np.array([2018]).reshape(-1,1)).round(1)
    y_12.append(y_pre[0])
y_12
[50204.5, 3958717.6, 52567630.7, 928554.3, 86849.2, 426812.6, 3081492.0]

预测11月份数据

#同理预测11月的数据
t17_11=d.where(d.时间=='2017-11-1').dropna()
t16_11=d.where(d.时间=='2016-11-1').dropna()
t15_11=d.where(d.时间=='2015-11-1').dropna()
t1=pd.concat([t17_11,t16_11,t15_11])
y1=t1.drop('时间',axis=1)
#写循环,得到18年11月预测结果
y_11=[]
for i in range(7):
    #训练集数据格式处理
    x_train=np.array(x).reshape(-1,1)
    y_train=np.array(y1.iloc[:,i])
    linear_reg=linear_model.LinearRegression()#模型的实例化
    linear_reg.fit(x_train,y_train)#模型的训练
    y_pre=linear_reg.predict(np.array([2018]).reshape(-1,1)).round(1)
    y_11.append(y_pre[0])
y_11
[38692.6, 6678677.5, 71752496.0, 1801318.8, 193874.4, 776627.0, 5543203.8]

添加格式为日期格式的元素到y_11,y_12

补全数据,删除2015年数据

#2018年11月\12月的数据填充,删除15年11\12
#添加格式为日期格式的元素到y_11,y_12
import datetime
#将字符串变成日期
a11=datetime.datetime.strptime('2018-11-1','%Y-%m-%d')
y_11.insert(0,a11)
a12=datetime.datetime.strptime('2018-12-1','%Y-%m-%d')
y_12.insert(0,a12)

d.iloc[34]=y_12
d.iloc[35]=y_11

#按照日期排序
d.sort_values(by='时间',ascending=False,inplace=True)
d.reset_index(inplace=True)
del d['index']
d
时间 电蚊香 防霉防蛀 灭鼠灭虫 灭蟑 蚊香加热器 蚊香片 蚊香液
0 2018-12-01 50204.50 3958717.60 5.256763e+07 928554.30 86849.20 426812.60 3.081492e+06
1 2018-11-01 38692.60 6678677.50 7.175250e+07 1801318.80 193874.40 776627.00 5.543204e+06
2 2018-10-01 106531.29 8541153.59 1.136548e+08 4171283.35 315639.48 1032414.29 7.814546e+06
3 2018-09-01 105666.63 8825870.43 1.440261e+08 6784500.17 457366.41 1566651.88 1.065497e+07
4 2018-08-01 201467.03 6320153.44 1.540426e+08 10709683.41 746513.13 2617149.00 1.783558e+07
5 2018-07-01 438635.29 6302595.06 1.480032e+08 16589184.89 1871757.00 6209040.06 3.887792e+07
6 2018-06-01 953749.78 7047206.98 1.359438e+08 23526385.73 3641025.92 12484919.63 7.649909e+07
7 2018-05-01 1238967.37 7942340.44 1.241642e+08 28118581.25 5032466.78 15309721.94 1.050396e+08
8 2018-04-01 841051.93 7031364.60 7.509661e+07 16420341.87 3130513.43 7954875.07 6.254165e+07
9 2018-03-01 475177.48 6051561.02 5.918182e+07 7900094.91 1198332.81 2950648.32 2.632447e+07
10 2018-02-01 33232.95 1393948.47 2.292138e+07 545917.66 75714.46 218915.63 2.235774e+06
11 2018-01-01 54305.20 2607776.07 3.653873e+07 592663.20 86670.45 298146.11 1.759451e+06
12 2017-12-01 71600.17 3259747.23 4.292283e+07 796930.46 69145.59 314120.38 2.213103e+06
13 2017-11-01 94993.76 5447184.43 5.838217e+07 1581530.20 168141.79 617094.94 4.257594e+06
14 2017-10-01 145925.31 6152868.25 8.226882e+07 2824785.80 166522.62 766588.77 4.290843e+06
15 2017-09-01 242194.37 5792065.80 1.010081e+08 5581352.42 353042.45 1574779.65 7.833349e+06
16 2017-08-01 332922.02 5081714.64 1.049504e+08 7229409.84 544076.63 2323304.14 1.376039e+07
17 2017-07-01 913425.95 6691694.17 1.116729e+08 13718046.88 1357778.93 6627299.71 4.257757e+07
18 2017-06-01 2045163.59 7155138.87 1.051463e+08 19635925.59 2639777.66 12422420.21 8.283230e+07
19 2017-05-01 3606141.82 8145781.12 9.185035e+07 20275515.85 3185961.75 15961946.71 1.014605e+08
20 2017-04-01 1285599.49 6682161.49 5.363586e+07 9197868.29 1554864.42 6214963.68 4.880687e+07
21 2017-03-01 390486.57 3904656.82 4.078967e+07 3397837.60 317206.48 1319399.22 1.488979e+07
22 2017-02-01 209643.87 2584035.90 3.467502e+07 1519446.34 148158.07 687697.46 5.929509e+06
23 2017-01-01 39434.76 1781773.46 2.047156e+07 596744.04 48164.63 238973.09 1.213749e+06
24 2016-12-01 84350.57 3504367.98 3.546668e+07 1234900.05 52118.96 293737.20 1.558634e+06
25 2016-11-01 106291.23 4975519.21 4.780625e+07 1473418.20 82835.82 512990.23 2.758827e+06
26 2016-10-01 179015.23 4600717.78 6.339722e+07 2543813.78 130484.07 690912.02 3.641803e+06
27 2016-09-01 210456.69 4642681.07 6.864724e+07 3092898.02 168724.83 930513.91 4.632818e+06
28 2016-08-01 316467.14 4151326.68 7.610885e+07 4389862.79 272553.95 1581021.50 8.956868e+06
29 2016-07-01 932728.10 5412185.06 7.832954e+07 7384968.66 761159.35 4088320.77 2.260036e+07
30 2016-06-01 2184985.33 5694825.13 7.693264e+07 10859461.67 1728788.53 8004562.69 4.640197e+07
31 2016-05-01 2059879.80 5469360.60 5.812696e+07 9912801.93 1618361.54 7474421.97 4.777690e+07
32 2016-04-01 1034992.53 5253619.06 3.762602e+07 4687913.18 758206.81 3435257.35 2.432917e+07
33 2016-03-01 352013.31 3481194.46 2.952610e+07 1204574.20 246106.75 746709.07 6.656382e+06
34 2016-02-01 96979.48 1274810.96 1.500135e+07 449199.41 36193.85 109108.05 6.939075e+05
35 2016-01-01 108412.71 1562393.95 2.107822e+07 619042.01 49670.25 113284.71 4.828890e+05

驱虫市场汇总数据(年度汇总)

#(3)驱虫市场总的交易数据
d2=d.drop('时间',axis=1)

d['驱虫市场总']=d2.apply(lambda x:x.sum(),axis=1)
#(4)按照年份汇总数据
d['year']=d.时间.apply(lambda x:x.year)

data_sum=d.groupby('year').sum()
data_sum
电蚊香 防霉防蛀 灭鼠灭虫 灭蟑 蚊香加热器 蚊香片 蚊香液 驱虫市场总
year
2016 7666572.12 50023001.94 6.080471e+08 4.785285e+07 5905204.71 27980839.47 1.704905e+08 9.179661e+08
2017 9377531.68 62678822.18 8.477740e+08 8.635539e+07 10552841.02 49068587.96 3.300656e+08 1.395873e+09
2018 4537682.05 72701365.20 1.137893e+09 1.180885e+08 16836723.47 51845921.53 3.582077e+08 1.760111e+09

数据可视化

#绘制驱虫市场增量趋势图d
year=list(data_sum.index)
x=range(len(year))
y=data_sum['驱虫市场总']
with plt.style.context('ggplot'):
    pl=plt.figure(figsize=(8,6))
    plt.xticks(x,year,fontsize=9,rotation=45)
    plt.xlabel('year')
    plt.ylabel('交易额')
    plt.title('驱虫市场近三年的交易趋势图')
    plt.plot(x,y)
    plt.show();

ds案例_第3张图片

近三年,销售增长趋势明显,处于快速成长阶段,发展潜力巨大

#绘制各个子市场的趋势图
year=list(data_sum.index)
x=range(len(year))
with plt.style.context('ggplot'):
    pl=plt.figure(figsize=(16,12))
    plt.xticks(x,year,fontsize=9,rotation=45)
    plt.xlabel('year')
    plt.ylabel('交易额')
    plt.title('细分市场近三年的交易趋势图')
    plt.plot(x,data_sum.iloc[:,0])
    plt.plot(x,data_sum.iloc[:,1])
    plt.plot(x,data_sum.iloc[:,2])
    #数字标签
    for a,b in zip(x,data_sum.iloc[:,2]):
        plt.text(a,b-60000000,'%.0f'%b,ha='center',va='bottom')
    plt.plot(x,data_sum.iloc[:,3])
    plt.plot(x,data_sum.iloc[:,4])
    plt.plot(x,data_sum.iloc[:,5])
    plt.plot(x,data_sum.iloc[:,6])
    for a,b in zip(x,data_sum.iloc[:,6]):
        plt.text(a,b+10000000,'%.0f'%b,ha='center',va='bottom')
    plt.legend(['电蚊香', '防霉防蛀', '灭鼠灭虫', '灭蟑', '蚊香加热器', '蚊香片', '蚊香液'])
    plt.show()

ds案例_第4张图片

市场的增量分析-环比增幅

#以灭鼠灭虫为例
d_y=list(data_sum.灭鼠灭虫.round(2))
data_sum
电蚊香 防霉防蛀 灭鼠灭虫 灭蟑 蚊香加热器 蚊香片 蚊香液 驱虫市场总
year
2016 7666572.12 50023001.94 6.080471e+08 4.785285e+07 5905204.71 27980839.47 1.704905e+08 9.179661e+08
2017 9377531.68 62678822.18 8.477740e+08 8.635539e+07 10552841.02 49068587.96 3.300656e+08 1.395873e+09
2018 4537682.05 72701365.20 1.137893e+09 1.180885e+08 16836723.47 51845921.53 3.582077e+08 1.760111e+09
#18年环比增幅
(d_y[2]-d_y[1])/d_y[1]
0.3422131310110411
#17年环比增幅
(d_y[1]-d_y[0])/d_y[0]
0.3942571630219804
#绘制灭鼠杀虫市场的增量趋势图
year=list(data_sum.index)
x=range(len(year))
with plt.style.context('ggplot'):
    pl=plt.figure(figsize=(8,6))
    plt.xticks(x,year,fontsize=9,rotation=45)
    plt.xlabel('year')
    plt.ylabel('交易额')
    plt.title('细分市场近三年的交易趋势图')
    plt.bar(x,data_sum.iloc[:,2])
    plt.plot(x,data_sum.iloc[:,2],color='b',marker='o')
    plt.show()

ds案例_第5张图片

竞争(可从市场集中度分析)

市场(行业)集中度为0.0135,整个市场并未出现品牌垄断现象

top_100 = pd.read_excel(path1+'top100品牌数据.xlsx')
top_100.head()
品牌 行业排名 交易指数 交易增长幅度 支付转化指数 操作 份额
0 PREMISE/拜灭士 1 530344 -0.3235 1521 趋势分析 0.035998
1 科凌虫控 2 474937 -0.1910 1581 趋势分析 0.032237
2 ARS/安速 3 402372 -0.2682 1448 趋势分析 0.027311
3 思乐智 4 360780 0.2056 841 趋势分析 0.024488
4 希诺 5 346656 -0.1085 1865 趋势分析 0.023530
top_100['份额']=top_100.交易指数/top_100.交易指数.sum()
#行业集中度=市场份额的平方和 数值越大品牌垄断越严重,最大值为1
#行业集中率是指该行业的相关市场内前N家最大的企业所占市场份额的总和。
top_100_center_ratio = np.sum(pow(top_100.份额,2))
top_100_center_ratio 
0.013546334007208918

市场集中度数值为 0.0135,整个市场并未出现品牌垄断的现象,竞争较为激烈

细分市场的分析(灭鼠杀虫市场)

市场规模分析

数据处理

d1=pd.read_excel("灭鼠杀虫剂细分市场/螨.xlsx")
d2=pd.read_excel("灭鼠杀虫剂细分市场/灭鼠.xlsx")
d3=pd.read_excel("灭鼠杀虫剂细分市场/杀虫.xlsx")
d4=pd.read_excel("灭鼠杀虫剂细分市场/虱子.xlsx")
d5=pd.read_excel("灭鼠杀虫剂细分市场/蟑螂.xlsx")
a1=d1.loc[:,['类别','预估销售额']]
a2=d2.loc[:,['类别','预估销售额']]
a3=d3.loc[:,['类别','预估销售额']]
a4=d4.loc[:,['类别','预估销售额']]
a5=d5.loc[:,['类别','预估销售额']]
data=pd.concat([a1,a2,a3,a4,a5])
data2=data.groupby('类别').sum()
data2['相对份额']=data2/data2.sum()
data2
预估销售额 相对份额
类别
杀虫 8207628.10 0.121901
灭鼠 25686011.99 0.381491
4512886.01 0.067026
10886752.88 0.161691
蟑螂 18037223.68 0.267891

市场规模绝对份额分析

x=list(data2.index)
y=data2.iloc[:,0]
pl=plt.figure(figsize=(16,12))#宽为8inch,高为6inch
plt.bar(x,y,width=0.618)
plt.xlabel('一级市场')
plt.ylabel('绝对市场规模')
#设置数字标签
for a,b in zip(x,y):
    plt.text(a,b+70000,'%.0f'%b,ha='center',va='bottom',fontsize=8)
plt.title('灭鼠杀虫市场规模')
plt.show()

ds案例_第6张图片

市场相对份额分析

labels=list(data2.index)
size=data2['相对份额'].values
pl=plt.figure(figsize=(8,6))
plt.pie(size,labels=labels,autopct='%.1f%%',shadow=False,startangle=100)
plt.axis('equal')#设置饼图使得饼图为圆形
plt.title('杀虫市场相对份额')
plt.show()

ds案例_第7张图片

价格细分分析

以灭鼠为例进行价格细分分析

d2.columns
Index(['类别', '时间', '页码', '排名', '链接', '主图链接', '主图视频链接', '宝贝标题', '宝贝ID',
       '销量(人数)', '售价', '预估销售额', '运费', '评价人数', '收藏人数', '下架时间', '类目', '地域', '旺旺',
       '店铺类型', '信誉', 'DSR_物流分', 'DSR_物流行业对比', 'DSR_描述分', 'DSR_描述行业对比',
       'DSR_服务分', 'DSR_服务行业对比', '适用对象', '品牌', '型号', '净含量', '包装体积', '物理形态',
       '毛重', '产地', '省份', '地市', '产品名称', '药品登记号', '材质', 'Unnamed: 40', '电猫',
       '电子捕鼠器', '产品材质', '使用对象', '用途', '规格', '智捕型号', '电池容量', '供电电压', '产品尺寸',
       '包装尺寸', '功能', '颜色分类', '产品', '牙刷规格', '是否量贩装', '材料', '重量', '洞口', '是否定制',
       '长宽高', '三个装', '工艺', '白色双门', '白色单门', '数量', '捕鼠', '灭鼠', '适用范围', '香味',
       '包装种类', '体积(ml)', '货号', '重量(g)', '适用空间', '产品PH值', '输出电流', '输出电压',
       '输出功率', '机器智能功能', '双猫三用', '大号', '小号', '黑色特大号', '黄色特大号', '洞口尺寸', '样式',
       '洞口内径尺寸'],
      dtype='object')

数据处理(删除无用字段)

#删除对数据无关的字段
d2.drop(['时间','页码', '排名', '链接', '主图链接', '主图视频链接','宝贝标题','下架时间','旺旺'],axis=1,inplace=True)
#删除缺失值大于99%以上的字段
d2.shape[0]*0.99
1507.77

删除缺失值大于99%以上的字段

#删除缺失值大于99%以上的字段
for i in d2.columns:
    if d2[i].isnull().sum()>d2.shape[0]*0.99:
        del d2[i]
d2.类别.value_counts()
灭鼠    1523
Name: 类别, dtype: int64

删除仅包含一种信息的字段

#删除仅包含一种信息的字段
for i in d2.columns:
    if len(d2[i].value_counts())<=1:
        del d2[i]
d2.info()

RangeIndex: 1523 entries, 0 to 1522
Data columns (total 15 columns):
宝贝ID      1523 non-null int64
销量(人数)    1523 non-null int64
售价        1523 non-null float64
预估销售额     1504 non-null float64
运费        1523 non-null float64
评价人数      1421 non-null float64
收藏人数      1523 non-null int64
地域        812 non-null object
店铺类型      1523 non-null object
适用对象      1334 non-null object
品牌        1311 non-null object
型号        987 non-null object
净含量       468 non-null object
物理形态      1216 non-null object
产品名称      97 non-null object
dtypes: float64(4), int64(3), object(8)
memory usage: 178.6+ KB

价格细分价格分段

#进行市场的价格细分
d2.describe()
宝贝ID 销量(人数) 售价 预估销售额 运费 评价人数 收藏人数
count 1.523000e+03 1523.000000 1523.000000 1.504000e+03 1523.000000 1421.000000 1523.000000
mean 4.657358e+11 558.900854 49.018910 1.707847e+04 0.920886 891.865588 1202.402495
std 2.034076e+11 5657.138493 69.762057 1.172321e+05 2.801902 5722.909170 5864.130330
min 1.868822e+09 0.000000 0.010000 1.000000e-02 0.000000 0.000000 0.000000
25% 5.286903e+11 3.000000 15.800000 7.939500e+01 0.000000 5.000000 6.000000
50% 5.605955e+11 10.000000 27.700000 2.985000e+02 0.000000 26.000000 35.000000
75% 5.734868e+11 43.500000 52.600000 1.924125e+03 0.000000 132.000000 245.000000
max 5.823559e+11 143037.000000 498.000000 2.672898e+06 60.000000 120828.000000 97033.000000
#价格0-498 均值49
databins=[0,50,100,150,200,250,300,1000]
datalabels=['0-50','51-100','101-150','151-200','201-250','251-300','300以上']
d2['价格区间']=pd.cut(d2['售价'],bins=databins,labels=datalabels,include_lowest=True)
d2
宝贝ID 销量(人数) 售价 预估销售额 运费 评价人数 收藏人数 地域 店铺类型 适用对象 品牌 型号 净含量 物理形态 产品名称 价格区间
0 566054780243 9976 26.80 267356.8 0.0 11901.0 11596 广东 韶关 天猫 老鼠 优璇福 MT007 NaN 胶水 NaN 0-50
1 566054780243 9976 26.80 267356.8 0.0 NaN 11596 广东 深圳 天猫 老鼠 优璇福 MT007 NaN 胶水 NaN 0-50
2 572115448996 9945 9.90 98455.5 0.0 26442.0 3569 NaN 淘宝 老鼠 创驰 21/32 NaN 固体 NaN 0-50
3 39868408322 99 29.90 2960.1 0.0 20.0 352 河南 南阳 天猫 老鼠 云杀 粘鼠板 NaN 固体 云杀 粘鼠板 0-50
4 520282897220 99 39.90 3950.1 0.0 559.0 1250 NaN 淘宝 老鼠 得硕 NaN g 固体 NaN 0-50
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
1518 573118678210 0 22.00 NaN 0.0 3.0 0 NaN 淘宝 老鼠 达豪 A1中外型 NaN NaN NaN 0-50
1519 550586926422 0 38.00 NaN 8.0 0.0 1 NaN 淘宝 老鼠 易捕 NaN 1kg 固体 NaN 0-50
1520 520862079013 0 64.00 NaN 0.0 0.0 2 广东 广州 淘宝 NaN 九行 NaN NaN 粉状 NaN 51-100
1521 550586926422 0 38.00 NaN 8.0 0.0 1 NaN 淘宝 老鼠 易捕 NaN 1kg 固体 NaN 0-50
1522 579381539073 0 95.04 NaN 0.0 0.0 0 NaN 淘宝 NaN 自主品牌 NaN NaN NaN 51-100

1523 rows × 16 columns

#不同价格区间的销售额\销售额占比\销量\销量占比\商品数\商品数占比\一个商品分配的销售额
d2.columns
Index(['宝贝ID', '销量(人数)', '售价', '预估销售额', '运费', '评价人数', '收藏人数', '地域', '店铺类型',
       '适用对象', '品牌', '型号', '净含量', '物理形态', '产品名称', '价格区间'],
      dtype='object')

去除重复记录(根据数据,根据业务,一个宝贝ID只有一条记录)

#方法一:依据价格段-宝贝ID进行分组计数
test=d2.groupby(by=['价格区间','宝贝ID']).count().dropna()
test=test.reset_index()
test=test.groupby(by='价格区间').count()
#方法二:按照索引合并,去除空值
#方法三:
d3=d2.iloc[list(d2.宝贝ID.drop_duplicates().index),:]
d3.宝贝ID.duplicated().sum()
0
d3.reset_index(inplace=True)
del d3['index']
d3.groupby('价格区间').宝贝ID.count()
价格区间
0-50       854
51-100     172
101-150     46
151-200     28
201-250      7
251-300      9
300以上       18
Name: 宝贝ID, dtype: int64
#方法四
d2.groupby('价格区间').宝贝ID.nunique()
价格区间
0-50       854
51-100     172
101-150     46
151-200     28
201-250      7
251-300      9
300以上       18
Name: 宝贝ID, dtype: int64
bins1=d3.groupby('价格区间').sum()
bins1.columns
Index(['宝贝ID', '销量(人数)', '售价', '预估销售额', '运费', '评价人数', '收藏人数'], dtype='object')
#提取销量和销售额字段
bins1=bins1.loc[:,[ '销量(人数)', '预估销售额']]
round(bins1.预估销售额/bins1.预估销售额.sum(),2)
#bins1.apply(lambda x:x.sum())
价格区间
0-50       0.60
51-100     0.11
101-150    0.10
151-200    0.03
201-250    0.13
251-300    0.01
300以上      0.02
Name: 预估销售额, dtype: float64
bins1['销售额占比']=round(bins1.预估销售额/bins1.预估销售额.sum(),2)

bins1['销量占比']=round(bins1['销量(人数)']/bins1['销量(人数)'].sum(),2)

bins1['商品数']=d3.groupby('价格区间').宝贝ID.count()

bins1['商品数占比']=round(bins1.商品数/bins1.商品数.sum(),2)

bins1['一个商品平分配的销售额']=round(bins1.预估销售额/bins1.商品数,2)
#给列字段排序
bins1=bins1.loc[:,[ '预估销售额', '销售额占比', '销量(人数)','销量占比', '商品数', '商品数占比', '一个商品平分配的销售额']]
bins1
预估销售额 销售额占比 销量(人数) 销量占比 商品数 商品数占比 一个商品平分配的销售额
价格区间
0-50 12460167.80 0.60 660933 0.91 854 0.75 14590.36
51-100 2369762.53 0.11 32763 0.05 172 0.15 13777.69
101-150 2096910.29 0.10 15863 0.02 46 0.04 45585.01
151-200 551853.00 0.03 3102 0.00 28 0.02 19709.04
201-250 2740190.00 0.13 12540 0.02 7 0.01 391455.71
251-300 237740.00 0.01 808 0.00 9 0.01 26415.56
300以上 325470.00 0.02 677 0.00 18 0.02 18081.67
#按照商品平均分配的销售额进行排序,降序
bins1.sort_values(by='一个商品平分配的销售额',ascending=False)
预估销售额 销售额占比 销量(人数) 销量占比 商品数 商品数占比 一个商品平分配的销售额
价格区间
201-250 2740190.00 0.13 12540 0.02 7 0.01 391455.71
101-150 2096910.29 0.10 15863 0.02 46 0.04 45585.01
251-300 237740.00 0.01 808 0.00 9 0.01 26415.56
151-200 551853.00 0.03 3102 0.00 28 0.02 19709.04
300以上 325470.00 0.02 677 0.00 18 0.02 18081.67
0-50 12460167.80 0.60 660933 0.91 854 0.75 14590.36
51-100 2369762.53 0.11 32763 0.05 172 0.15 13777.69

根据以上分析,选取价格区间0-50:销售额占比最大,商品数占比最大,销量占比最大

价格区间201-250:商品均分的销售额最大,商品数占比最小,市场竞争压力小,可作为利润商品

价格区间101-150:商品均分的销售额较大,商品数占比较小,市场竞争压力小,可作为发展商品

细分价格段0-50

#分箱
bins_50=d3[d3.售价<=50]
databins=[0,10,20,30,40,50]
datalabels=['0-10','11-20','21-30','31-40','41-50']
bins_50['价格区间']=pd.cut(bins_50['售价'],bins=databins,labels=datalabels,include_lowest=True)
D:\Anaconda3\lib\site-packages\ipykernel_launcher.py:5: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  """
#定义一个函数,对分箱后的数据生成字段:销售额,销售额占比,销量,销量占比
def price_mark(data):
    #1\通过对价格区间的分组求和,得到销售额,销售额占比,销量,销量占比
    bins1=data.groupby('价格区间').sum()
    bins1['销售额占比']=round(bins1.预估销售额/bins1.预估销售额.sum(),2)
    bins1['销量占比']=round(bins1['销量(人数)']/bins1['销量(人数)'].sum(),2)
    bins1=bins1.loc[:,[ '预估销售额', '销售额占比', '销量(人数)','销量占比']]
    #得到商品数,商品数占比,宝贝分配量
    bins1['商品数']=data.groupby('价格区间').宝贝ID.count()
    bins1['商品数占比']=round(bins1.商品数/bins1.商品数.sum(),2)
    bins1['一个商品平分配的销售额']=round(bins1.预估销售额/bins1.商品数,2)
    res=bins1.sort_values(by='一个商品平分配的销售额',ascending=False)
    return res
price_mark(bins_50)
预估销售额 销售额占比 销量(人数) 销量占比 商品数 商品数占比 一个商品平分配的销售额
价格区间
11-20 7587750.69 0.61 492406 0.75 272 0.32 27896.14
41-50 675164.29 0.05 15143 0.02 40 0.05 16879.11
21-30 3319904.20 0.27 118682 0.18 278 0.33 11942.10
31-40 747760.71 0.06 19629 0.03 98 0.11 7630.21
0-10 129587.91 0.01 15073 0.02 166 0.19 780.65

细分价格段101-150

#分箱101-150
bins_150=d3[(d3.售价>100)&(d3.售价<=150)]

databins=[100,110,120,130,140,150]
datalabels=['100-110','111-120','121-130','131-140','141-150']
bins_150['价格区间']=pd.cut(bins_150['售价'],bins=databins,labels=datalabels,include_lowest=True)
D:\Anaconda3\lib\site-packages\ipykernel_launcher.py:6: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
price_mark(bins_150)
预估销售额 销售额占比 销量(人数) 销量占比 商品数 商品数占比 一个商品平分配的销售额
价格区间
131-140 1406924.04 0.67 10166 0.64 13 0.28 108224.93
121-130 333625.00 0.16 2605 0.16 10 0.22 33362.50
100-110 80405.43 0.04 743 0.05 4 0.09 20101.36
111-120 267403.82 0.13 2290 0.14 16 0.35 16712.74
141-150 8552.00 0.00 59 0.00 3 0.07 2850.67

细分价格段 201-250

市场的属性分析

价格区间 130-140

#属性特征分析
market_select=d3[(d3.售价>130)&(d3.售价<=140)]
market_select.groupby('店铺类型').sum()
宝贝ID 销量(人数) 售价 预估销售额 运费 评价人数 收藏人数
店铺类型
天猫 4554792724863 10085 1106.00 1395771.00 0.0 7675.0 24881
淘宝 2787483675416 81 684.76 11153.04 0.0 127.0 515
market_select.columns
Index(['宝贝ID', '销量(人数)', '售价', '预估销售额', '运费', '评价人数', '收藏人数', '地域', '店铺类型',
       '适用对象', '品牌', '型号', '净含量', '物理形态', '产品名称', '价格区间'],
      dtype='object')
market_select.groupby('适用对象').sum()
宝贝ID 销量(人数) 售价 预估销售额 运费 评价人数 收藏人数
适用对象
老鼠 6761304039980 10164 1650.76 1406644.04 0.0 7802.0 25395
market_select.groupby('型号').sum()
宝贝ID 销量(人数) 售价 预估销售额 运费 评价人数 收藏人数
型号
5520 570756139271 4 130.76 523.04 0.0 1.0 4
6波段驱鼠器 539326550483 7 139.00 973.00 0.0 880.0 1452
JF-807 575435845711 4034 139.00 560726.00 0.0 2556.0 4061
LT-qs01 581237209186 227 138.00 31326.00 0.0 84.0 269
SK300 2018 557321024222 5119 138.00 706422.00 0.0 0.0 15073
che1 576694779775 4 138.00 552.00 0.0 1.0 9
xueji-9010 568422637614 7 138.00 966.00 0.0 3592.0 3054
菱01 580312445254 617 138.00 85146.00 0.0 316.0 611
虎猫A1 557097750403 36 138.00 4968.00 0.0 51.0 202
车载驱鼠 576042232618 70 138.00 9660.00 0.0 246.0 352
market_select.groupby('物理形态').sum()
宝贝ID 销量(人数) 售价 预估销售额 运费 评价人数 收藏人数
物理形态
固体 5089232775257 6086 1235.76 839846.04 0.0 5166.0 21022

商品分析

销售分析

类目、适用对象对比

拜耳

baier = pd.read_excel('竞争数据/商品销售数据/拜耳近30天销售数据.xlsx')
baier.columns
Index(['序号', '店铺名称', '商品名称', '商品ID', '主图链接', '商品链接', '商品原价', '商品售价', '30天销售量',
       '总销量', '类目', '物理形态', '型号', '净含量', '使用对象', '销售额'],
      dtype='object')
baier.drop(['店铺名称','主图链接','商品链接'],axis=1,inplace=True)
baier.sort_values(by='销售额',ascending=False,inplace=True)
baier['销售额占比']=baier.销售额/baier.销售额.sum()
baier.head()
序号 商品名称 商品ID 商品原价 商品售价 30天销售量 总销量 类目 物理形态 型号 净含量 使用对象 销售额 销售额占比
0 1 德国拜耳拜灭士蟑螂药一窝端杀蟑胶饵灭蟑螂屋无毒克星家用全窝端 527604730327 109.0 39.9 43542 3023212 灭鼠/杀虫剂 啫喱 5g 5g 蟑螂 1737325.8 0.649877
1 2 德国拜耳进口蚂蚁药拜灭易灭蚁饵剂除杀蚂蚁杀虫剂家用室内全窝端 535731556857 199.0 59.9 4860 285440 灭鼠/杀虫剂 啫喱 拜灭易 12g 蚂蚁 291114.0 0.108896
5 6 德国拜耳拜灭士蟑螂药一窝端进口全窝端家用灭除杀蟑胶饵5g包邮 532112495808 109.0 39.9 3342 15078 灭鼠/杀虫剂 啫喱 杀蟑胶饵5g*1 5g 蟑螂 133345.8 0.049880
3 4 德国拜耳拜灭士5g+除敌5ml*4支进口蟑螂药家用全窝端杀蟑螂套装 569753894890 198.0 79.9 1487 19602 灭鼠/杀虫剂 啫喱 拜灭士5g-除敌 5g+5ml*4 蟑螂 118811.3 0.044443
6 7 进口蟑螂药德国拜耳拜灭士杀蟑胶饵蟑螂克星全窝端家用灭蟑屋12g 526068880042 199.0 79.9 1320 109234 灭鼠/杀虫剂 啫喱 杀蟑胶饵12g 12g 蟑螂 105468.0 0.039452
baier.groupby('类目').sum()
序号 商品ID 商品原价 商品售价 30天销售量 总销量 销售额 销售额占比
类目
灭鼠/杀虫剂 120 8286108792066 2623.0 1195.0 59185 3720411 2673315.2 1.0

建议点 :拜耳旗舰店只有一个灭鼠/杀虫剂类目,这里可以考虑可以尝试布局其他类目

baier.groupby('使用对象').sum()
序号 商品ID 商品原价 商品售价 30天销售量 总销量 销售额 销售额占比
使用对象
上门服务 14 578090143145 199.0 99.0 74 308 7326.0 0.002740
杀虫剂 13 1074833731154 208.0 79.8 2593 187382 103460.7 0.038701
白蚁 3 530229854741 199.0 89.9 838 70516 75336.2 0.028181
蚂蚁 17 1106313745903 448.0 173.9 4989 286942 305820.0 0.114397
蟑螂 73 4996641317123 1569.0 752.4 50691 3175263 2181372.3 0.815980

分析结论:使用对象占比最大的是蟑螂,这也是拜耳的主要战场,其次是蚂蚁,占比81%,拜耳在其他方面也有布局,但是占比不足10%

科凌虫控

klck = pd.read_excel('竞争数据/商品销售数据/科凌虫控旗舰店近30天销售数据.xlsx')
klck.drop(['店铺名称','主图链接','商品链接'],axis=1,inplace=True)
klck.sort_values(by='30天销售额',ascending=False,inplace=True)
klck['销售额占比']=klck['30天销售额']/klck['30天销售额'].sum()
klck.head()
序号 商品名称 商品ID 商品原价 商品售价 30天销售量 总销量 类目 适用对象 30天销售额 销售额占比
0 1 蟑螂药一窝端蟑螂屋胶饵灭蟑螂无毒厨房家用强力杀蟑螂克星全窝端 541418255867 49.9 16.8 76608 3175991 灭鼠/杀虫剂 蟑螂 1287014.4 0.336935
8 9 除螨虫家用喷剂床上去防螨祛螨虫神器喷雾剂包贴杀虫剂免洗非杀菌 565095820432 99.0 30.8 35788 144672 灭鼠/杀虫剂 1102270.4 0.288570
5 6 老鼠贴超强力粘鼠板灭鼠神器捕鼠魔毯yao颗粒老鼠胶家用药捕鼠器 553848164174 49.9 29.8 17610 172851 灭鼠/杀虫剂 524778.0 0.137385
9 10 去儿童头虱除阴虱净喷剂百部酊虱卵用虱子药成人一扫光净虱灵喷雾 559335827678 65.0 25.1 7395 80838 灭鼠/杀虫剂 185614.5 0.048593
1 2 蟑螂屋强力灭蟑清蟑螂贴家用无毒粉杀蟑螂药胶饵捕捉器克星全窝端 528722144927 39.0 19.8 5852 174989 灭鼠/杀虫剂 蟑螂 115869.6 0.030334
klck.groupby('类目').sum()
序号 商品ID 商品原价 商品售价 30天销售量 总销量 30天销售额 销售额占比
类目
其它园艺用品 15 552695315776 39.9 26.0 880 41667 22880.0 0.005990
灭鼠/杀虫剂 332 13109439326249 1728.4 817.2 163833 4416228 3734597.0 0.977702
灭鼠笼/捕鼠器 31 1112465425997 88.9 42.7 2315 46760 62293.0 0.016308

科凌虫控的类目包括三类,但是其他两类占比都非常小,产品主要集中再灭鼠杀虫剂类目,销售占比为97.8%,这里跟拜耳形成竞争

安速

ansu = pd.read_excel('竞争数据/商品销售数据/安速家居近30天销售数据.xlsx')
ansu.describe()
序号 商品ID 商品原价 商品售价 30天销售量 总销量 30天销售额
count 45.000000 4.500000e+01 45.000000 45.000000 45.000000 45.000000 45.000000
mean 23.000000 5.482012e+11 64.444444 45.044444 267.822222 14435.155556 12070.104444
std 13.133926 1.841185e+10 31.845869 16.336790 608.506379 39026.011693 30574.205377
min 1.000000 5.269939e+11 20.700000 20.700000 0.000000 15.000000 0.000000
25% 12.000000 5.270904e+11 42.000000 32.900000 21.000000 833.000000 799.000000
50% 23.000000 5.635548e+11 58.000000 45.000000 45.000000 2711.000000 2013.000000
75% 34.000000 5.648817e+11 79.800000 49.900000 221.000000 10498.000000 9945.000000
max 45.000000 5.675028e+11 168.000000 89.900000 3132.000000 236321.000000 156286.800000
#删除对分析无用的字段
ansu.drop(['店铺名称','主图链接','商品链接'],axis=1,inplace=True)
#按照销售额进行排序
ansu.sort_values(by='30天销售额',ascending=False,inplace=True)
#计算销售额占比字段
ansu['销售额占比']=ansu['30天销售额']/ansu['30天销售额'].sum()
ansu.groupby('类目').sum()
序号 商品ID 商品原价 商品售价 30天销售量 总销量 30天销售额 销售额占比
类目
漱口水 50 1130081741597 208.0 149.8 127 2710 9137.3 0.016823
灭鼠/杀虫剂 572 15853551883006 1650.3 1196.7 11082 564638 494539.3 0.910494
空气芳香剂 66 1620098374783 196.8 141.9 118 7065 4668.6 0.008595
空调清洁剂 54 1056404562798 122.9 113.0 151 32939 10420.9 0.019186
蚊香液 206 3878968356851 565.0 344.6 573 42000 24343.6 0.044819
蚊香片 87 1129949034942 157.0 81.0 1 230 45.0 0.000083

安速的产品类目较为丰富但是主要还是集中在灭鼠杀虫剂这一类目,其他的占比都较小

ansu.groupby('适用对象').sum()
序号 商品ID 商品原价 商品售价 30天销售量 总销量 30天销售额 销售额占比
适用对象
杀虫剂 223 4366320607112 435.7 349.6 755 19416 34687.5 0.063863
漱口水 50 1130081741597 208.0 149.8 127 2710 9137.3 0.016823
空气芳香剂 66 1620098374783 196.8 141.9 118 7065 4668.6 0.008595
空调清洁剂 54 1056404562798 122.9 113.0 151 32939 10420.9 0.019186
蚂蚁 24 563628133715 29.0 22.2 53 833 1176.6 0.002166
293 5008917391793 722.0 425.6 574 42230 24388.6 0.044902
9 564993565252 48.0 24.8 515 16551 12772.0 0.023514
98 2820972369214 399.0 242.6 3302 19587 164381.3 0.302642
蟑螂 174 6446879299188 654.0 481.3 6178 500064 268585.3 0.494491
44 1090757908525 84.6 76.2 279 8187 12936.6 0.023818

从使用对象来看,安速的产品主要针对于蟑螂、螨、杀虫剂、蚊,占比达到90%,但是主要还是集中在蟑螂和螨这两类产品

交易数据分析(商品结构分析)

时间跨度-7\8\9\10\11 6个月的数据

拜耳

baier2=pd.read_excel("竞争数据/商品交易数据/拜耳全店商品交易数据.xlsx")
#按照商品进行聚合,分析各个商品的增长幅度、交易额
gro_baier=baier2.groupby('商品').mean()
gro_baier
行业排名 交易指数 交易增长幅度 支付转化指数 交易金额
商品
17年德国拜耳进口蚂蚁药拜灭易灭蚁饵剂粉除杀蚂蚁杀虫剂全窝端 377.000000 28090.000000 -0.247600 1063.000000 4.234055e+04
德国原装进口拜耳蟑螂药全窝端拜灭士5g+12g杀蟑胶饵剂粉屋捕捉器 261.000000 36095.666667 -0.120333 796.333333 6.579239e+04
德国拜耳 除敌跳蚤杀虫剂家用灭蟑螂药虱子杀潮虫臭虫除虫剂喷雾 79.800000 80064.000000 -0.221080 955.600000 2.789561e+05
德国拜耳丁香医生限量款拜灭士加量家用蟑螂全窝端蟑螂药3支装 385.000000 21568.000000 1.279300 751.000000 2.674275e+04
德国拜耳上门除灭鼠灭白蚁蟑螂蚊子跳蚤苍蝇上海地区灭虫按件拍下 357.000000 22585.000000 2.439300 266.000000 2.896928e+04
德国拜耳拜灭士5g+拜灭易12g进口杀蟑螂蚂蚁药蟑螂克星家用全窝端 327.600000 30385.800000 0.048340 773.800000 5.024512e+04
德国拜耳拜灭士5g+除敌5ml*4支进口蟑螂药家用全窝端杀蟑螂套装 130.800000 78797.800000 1.311740 905.400000 2.969905e+05
德国拜耳拜灭士蟑螂药一窝端杀蟑胶饵灭蟑螂屋无毒克星家用全窝端 1.000000 527486.600000 -0.121360 1469.000000 8.020770e+06
德国拜耳拜灭士蟑螂药一窝端进口全窝端家用灭除杀蟑胶饵5g包邮 64.000000 74747.000000 29.260600 1514.000000 2.363863e+05
德国拜耳拜灭易12g+除敌5ml*4支 进口蚂蚁药全窝端家用杀虫剂组合 352.500000 28992.000000 0.450550 715.500000 4.478301e+04
德国拜耳拜灭易灭蚁饵剂粉除杀防蚂蚁药杀虫剂全窝端家用室内花园 65.400000 85062.800000 -0.027300 1104.800000 3.040252e+05
德国拜耳拜灭易进口蚂蚁药一窝端灭蚁饵剂清除蚂蚁粉家用全窝端 342.000000 24022.000000 7.867000 1335.000000 3.224639e+04
德国拜耳白蚁药杀虫剂全窝端家用除杀防治灭飞蚂蚁特密得预防装修 223.000000 32670.000000 5.023800 1199.000000 5.511341e+04
德国拜耳蟑螂药拜灭士杀蟑胶饵蟑螂克星全窝端家用灭蟑加量装12g 378.000000 24903.500000 1.069050 738.000000 3.434953e+04
德国拜耳跳蚤杀虫剂家用潮虫灭蛾蚋虱子臭虫药除蟑螂5ml*4 250.000000 35353.200000 0.007220 830.800000 6.361189e+04
德国拜耳进口白蚁药除灭防杀白蚁杀虫剂全窝端家用特傚触杀型粉药 132.000000 55552.500000 -0.134425 1107.500000 1.410424e+05
德国拜耳进口蚂蚁药家用拜灭易灭蚁饵剂杀蚂蚁杀虫剂室内全窝端蚁 347.400000 28069.200000 -0.047140 1366.200000 4.299972e+04
德国拜耳进口蚂蚁药拜灭易灭蚁饵剂除杀蚂蚁无毒家用室内全窝端 376.000000 29254.000000 0.364950 1151.000000 4.670049e+04
德国拜耳进口蚂蚁药拜灭易灭蚁饵剂除杀蚂蚁杀虫剂家用室内全窝端 16.000000 182361.400000 -0.056240 1234.400000 1.226098e+06
德国拜耳除敌杀虫剂灭蚊蟑螂蚂蚁药跳蚤苍蝇臭虫除螨虱子家用 215.600000 39651.600000 -0.075440 899.400000 7.871654e+04
德国拜耳除敌杀虫剂灭蟑螂药跳蚤苍蝇臭虫除螨虱子喷雾5ml*8 106.600000 66301.000000 0.325580 805.400000 1.966399e+05
德国进口拜耳蟑螂药拜灭士杀灭除蟑胶饵剂粉屋家用全窝端12g*2盒 498.000000 22421.000000 0.586000 645.000000 2.860501e+04
德国进口拜耳蟑螂药拜灭士杀蟑胶饵5g两盒套装全窝端杀灭蟑螂剂屋 381.800000 26109.000000 0.147040 695.400000 3.787524e+04
必抢 德国进口拜耳蟑螂克星家用小强全窝端蟑螂药杀蟑胶饵灭蟑17g 211.500000 51546.750000 -0.292100 1131.000000 1.404225e+05
拜灭士蟑螂药蟑螂克星家用无毒强力灭蟑清德国拜耳杀蟑饵剂全窝端 334.333333 29437.333333 1.797267 1148.666667 4.667749e+04
拜耳拜灭士 蟑螂药家用全窝端 强力灭除厨房蟑螂屋克星杀德国进口 196.000000 51934.333333 1.454067 1735.666667 1.379675e+05
拜耳灭蚂蚁药家用一窝端室内室外用杀小黄红蚂蚁药神器胶饵拜灭易 437.000000 19549.000000 7.442700 1612.000000 2.255362e+04
拜耳蟑螂药一窝端家用拜灭士杀蟑胶饵德国小强药粉灭蟑螂厨房克星 80.666667 73133.666667 0.035400 1749.333333 2.317908e+05
电子猫超声波驱鼠器家用大功率灭鼠防鼠赶老鼠夹药捕鼠干扰粘鼠板 369.000000 27594.000000 1030.000000 345.000000 4.104603e+04
蟑螂药30克拜灭士德国拜耳进口安全灭蟑螂杀蟑胶饵颗粒剂传染传毒 297.750000 32404.000000 -0.107200 1299.250000 5.527037e+04
蟑螂药一窝端德国拜耳拜灭士除蟑灭杀蟑螂克星全窝端家用杀蟑胶 33.400000 123549.800000 0.038900 1344.400000 5.953845e+05
蟑螂药德国拜耳拜灭士强力除杀蟑螂克星胶饵屋家用捕捉器贴全窝端 91.400000 73649.800000 0.011680 1312.000000 2.397389e+05
蟑螂药拜耳拜灭士杀蟑胶饵强力灭蟑清贴捕捉器蟑螂克星家用全窝端 452.500000 21869.500000 0.538100 1337.000000 2.769758e+04
蟑螂药进口德国拜耳拜灭士家用除杀蟑螂屋胶饵捕捉器强力清全窝端 336.500000 30918.500000 1.465350 1505.000000 5.053967e+04
进口拜耳蚂蚁药家用花园灭蚁饵剂拜灭易除杀蚂蚁杀虫剂室内全窝端 433.666667 25558.000000 -0.077033 1133.333333 3.616248e+04
进口蚂蚁药德国拜耳拜灭易杀蚁胶饵灭蚁饵剂红黑黄蚂蚁全窝端家用 457.000000 24561.000000 0.742200 1086.000000 3.351483e+04
进口蟑螂药 德国拜耳拜灭士家用杀蟑螂胶饵捕捉器蟑螂屋粉全窝端 169.600000 49018.200000 -0.148240 1362.600000 1.165273e+05
进口蟑螂药 德国拜耳拜灭士杀蟑胶饵灭蟑螂屋贴捕捉器全窝端家用 360.250000 29099.500000 0.049250 1250.750000 4.642282e+04
进口蟑螂药 德国拜耳拜灭士杀蟑螂胶饵剂33克灭蟑螂药全窝端家用 363.000000 29707.000000 0.331367 904.666667 4.796111e+04
进口蟑螂药一窝端德国拜耳拜灭士强力杀蟑胶饵蟑螂屋克星家用全窝 5.600000 289941.200000 -0.034680 1177.800000 2.723462e+06
进口蟑螂药一窝端德国拜耳拜灭士杀蟑胶饵诱防蟑螂屋全窝端5+12g 191.000000 36542.000000 31.218500 1223.000000 6.704314e+04
进口蟑螂药德国拜耳拜灭士杀蟑胶饵蟑螂克星全窝端家用灭蟑屋12g 69.400000 87755.400000 -0.127140 945.200000 3.301363e+05
进口蟑螂药德国拜耳拜灭士灭杀蟑胶饵剂粉屋克星全窝端12g家用 25.600000 137754.200000 0.070960 1160.200000 7.179599e+05
预售德国拜耳进口蟑螂药进口蚂蚁药组合装5g+12g 364.500000 28245.000000 0.218150 768.000000 4.277304e+04
#交易金额占比
gro_baier['交易金额占比']=gro_baier.交易金额/gro_baier.交易金额.sum()
#结果
res=gro_baier.loc[:,['交易增长幅度','交易金额占比','交易金额']]
res.describe()
交易增长幅度 交易金额占比 交易金额
count 44.000000 44.000000 4.400000e+01
mean 25.539933 0.022727 3.893421e+05
std 155.083825 0.073491 1.258984e+06
min -0.292100 0.001317 2.255362e+04
25% -0.061040 0.002453 4.201692e+04
50% 0.109000 0.003222 5.519189e+04
75% 1.287410 0.013598 2.329396e+05
max 1030.000000 0.468201 8.020770e+06

增长幅度里有个1030的异常值,需要探索下原因

res[res.交易增长幅度>10]
交易增长幅度 交易金额占比 交易金额
商品
德国拜耳拜灭士蟑螂药一窝端进口全窝端家用灭除杀蟑胶饵5g包邮 29.2606 0.013799 236386.32
电子猫超声波驱鼠器家用大功率灭鼠防鼠赶老鼠夹药捕鼠干扰粘鼠板 1030.0000 0.002396 41046.03
进口蟑螂药一窝端德国拜耳拜灭士杀蟑胶饵诱防蟑螂屋全窝端5+12g 31.2185 0.003914 67043.14
res[res.交易增长幅度==1030]
交易增长幅度 交易金额占比 交易金额
商品
电子猫超声波驱鼠器家用大功率灭鼠防鼠赶老鼠夹药捕鼠干扰粘鼠板 1030.0 0.002396 41046.03
baier2[baier2.商品=='电子猫超声波驱鼠器家用大功率灭鼠防鼠赶老鼠夹药捕鼠干扰粘鼠板']
品牌 时间 商品 行业排名 交易指数 交易增长幅度 支付转化指数 操作 交易金额
81 拜耳 2018-09-01 电子猫超声波驱鼠器家用大功率灭鼠防鼠赶老鼠夹药捕鼠干扰粘鼠板 369 27594 1030.0 345 趋势分析 41046.03

该商品只有9月份的数据,应该是9月份新上架的商品,所以增长幅度较大,可以将该条数据去除在进行下面的分析

res=res[res.交易增长幅度<1000]

探索明星产品

res.describe()
交易增长幅度 交易金额占比 交易金额
count 43.000000 43.000000 4.300000e+01
mean 2.180396 0.023200 3.974420e+05
std 6.526399 0.074293 1.272723e+06
min -0.292100 0.001317 2.255362e+04
25% -0.065840 0.002484 4.255680e+04
50% 0.070960 0.003226 5.527037e+04
75% 1.174175 0.013665 2.340885e+05
max 31.218500 0.468201 8.020770e+06
#销售额占比高,交易增幅高的明星产品
res.where((res.交易增长幅度>res.交易增长幅度.mean())&(res.交易金额占比>res.交易金额占比.mean())).dropna()
交易增长幅度 交易金额占比 交易金额
商品

销售额占比低,交易增幅高的潜力产品

res.where((res.交易增长幅度>res.交易增长幅度.mean())&(res.交易金额占比<res.交易金额占比.mean())).dropna()
交易增长幅度 交易金额占比 交易金额
商品
德国拜耳上门除灭鼠灭白蚁蟑螂蚊子跳蚤苍蝇上海地区灭虫按件拍下 2.4393 0.001691 28969.28
德国拜耳拜灭士蟑螂药一窝端进口全窝端家用灭除杀蟑胶饵5g包邮 29.2606 0.013799 236386.32
德国拜耳拜灭易进口蚂蚁药一窝端灭蚁饵剂清除蚂蚁粉家用全窝端 7.8670 0.001882 32246.39
德国拜耳白蚁药杀虫剂全窝端家用除杀防治灭飞蚂蚁特密得预防装修 5.0238 0.003217 55113.41
拜耳灭蚂蚁药家用一窝端室内室外用杀小黄红蚂蚁药神器胶饵拜灭易 7.4427 0.001317 22553.62
进口蟑螂药一窝端德国拜耳拜灭士杀蟑胶饵诱防蟑螂屋全窝端5+12g 31.2185 0.003914 67043.14

销售额占比高,交易增幅低的老爆款产品

#销售额占比高,交易增幅低的老爆款产品
res.where((res.交易增长幅度<res.交易增长幅度.mean())&(res.交易金额占比>res.交易金额占比.mean())).dropna()
交易增长幅度 交易金额占比 交易金额
商品
德国拜耳拜灭士蟑螂药一窝端杀蟑胶饵灭蟑螂屋无毒克星家用全窝端 -0.12136 0.468201 8020770.194
德国拜耳进口蚂蚁药拜灭易灭蚁饵剂除杀蚂蚁杀虫剂家用室内全窝端 -0.05624 0.071572 1226097.684
蟑螂药一窝端德国拜耳拜灭士除蟑灭杀蟑螂克星全窝端家用杀蟑胶 0.03890 0.034755 595384.526
进口蟑螂药一窝端德国拜耳拜灭士强力杀蟑胶饵蟑螂屋克星家用全窝 -0.03468 0.158978 2723461.574
进口蟑螂药德国拜耳拜灭士灭杀蟑胶饵剂粉屋克星全窝端12g家用 0.07096 0.041910 717959.908

拜耳没有销售额高,且增幅大的明星产品,产品结构有断层,需要从潜力产品中挑选并打造一些这样基因的产品

科林虫控

安速

决策

流量结构

舆论分析(店铺产品评论文本分析)

拜耳评论舆情数据文本分析

goods_baier=pd.read_excel("竞争数据/评论舆情数据/德国拜耳.xlsx")
pd.set_option('display.max_colwidth',500)
goods_baier.shape #(1400, 5)
(1400, 5)
goods_baier
产品名称 链接 评论页码 评论 评论日期
0 德国拜耳拜灭士蟑螂药一窝端杀蟑胶饵灭蟑螂屋无毒克星家用全窝端 https://detail.tmall.com/item.htm?id=527604730327 0 刚收到,家里厨房突然出现小强了,看了这个评价挺多挺好,销量也大,赶紧定了三盒,一定要管用啊一定要管用,一定要管用,准备看下后续效果会继续追加评价。不知道多久才能消灭干净,还在厨房,没法做饭了,都不愿意进去了。有点担心会挥发。看很多人在用也就试试吧。哎哎哎哎哎哎哎哎哎哎哎哎哎哎哎哎哎哎 2018-11-21 19:01:20
1 德国拜耳拜灭士蟑螂药一窝端杀蟑胶饵灭蟑螂屋无毒克星家用全窝端 https://detail.tmall.com/item.htm?id=527604730327 0 朋友推荐的说之前用的挺管用的。在放药的前几天就没怎么见蟑螂了,然后出去玩之前把家里角角落落全都点涂上了,四天之后回来开门的时候内心相当忐忑啊?? 不过居然一只都没见...也不知道是真的没有了,还是跟我错峰出行了....但愿是管用了,不然我真疯了!第二次购买了,超级好用,之前家里蟑螂都翻烂了,朋友推荐这个,买了两支送了一支,点上胶饵以后, 2018-11-23 11:07:03
2 德国拜耳拜灭士蟑螂药一窝端杀蟑胶饵灭蟑螂屋无毒克星家用全窝端 https://detail.tmall.com/item.htm?id=527604730327 0 真心坑人啊!还没到24小时就凝固了!小强依然活跃 2018-11-24 00:28:17
3 德国拜耳拜灭士蟑螂药一窝端杀蟑胶饵灭蟑螂屋无毒克星家用全窝端 https://detail.tmall.com/item.htm?id=527604730327 0 盆友推荐的,说特别好用,效果杠杠的,看双十一做活动,就买啦,效果应该不错吧,不过尸体都是家里不怕蟑螂的人处理的,所以我也不是很清楚…可以认真考虑家里常备啦,但是不太敢一次买很多,怕放不好变质了。还送了沉甸甸的一大包湿巾,很棒,可以用来给蟑螂尸体的地方消毒。 2018-11-25 03:07:25
4 德国拜耳拜灭士蟑螂药一窝端杀蟑胶饵灭蟑螂屋无毒克星家用全窝端 https://detail.tmall.com/item.htm?id=527604730327 0 我是买到假货吗?那么贵的蟑螂药居然还有,还是蟑螂已经百毒不侵了? 2018-11-26 07:49:43
... ... ... ... ... ...
1395 德国拜耳拜灭士蟑螂药一窝端杀蟑胶饵灭蟑螂屋无毒克星家用全窝端 https://detail.tmall.com/item.htm?id=527604730327 69 此用户没有填写评论! 2018-10-26 15:18:29
1396 德国拜耳拜灭士蟑螂药一窝端杀蟑胶饵灭蟑螂屋无毒克星家用全窝端 https://detail.tmall.com/item.htm?id=527604730327 69 有点贵,已经用了,期待效果 2018-11-21 20:27:43
1397 德国拜耳拜灭士蟑螂药一窝端杀蟑胶饵灭蟑螂屋无毒克星家用全窝端 https://detail.tmall.com/item.htm?id=527604730327 69 物流挺快的客服也很贴心好评 2018-11-26 11:56:28
1398 德国拜耳拜灭士蟑螂药一窝端杀蟑胶饵灭蟑螂屋无毒克星家用全窝端 https://detail.tmall.com/item.htm?id=527604730327 69 看起来不错,暂时没发现蟑螂 2018-11-18 13:03:36
1399 德国拜耳拜灭士蟑螂药一窝端杀蟑胶饵灭蟑螂屋无毒克星家用全窝端 https://detail.tmall.com/item.htm?id=527604730327 69 买二送一,期待效果呀,这个是同事推荐并且指定的产品,希望好用以后就再来吧………………………………………………………………………………………………………………………………………………………&hel... 2018-11-19 09:43:55

1400 rows × 5 columns

这里主要有以下几种情况需要做处理

文本的预处理

  • 此用户没有填写评论! (删除)
  • 我觉得很好我觉得很好我觉得很好(机械词)----
  • hellip----(停留词)
  • 直接复制评论—(去重)
#1\此用户没有填写评论!---删除
res1=goods_baier[goods_baier.评论!='此用户没有填写评论!']
res1.shape#(1300,5)共删除100条无效评论数据
(1300, 5)
#机械词的处理
def qc_string(s):
    filelist = s
    filelist2 = []
    for a_string in filelist:
        #temp=a_string[::-1]#将文本翻转
        char_list = list(a_string) #把字符串转化列表自动按单个字符分词了
#通过对比原始文本与当前文本,记录要删除的索引,将重复文本删除
        list1 = []#原始文本
        list1.append(char_list[0])
        list2 = ['']#比较文本
        del1 = []#记录要删除的索引
        i = 0
        while (i<len(char_list)):
            i = i+1
#若i为最后一个位置时,list1 与list2文本相同,需要删除的文本索引为range(i-m,i),其中m为list2的总字符数
            if i == len(char_list):
               if list1 == list2:
                    m = len(list2)
                    for x in range(i-m,i):
                        del1.append(x)
            else:
#(1.1)若词汇与list1第一个词汇相同,list2为空,将词加入list2中
               if char_list[i] == list1[0] and list2==['']:
                   list2[0]=char_list[i]
#(1.2)若词汇与list1第一个词汇相同,list2不为空,分两种情况:
               elif char_list[i] == list1[0] and list2 != ['']:
#(1.2.1)若list1=list2,记录要删除的索引位置,并重置list2,将新的词汇复制给list2
                   if list1 == list2:
                        m = len(list2)
                        for x in range(i-m,i):
                            del1.append(x)
                        list2 = ['']
                        list2[0]=char_list[i]
#(1.2.2)若list1不等于list2,令list1=list2,并重置list2,将新的词汇复制给list2
                   else:
                       list1 = list2
                       list2 = ['']
                       list2[0]=char_list[i]
#(2.1)若词汇和list1第一个词汇不同,list2为空,将词加入list1'
               elif char_list[i] != list1[0] and list2==['']:
                   list1.append(char_list[i])
#(2.2)若词汇和list1第一个词汇不同,list2不为空,分两种情况:
               elif char_list[i] != list1[0] and list2 !=['']:
#(2.2.1)如果list1等于list2且list2的字符长度大于2,则记录要删除的索引位置,并重置list1,list2
                   if list1 == list2 and len(list2)>=2:
                        m = len(list2)
                        for x in range(i-m,i):
                           del1.append(x)
                        list1= ['']
                        list1[0]=char_list[i]
                        list2 = ['']
#(2.2.2)如果list1不等于list2,将新的词汇加入到list2中
                   else:
                       list2.append(char_list[i])
        a = sorted(del1) #将位置索引进行排序
        t = len(a)-1
        while(t>=0):
            del char_list[a[t]]
            t = t-1
        str1 = ''.join(char_list)
        str2 = str1.strip()
        #str2=str2[::-1]
        filelist2.append(str2)
    return filelist2
list_baier=res1.评论.values.tolist()
res1=qc_string(list_baier)
len(res1) #1300
1300
#3直接复制评论---去重
res2=[]
for i in res1:
    if i not in res2:
        res2.append(i)
len(res2) #1265 共去除重复评论35条
1265
#jieba分词
import jieba
from wordcloud import WordCloud,STOPWORDS
text=""
for i in res2:
    #对每一个评论用jieba分词,并用空格分开
    text=text+' '.join(jieba.cut(i))
Building prefix dict from the default dictionary ...
Dumping model to file cache C:\Users\TomSun\AppData\Local\Temp\jieba.cache
Loading model cost 0.890 seconds.
Prefix dict has been built successfully.
#绘制词云
my_cloud=WordCloud(
background_color='white',
stopwords=STOPWORDS,
font_path='C:/Windows/Fonts/simsun.ttc',
width=1000,
height=500)
#用分好的词进行词云生成
my_cloud.generate(text)

plt.rcParams['figure.figsize']=(10,6)
plt.imshow(my_cloud)
plt.axis('off')
plt.show()

ds案例_第8张图片

#方法二:自主化
#导入停留词
stopwords=pd.read_table("stopwords.txt",quoting=3,names=['stopword'])
stopwords_list=stopwords.stopword.values.tolist()
jieba.load_userdict("mydict.txt")
#分词并去除停留词以及其他
contents=[]
for i in res2:
    seg=jieba.lcut(i)
    for word in seg:
        word=word.strip()
        if word in stopwords_list:
            continue
        elif word=='\n' or len(word)<=1:
            continue
        else:
            contents.append(word)
#计算词频
a=pd.DataFrame({
     'words':contents}).words.value_counts()
b=pd.DataFrame(columns=['词频'],index=a.index,data=a.values)
b.reset_index(inplace=True)
word_freq={
     x[0]:x[1] for x in b.values}
#任意形状的词云
from PIL import Image
pic=np.array(Image.open('mouse.jpg'))
#配置词云的基本参数
my_cloud=WordCloud(
background_color='black',
stopwords=STOPWORDS,
font_path='C:/Windows/Fonts/simsun.ttc',
mask=pic,
width=1000,
height=500)
pic_clod=my_cloud.fit_words(word_freq)
# my_cloud.generate(text)
#显示词云
plt.imshow(my_cloud,interpolation='bicubic')
plt.axis('off')
plt.show()

ds案例_第9张图片

科凌虫控

安速

你可能感兴趣的:(Python,可视化,数据分析)