驱虫市场潜力分析
import glob
import os
import pandas as pd
import re
import numpy as np
import datetime as dt
from sklearn.linear_model import LinearRegression
import seaborn as sns
from matplotlib import pyplot as plt
import jieba
import jieba.analyse
import imageio
from wordcloud import WordCloud#windows 中文编码
plt.rcParams['font.sans-serif']='simhei'
plt.rcParams['axes.unicode_minus']=False
os.chdir("C:/data")
os.chdir("./驱虫剂市场")
加载数据
- 读取各个子类目交易额数据,合并
filenames = glob.glob('*市场近三年交易额.xlsx')
filenames
['灭鼠杀虫剂市场近三年交易额.xlsx','电蚊香套装市场近三年交易额.xlsx','盘香灭蟑香蚊香盘市场近三年交易额.xlsx','蚊香加热器市场近三年交易额.xlsx','蚊香液市场近三年交易额.xlsx','蚊香片市场近三年交易额.xlsx','防霉防蛀片市场近三年交易额.xlsx']
re.search(r'.*(?=市场)','灭鼠杀虫剂市场近三年交易额.xlsx',).group() #正则表达式 ,?=市场,表示取出市场以前的内容
'灭鼠杀虫剂'
def load_xlsx(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['时间'] = pd.TimedeltaIndex(df['时间'],unit='D') + dt.datetime(1899,12,30)# 重命名列名(交易金额)为子类目名df.rename(columns={df.columns[1]:colname},inplace=True)# 设置时间列为行索引df = df.set_index('时间')return df
- 读取所有文件到列表
dfs = [load_xlsx(i) for i in filenames]
- 依行索引(时间)合并所有文件到一个数据框
df = pd.concat(dfs,axis=1).reset_index() #将时间变成一列,将索引变成列,重置索引
df.dtypes
时间 datetime64[ns]
灭鼠杀虫剂 float64
电蚊香套装 float64
盘香灭蟑香蚊香盘 float64
蚊香加热器 float64
蚊香液 float64
蚊香片 float64
防霉防蛀片 float64
dtype: object
df.head()
时间 | 灭鼠杀虫剂 | 电蚊香套装 | 盘香灭蟑香蚊香盘 | 蚊香加热器 | 蚊香液 | 蚊香片 | 防霉防蛀片 | |
---|---|---|---|---|---|---|---|---|
0 | 2018-10-01 | 1.136548e+08 | 106531.29 | 4171283.35 | 315639.48 | 7814546.15 | 1032414.29 | 8541153.59 |
1 | 2018-09-01 | 1.440261e+08 | 105666.63 | 6784500.17 | 457366.41 | 10654973.47 | 1566651.88 | 8825870.43 |
2 | 2018-08-01 | 1.540426e+08 | 201467.03 | 10709683.41 | 746513.13 | 17835577.80 | 2617149.00 | 6320153.44 |
3 | 2018-07-01 | 1.480032e+08 | 438635.29 | 16589184.89 | 1871757.00 | 38877917.83 | 6209040.06 | 6302595.06 |
4 | 2018-06-01 | 1.359438e+08 | 953749.78 | 23526385.73 | 3641025.92 | 76499091.86 | 12484919.63 | 7047206.98 |
清洗数据
- 查看各列缺失值占比
df.isna().mean()
时间 0.0
灭鼠杀虫剂 0.0
电蚊香套装 0.0
盘香灭蟑香蚊香盘 0.0
蚊香加热器 0.0
蚊香液 0.0
蚊香片 0.0
防霉防蛀片 0.0
dtype: float64
- 抽取月份以供后面索引
month = df['时间'].dt.month #抽取月份
month
0 10
1 9
2 8
3 7
4 6
5 5
6 4
7 3
8 2
9 1
10 12
11 11
12 10
13 9
14 8
15 7
16 6
17 5
18 4
19 3
20 2
21 1
22 12
23 11
24 10
25 9
26 8
27 7
28 6
29 5
30 4
31 3
32 2
33 1
34 12
35 11
Name: 时间, dtype: int64
- 循环预测2018年11月和12月的销售金额
for i in [11,12]:# 收取对应月份数据dm = df[month == i] #抽取的是行 # 训练x是年份xtrain = np.array(dm['时间'].dt.year).reshape(-1,1) #reshape(-1,1)变成一个二维数组# 测试y是新增加的行,第一列是对应的日期ytest = [pd.datetime(2018,i,1)]for j in range(1,len(dm.columns)):# 训练y是指定的j列ytrain = np.array(dm.iloc[:,j]).reshape(-1,1)# 回归建模lm = LinearRegression().fit(xtrain,ytrain)# 预测当测试x是2018时的交易金额yhatyhat = 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)
D:\ProgramData\Anaconda3\lib\site-packages\ipykernel_launcher.py:3: UserWarning: Boolean Series key will be reindexed to match DataFrame index.This is separate from the ipykernel package so we can avoid doing imports until
df
时间 | 灭鼠杀虫剂 | 电蚊香套装 | 盘香灭蟑香蚊香盘 | 蚊香加热器 | 蚊香液 | 蚊香片 | 防霉防蛀片 | |
---|---|---|---|---|---|---|---|---|
0 | 2018-12-01 | 5.256763e+07 | 50204.53 | 928554.26 | 86849.17 | 3.081492e+06 | 426812.59 | 3958717.58 |
1 | 2018-11-01 | 7.175250e+07 | 38692.61 | 1801318.82 | 193874.39 | 5.543204e+06 | 776627.04 | 6678677.55 |
2 | 2018-10-01 | 1.136548e+08 | 106531.29 | 4171283.35 | 315639.48 | 7.814546e+06 | 1032414.29 | 8541153.59 |
3 | 2018-09-01 | 1.440261e+08 | 105666.63 | 6784500.17 | 457366.41 | 1.065497e+07 | 1566651.88 | 8825870.43 |
4 | 2018-08-01 | 1.540426e+08 | 201467.03 | 10709683.41 | 746513.13 | 1.783558e+07 | 2617149.00 | 6320153.44 |
5 | 2018-07-01 | 1.480032e+08 | 438635.29 | 16589184.89 | 1871757.00 | 3.887792e+07 | 6209040.06 | 6302595.06 |
6 | 2018-06-01 | 1.359438e+08 | 953749.78 | 23526385.73 | 3641025.92 | 7.649909e+07 | 12484919.63 | 7047206.98 |
7 | 2018-05-01 | 1.241642e+08 | 1238967.37 | 28118581.25 | 5032466.78 | 1.050396e+08 | 15309721.94 | 7942340.44 |
8 | 2018-04-01 | 7.509661e+07 | 841051.93 | 16420341.87 | 3130513.43 | 6.254165e+07 | 7954875.07 | 7031364.60 |
9 | 2018-03-01 | 5.918182e+07 | 475177.48 | 7900094.91 | 1198332.81 | 2.632447e+07 | 2950648.32 | 6051561.02 |
10 | 2018-02-01 | 2.292138e+07 | 33232.95 | 545917.66 | 75714.46 | 2.235774e+06 | 218915.63 | 1393948.47 |
11 | 2018-01-01 | 3.653873e+07 | 54305.20 | 592663.20 | 86670.45 | 1.759451e+06 | 298146.11 | 2607776.07 |
12 | 2017-12-01 | 4.292283e+07 | 71600.17 | 796930.46 | 69145.59 | 2.213103e+06 | 314120.38 | 3259747.23 |
13 | 2017-11-01 | 5.838217e+07 | 94993.76 | 1581530.20 | 168141.79 | 4.257594e+06 | 617094.94 | 5447184.43 |
14 | 2017-10-01 | 8.226882e+07 | 145925.31 | 2824785.80 | 166522.62 | 4.290843e+06 | 766588.77 | 6152868.25 |
15 | 2017-09-01 | 1.010081e+08 | 242194.37 | 5581352.42 | 353042.45 | 7.833349e+06 | 1574779.65 | 5792065.80 |
16 | 2017-08-01 | 1.049504e+08 | 332922.02 | 7229409.84 | 544076.63 | 1.376039e+07 | 2323304.14 | 5081714.64 |
17 | 2017-07-01 | 1.116729e+08 | 913425.95 | 13718046.88 | 1357778.93 | 4.257757e+07 | 6627299.71 | 6691694.17 |
18 | 2017-06-01 | 1.051463e+08 | 2045163.59 | 19635925.59 | 2639777.66 | 8.283230e+07 | 12422420.21 | 7155138.87 |
19 | 2017-05-01 | 9.185035e+07 | 3606141.82 | 20275515.85 | 3185961.75 | 1.014605e+08 | 15961946.71 | 8145781.12 |
20 | 2017-04-01 | 5.363586e+07 | 1285599.49 | 9197868.29 | 1554864.42 | 4.880687e+07 | 6214963.68 | 6682161.49 |
21 | 2017-03-01 | 4.078967e+07 | 390486.57 | 3397837.60 | 317206.48 | 1.488979e+07 | 1319399.22 | 3904656.82 |
22 | 2017-02-01 | 3.467502e+07 | 209643.87 | 1519446.34 | 148158.07 | 5.929509e+06 | 687697.46 | 2584035.90 |
23 | 2017-01-01 | 2.047156e+07 | 39434.76 | 596744.04 | 48164.63 | 1.213749e+06 | 238973.09 | 1781773.46 |
24 | 2016-12-01 | 3.546668e+07 | 84350.57 | 1234900.05 | 52118.96 | 1.558634e+06 | 293737.20 | 3504367.98 |
25 | 2016-11-01 | 4.780625e+07 | 106291.23 | 1473418.20 | 82835.82 | 2.758827e+06 | 512990.23 | 4975519.21 |
26 | 2016-10-01 | 6.339722e+07 | 179015.23 | 2543813.78 | 130484.07 | 3.641803e+06 | 690912.02 | 4600717.78 |
27 | 2016-09-01 | 6.864724e+07 | 210456.69 | 3092898.02 | 168724.83 | 4.632818e+06 | 930513.91 | 4642681.07 |
28 | 2016-08-01 | 7.610885e+07 | 316467.14 | 4389862.79 | 272553.95 | 8.956868e+06 | 1581021.50 | 4151326.68 |
29 | 2016-07-01 | 7.832954e+07 | 932728.10 | 7384968.66 | 761159.35 | 2.260036e+07 | 4088320.77 | 5412185.06 |
30 | 2016-06-01 | 7.693264e+07 | 2184985.33 | 10859461.67 | 1728788.53 | 4.640197e+07 | 8004562.69 | 5694825.13 |
31 | 2016-05-01 | 5.812696e+07 | 2059879.80 | 9912801.93 | 1618361.54 | 4.777690e+07 | 7474421.97 | 5469360.60 |
32 | 2016-04-01 | 3.762602e+07 | 1034992.53 | 4687913.18 | 758206.81 | 2.432917e+07 | 3435257.35 | 5253619.06 |
33 | 2016-03-01 | 2.952610e+07 | 352013.31 | 1204574.20 | 246106.75 | 6.656382e+06 | 746709.07 | 3481194.46 |
34 | 2016-02-01 | 1.500135e+07 | 96979.48 | 449199.41 | 36193.85 | 6.939075e+05 | 109108.05 | 1274810.96 |
35 | 2016-01-01 | 2.107822e+07 | 108412.71 | 619042.01 | 49670.25 | 4.828890e+05 | 113284.71 | 1562393.95 |
36 | 2015-12-01 | 2.472756e+07 | 110068.83 | 818479.56 | 34076.91 | 5.832845e+05 | 134890.48 | 2333602.08 |
37 | 2015-11-01 | 3.303873e+07 | 185094.22 | 1197791.27 | 86889.91 | 1.579796e+06 | 325744.43 | 3364112.14 |
- 去掉原始索引
df.reset_index(drop=True,inplace=True)
- 去掉15年的数据
df = df[df['时间'].dt.year != 2015]
- 查看预测结果
df.head()
时间 | 灭鼠杀虫剂 | 电蚊香套装 | 盘香灭蟑香蚊香盘 | 蚊香加热器 | 蚊香液 | 蚊香片 | 防霉防蛀片 | |
---|---|---|---|---|---|---|---|---|
0 | 2018-12-01 | 5.256763e+07 | 50204.53 | 928554.26 | 86849.17 | 3081491.99 | 426812.59 | 3958717.58 |
1 | 2018-11-01 | 7.175250e+07 | 38692.61 | 1801318.82 | 193874.39 | 5543203.83 | 776627.04 | 6678677.55 |
2 | 2018-10-01 | 1.136548e+08 | 106531.29 | 4171283.35 | 315639.48 | 7814546.15 | 1032414.29 | 8541153.59 |
3 | 2018-09-01 | 1.440261e+08 | 105666.63 | 6784500.17 | 457366.41 | 10654973.47 | 1566651.88 | 8825870.43 |
4 | 2018-08-01 | 1.540426e+08 | 201467.03 | 10709683.41 | 746513.13 | 17835577.80 | 2617149.00 | 6320153.44 |
驱虫市场潜力分析
- 分析整个市场的总体趋势
- 分析各子类目市场占比及变化趋势
- 分析市场集中度,即是否存在垄断
市场变化趋势描述
- 每行所有市场的交易金额的总和生成新列
- 抽出年份生成新列
df['colsums'] = df.sum(1)
df.insert(1,'year',df['时间'].dt.year)
df.head()
时间 | year | 灭鼠杀虫剂 | 电蚊香套装 | 盘香灭蟑香蚊香盘 | 蚊香加热器 | 蚊香液 | 蚊香片 | 防霉防蛀片 | colsums | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 2018-12-01 | 2018 | 5.256763e+07 | 50204.53 | 928554.26 | 86849.17 | 3081491.99 | 426812.59 | 3958717.58 | 6.110026e+07 |
1 | 2018-11-01 | 2018 | 7.175250e+07 | 38692.61 | 1801318.82 | 193874.39 | 5543203.83 | 776627.04 | 6678677.55 | 8.678489e+07 |
2 | 2018-10-01 | 2018 | 1.136548e+08 | 106531.29 | 4171283.35 | 315639.48 | 7814546.15 | 1032414.29 | 8541153.59 | 1.356363e+08 |
3 | 2018-09-01 | 2018 | 1.440261e+08 | 105666.63 | 6784500.17 | 457366.41 | 10654973.47 | 1566651.88 | 8825870.43 | 1.724211e+08 |
4 | 2018-08-01 | 2018 | 1.540426e+08 | 201467.03 | 10709683.41 | 746513.13 | 17835577.80 | 2617149.00 | 6320153.44 | 1.924731e+08 |
- 按照年份分组求每个子类目市场的交易额总和
byyear = df.groupby('year').sum().reset_index()
byyear
year | 灭鼠杀虫剂 | 电蚊香套装 | 盘香灭蟑香蚊香盘 | 蚊香加热器 | 蚊香液 | 蚊香片 | 防霉防蛀片 | colsums | |
---|---|---|---|---|---|---|---|---|---|
0 | 2016 | 6.080471e+08 | 7666572.12 | 4.785285e+07 | 5905204.71 | 1.704905e+08 | 27980839.47 | 50023001.94 | 9.179661e+08 |
1 | 2017 | 8.477740e+08 | 9377531.68 | 8.635539e+07 | 10552841.02 | 3.300656e+08 | 49068587.96 | 62678822.18 | 1.395873e+09 |
2 | 2018 | 1.137893e+09 | 4537682.09 | 1.180885e+08 | 16836723.43 | 3.582077e+08 | 51845921.56 | 72701365.23 | 1.760111e+09 |
- 绘图前处理中文字体
plt.rcParams['font.sans-serif']='simhei'
plt.rcParams['axes.unicode_minus']=False
- 线图分析整体市场的趋势
# replot表示描述相关性的图标,height表图形的高度
sns.relplot('year','colsums',kind='line',marker='o',data=byyear,height=4)
plt.title('近三年驱虫市场趋势') # 加标题
plt.xticks(byyear.year,rotation=45) # 定义x轴标签
plt.xlabel('年份') # 定义x轴标题
plt.ylabel('总交易额') # 定义y轴标题
plt.show()
- 分析各类目市场销量趋势分析
# 图形大小
f, ax = plt.subplots(figsize=(10, 6))
# 线图中,由于有大于6个的分类,而线型最多6中,所以这里不区分线型,即dashes=False
sns.lineplot(data=byyear.set_index('year').iloc[:,:-1],dashes=False,marker='^') #dashes=False 不区分线型
plt.title('近三年各类目市场销量趋势分析')
plt.xticks(byyear.year,rotation=45)
# 在指定位置加文本
for a,b in zip(byyear.year,byyear['灭鼠杀虫剂']):plt.text(a,b,'%.3e'% b , ha='center',va='bottom',size=12)
plt.xlabel('年份')
plt.ylabel('总交易额')
plt.show()
- 直观的查看灭鼠杀虫剂近三年的增量趋势
g = sns.FacetGrid(byyear,height=5)
g.map(sns.barplot,'year','灭鼠杀虫剂',color='wheat')
g.map(sns.pointplot,'year','灭鼠杀虫剂')
for a,b in zip(range(len(byyear)),byyear['灭鼠杀虫剂']):plt.text(a,b,'%.3e'% b , ha='center',va='bottom',size=12)
plt.xlabel('年份')
plt.title('近三年灭鼠灭虫市场增量趋势分析')
plt.xticks(rotation=45)
plt.show()
D:\ProgramData\Anaconda3\lib\site-packages\seaborn\axisgrid.py:715: UserWarning: Using the barplot function without specifying `order` is likely to produce an incorrect plot.warnings.warn(warning)
D:\ProgramData\Anaconda3\lib\site-packages\seaborn\axisgrid.py:715: UserWarning: Using the pointplot function without specifying `order` is likely to produce an incorrect plot.warnings.warn(warning)
- 查看各类目市场每年总交易额占比
# 计算每年每个子市场占比
byyear_per = byyear.iloc[:,1:-1].div(byyear.colsums,axis=0)
byyear_per.index = byyear.year
byyear_per
灭鼠杀虫剂 | 电蚊香套装 | 盘香灭蟑香蚊香盘 | 蚊香加热器 | 蚊香液 | 蚊香片 | 防霉防蛀片 | |
---|---|---|---|---|---|---|---|
year | |||||||
2016 | 0.662385 | 0.008352 | 0.052129 | 0.006433 | 0.185726 | 0.030481 | 0.054493 |
2017 | 0.607343 | 0.006718 | 0.061865 | 0.007560 | 0.236458 | 0.035153 | 0.044903 |
2018 | 0.646489 | 0.002578 | 0.067092 | 0.009566 | 0.203514 | 0.029456 | 0.041305 |
byyear_per.plot(kind='bar',stacked=True,figsize=(10,8),colormap='tab10') #stacked=True 堆栈条形图
for a,b in zip(range(len(byyear_per)),byyear_per['灭鼠杀虫剂']):plt.text(a,b/2,f'{b*100:.2f}%', ha='center',va='bottom',size=16,color='white')
plt.xlabel('年份')
plt.ylabel('总交易额占比')
plt.title('近三年各类目市场销量占比')
plt.show()
- 查看各类目市场年增幅
# 计算年增幅
byyear0 = byyear.iloc[:,1:-1]
byyear_diff = byyear0.diff().iloc[1:,:].reset_index(drop=True)/byyear0.iloc[:2,:]
byyear_diff.index = ['16-17','17-18']
byyear_diff
灭鼠杀虫剂 | 电蚊香套装 | 盘香灭蟑香蚊香盘 | 蚊香加热器 | 蚊香液 | 蚊香片 | 防霉防蛀片 | |
---|---|---|---|---|---|---|---|
16-17 | 0.394257 | 0.223171 | 0.804603 | 0.787041 | 0.935976 | 0.753650 | 0.253000 |
17-18 | 0.342213 | -0.516111 | 0.367471 | 0.595468 | 0.085262 | 0.056601 | 0.159903 |
# 作图查看
f, ax = plt.subplots(figsize=(10, 8))
sns.lineplot(data=byyear_diff,dashes=False)
plt.title('近三年各类目市场销量年增幅')
plt.xlabel('年份')
plt.ylabel('总交易额年增幅')
plt.show()
市场集中度描述
- 读取对应数据,并且描述数据
df1 = pd.read_excel('top100品牌数据.xlsx')
df1.isna().mean()
品牌 0.0
行业排名 0.0
交易指数 0.0
交易增长幅度 0.0
支付转化指数 0.0
操作 0.0
dtype: float64
df1.head()
品牌 | 行业排名 | 交易指数 | 交易增长幅度 | 支付转化指数 | 操作 | |
---|---|---|---|---|---|---|
0 | PREMISE/拜灭士 | 1 | 530344 | -0.3235 | 1521 | 趋势分析 |
1 | 科凌虫控 | 2 | 474937 | -0.1910 | 1581 | 趋势分析 |
2 | ARS/安速 | 3 | 402372 | -0.2682 | 1448 | 趋势分析 |
3 | 思乐智 | 4 | 360780 | 0.2056 | 841 | 趋势分析 |
4 | 希诺 | 5 | 346656 | -0.1085 | 1865 | 趋势分析 |
df1.describe(include='all')
品牌 | 行业排名 | 交易指数 | 交易增长幅度 | 支付转化指数 | 操作 | |
---|---|---|---|---|---|---|
count | 100 | 100.000000 | 100.000000 | 100.000000 | 100.000000 | 100 |
unique | 100 | NaN | NaN | NaN | NaN | 1 |
top | 罗贝特 | NaN | NaN | NaN | NaN | 趋势分析 |
freq | 1 | NaN | NaN | NaN | NaN | 100 |
mean | NaN | 50.500000 | 147327.560000 | 0.395790 | 1247.870000 | NaN |
std | NaN | 29.011492 | 88177.182391 | 2.038278 | 350.304014 | NaN |
min | NaN | 1.000000 | 65194.000000 | -0.781900 | 577.000000 | NaN |
25% | NaN | 25.750000 | 86129.000000 | -0.266325 | 967.750000 | NaN |
50% | NaN | 50.500000 | 118682.500000 | -0.061800 | 1245.000000 | NaN |
75% | NaN | 75.250000 | 163373.250000 | 0.334350 | 1491.500000 | NaN |
max | NaN | 100.000000 | 530344.000000 | 17.675100 | 2000.000000 | NaN |
- 生成交易指数占比列,用以描述市场份额
df1['交易指数占比'] = df1['交易指数']/df1['交易指数'].sum()
- 图形描述交易指数占比
df1.plot(x='品牌',y='交易指数占比',kind='bar',figsize=(15,4))
plt.show()
-
计算HHI指标并打印
-
Gini:不纯度,基尼系数越大越不纯
-
HHI:市场纯度度量,越大越纯,越纯表明垄断了
HHI = sum(df1['交易指数占比']**2)
print(f'驱虫市场HHI指数:{HHI:.6f}(或{HHI*10000:.2f}),等效公司数:{1/HHI:.2f}')
驱虫市场HHI指数:0.013546(或135.46),等效公司数:73.82
灭鼠杀虫剂市场机会点分析
os.chdir('..')
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
- 这里认为如果一个特征的缺失值占比超过98%,则从全数据的角度看没有意义,直接删
ind1 = df2.isna().mean()>0.98
sum(ind1)
191
df20 = df2.loc[:,~ind1]
- 特征值完全一致的话也没有意义,可以直接删
ind2 = np.array([len(df20[i].unique())==1 for i in df20.columns]) #unique 查看是否有重复值
df21 = df20.loc[:,~ind2]
-
依据逻辑删除不可能会用到的列,例如链接
-
药品登记号后的列缺失值占比高,市场分析意义不大,故都不需要
ind3 = df21.columns.get_loc('药品登记号')
df22 = df21.iloc[:,:ind3]
- 其他逻辑上不用的列
useless = ['时间','链接','主图链接','主图视频链接','页码','排名','宝贝标题','运费','下架时间','旺旺']
df23 = df22.drop(columns=useless)
- 查看清洗后的数据属性
df23.isna().mean()
类别 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
df23.dtypes
类别 object
宝贝ID int64
销量(人数) int64
售价 float64
预估销售额 float64
评价人数 float64
收藏人数 int64
地域 object
店铺类型 object
品牌 object
型号 object
净含量 object
适用对象 object
物理形态 object
dtype: object
- 其中宝贝ID列是整数不合理,这里将类型改为object
df23 = df23.astype({'宝贝ID':'object'})
df23.reset_index(drop=True,inplace=True)
df23.describe()
销量(人数) | 售价 | 预估销售额 | 评价人数 | 收藏人数 | |
---|---|---|---|---|---|
count | 6556.000000 | 6556.000000 | 6.520000e+03 | 6406.000000 | 6556.000000 |
mean | 324.518609 | 39.559527 | 1.032676e+04 | 1942.746800 | 1345.778981 |
std | 3207.470186 | 49.678113 | 7.851193e+04 | 13493.925308 | 6947.250438 |
min | 0.000000 | 0.010000 | 1.000000e-02 | 0.000000 | 0.000000 |
25% | 14.000000 | 13.900000 | 2.307375e+02 | 36.000000 | 33.000000 |
50% | 26.000000 | 25.800000 | 6.741000e+02 | 160.000000 | 133.000000 |
75% | 70.000000 | 48.000000 | 2.288000e+03 | 602.750000 | 496.500000 |
max | 143037.000000 | 618.000000 | 2.672898e+06 | 502295.000000 | 234645.000000 |
df23.head()
类别 | 宝贝ID | 销量(人数) | 售价 | 预估销售额 | 评价人数 | 收藏人数 | 地域 | 店铺类型 | 品牌 | 型号 | 净含量 | 适用对象 | 物理形态 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 杀虫 | 578459866289 | 99 | 29.9 | 2960.1 | 26.0 | 202 | NaN | 天猫 | 拜耳 | 特姆得 | NaN | 蟑螂 | 液体 |
1 | 杀虫 | 548196868239 | 99 | 0.6 | 59.4 | 1330.0 | 242 | 浙江 金华 | 淘宝 | 佰凌 | 180325 | NaN | NaN | NaN |
2 | 杀虫 | 580839295562 | 99 | 98.0 | 9702.0 | 44.0 | 27 | 广东 深圳 | 淘宝 | NaN | NaN | NaN | NaN | NaN |
3 | 杀虫 | 580264662322 | 99 | 6.9 | 683.1 | 24.0 | 26 | 河南 商丘 | 淘宝 | SHURONGCROP/树荣作物 | NaN | 30g | NaN | NaN |
4 | 杀虫 | 44484517973 | 99 | 18.8 | 1861.2 | 121.0 | 133 | 河北 秦皇岛 | 天猫 | Raid/雷达 | 雷达杀虫气雾剂清香 | 600ml | 蟑螂 | 喷雾 |
细化分析
- 进一步分析灭鼠杀虫剂市场中最受欢迎的产品类别,然后细分价格段,再对对应属性进一步分析
产品类别分布
byclass = df23['预估销售额'].groupby(df23['类别']).sum()
byclass
类别
杀虫 8207628.10
灭鼠 25686011.99
虱 4512886.01
螨 10886752.88
蟑螂 18037223.68
Name: 预估销售额, dtype: float64
byclass.plot.barh()
<matplotlib.axes._subplots.AxesSubplot at 0x1536ed24518>
byclass.plot.pie(autopct='%.2f')
<matplotlib.axes._subplots.AxesSubplot at 0x1536f592e48>
- 可以看出重点需要研究的市场是灭鼠和蟑螂,我们选择灭鼠
灭鼠类别分析
- 选择灭鼠数据
df24 = df23[df23['类别']=='灭鼠']
- 依价格划分
df24['售价'].describe()
count 1523.000000
mean 49.018910
std 69.762057
min 0.010000
25% 15.800000
50% 27.700000
75% 52.600000
max 498.000000
Name: 售价, dtype: float64
df24['售价'].plot.hist()
<matplotlib.axes._subplots.AxesSubplot at 0x15374a7d668>
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()
C:\Programs\Anaconda3\lib\site-packages\ipykernel_launcher.py:4: 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 insteadSee the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy0_50 1138
50_100 242
100_150 62
150_200 35
300以上 28
250_300 9
200_250 9
Name: 价格区间, dtype: int64
- 计算各价格区间的销售额,销售额占比,宝贝数,宝贝数占比,竞争度(单宝贝平均销售额的反面)
def byfun(df,by,sort='单宝贝平均销售额'):byc = pd.DataFrame(df.groupby(by).sum()).loc[:,['预估销售额']]byc['销售额占比'] = byc['预估销售额']/byc['预估销售额'].sum()byc['宝贝数'] = df.groupby(by).nunique()['宝贝ID']byc['宝贝数占比'] = byc['宝贝数']/byc['宝贝数'].sum()byc['单宝贝平均销售额'] = byc['预估销售额']/byc['宝贝数']byc['相对竞争度'] = 1 - (byc['单宝贝平均销售额']-byc['单宝贝平均销售额'].min())/(byc['单宝贝平均销售额'].max()-byc['单宝贝平均销售额'].min())if sort: byc.sort_values(sort,ascending=False,inplace=True)return byc
byprice1 = byfun(df24,'价格区间')
byprice1
预估销售额 | 销售额占比 | 宝贝数 | 宝贝数占比 | 单宝贝平均销售额 | 相对竞争度 | |
---|---|---|---|---|---|---|
价格区间 | ||||||
200_250 | 2743758.00 | 0.106819 | 7 | 0.006173 | 391965.428571 | 0.000000 |
100_150 | 2758086.29 | 0.107377 | 46 | 0.040564 | 59958.397609 | 0.887218 |
300以上 | 819468.00 | 0.031903 | 18 | 0.015873 | 45526.000000 | 0.925786 |
250_300 | 237740.00 | 0.009256 | 9 | 0.007937 | 26415.555556 | 0.976854 |
150_200 | 629813.00 | 0.024520 | 28 | 0.024691 | 22493.321429 | 0.987336 |
50_100 | 3335060.19 | 0.129840 | 172 | 0.151675 | 19389.884826 | 0.995629 |
0_50 | 15162086.51 | 0.590286 | 854 | 0.753086 | 17754.199660 | 1.000000 |
- 定义制图函数
def mcplot(bydf,figsize=(10,4)):ax = bydf.plot(y='相对竞争度',linestyle='-',marker='o',figsize=figsize)bydf.plot(y='销售额占比',kind='bar',alpha=0.8,color='wheat',ax=ax)plt.show()
mcplot(byprice1)
- 结果依单宝贝销售额降序,即依竞争度升序
- 可见0-50容量大,竞争大,大容量市场(对比的是50-100,容量小,竞争稍小)
- 200-250,竞争小,做高价市场的优先选择,属于机会点
0-50细分价格市场分析
- 选择0-50细分价格市场
df25 = df24[df24['价格区间']=='0_50']
- 进一步细分价格区间
df25['售价'].plot.hist()
<matplotlib.axes._subplots.AxesSubplot at 0x15374802e10>
bins1 = [0,10,20,30,40,50]
labels1 = ['0_10','10_20','20_30','30_40','40_50']
df25['价格子区间'] = pd.cut(df25['售价'],bins1,labels=labels1,include_lowest=True)
C:\Programs\Anaconda3\lib\site-packages\ipykernel_launcher.py:3: 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 insteadSee the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
byprice2 = byfun(df25,'价格子区间')
byprice2
预估销售额 | 销售额占比 | 宝贝数 | 宝贝数占比 | 单宝贝平均销售额 | 相对竞争度 | |
---|---|---|---|---|---|---|
价格子区间 | ||||||
10_20 | 8102634.14 | 0.534401 | 272 | 0.318501 | 29789.096103 | 0.000000 |
20_30 | 4969620.92 | 0.327766 | 278 | 0.325527 | 17876.334245 | 0.411674 |
40_50 | 707568.49 | 0.046667 | 40 | 0.046838 | 17689.212250 | 0.418141 |
30_40 | 1240874.19 | 0.081841 | 98 | 0.114754 | 12661.981531 | 0.591869 |
0_10 | 141388.77 | 0.009325 | 166 | 0.194379 | 851.739578 | 1.000000 |
mcplot(byprice2)
- 可见10-20竞争度低,容量大,优选,20-30也不错
- 200-250细分市场也是同样的分析思路
细分市场的其他属性分析
- 查看其他属性的市场占有率和竞争
df25.isna().mean()
类别 0.000000
宝贝ID 0.000000
销量(人数) 0.000000
售价 0.000000
预估销售额 0.007030
评价人数 0.061511
收藏人数 0.000000
地域 0.501757
店铺类型 0.000000
品牌 0.152021
型号 0.350615
净含量 0.696837
适用对象 0.120387
物理形态 0.202109
价格区间 0.000000
价格子区间 0.000000
dtype: float64
df25.head()
类别 | 宝贝ID | 销量(人数) | 售价 | 预估销售额 | 评价人数 | 收藏人数 | 地域 | 店铺类型 | 品牌 | 型号 | 净含量 | 适用对象 | 物理形态 | 价格区间 | 价格子区间 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2000 | 灭鼠 | 566054780243 | 9976 | 26.8 | 267356.8 | 11901.0 | 11596 | 广东 韶关 | 天猫 | 优璇福 | MT007 | NaN | 老鼠 | 胶水 | 0_50 | 20_30 |
2001 | 灭鼠 | 566054780243 | 9976 | 26.8 | 267356.8 | NaN | 11596 | 广东 深圳 | 天猫 | 优璇福 | MT007 | NaN | 老鼠 | 胶水 | 0_50 | 20_30 |
2002 | 灭鼠 | 572115448996 | 9945 | 9.9 | 98455.5 | 26442.0 | 3569 | NaN | 淘宝 | 创驰 | 21/32 | NaN | 老鼠 | 固体 | 0_50 | 0_10 |
2003 | 灭鼠 | 39868408322 | 99 | 29.9 | 2960.1 | 20.0 | 352 | 河南 南阳 | 天猫 | 云杀 | 粘鼠板 | NaN | 老鼠 | 固体 | 0_50 | 20_30 |
2004 | 灭鼠 | 520282897220 | 99 | 39.9 | 3950.1 | 559.0 | 1250 | NaN | 淘宝 | 得硕 | NaN | g | 老鼠 | 固体 | 0_50 | 30_40 |
- 店铺类型
bystore = byfun(df25,'店铺类型')
bystore
预估销售额 | 销售额占比 | 宝贝数 | 宝贝数占比 | 单宝贝平均销售额 | 相对竞争度 | |
---|---|---|---|---|---|---|
店铺类型 | ||||||
天猫 | 14019740.58 | 0.924658 | 220 | 0.257611 | 63726.093545 | 0.0 |
淘宝 | 1142345.93 | 0.075342 | 634 | 0.742389 | 1801.807461 | 1.0 |
mcplot(bystore)
-
可见天猫各个方面都优于淘宝
-
型号
bytype = byfun(df25,'型号',sort='预估销售额')
- 销售额排名前5%的型号,这里认为销售额靠前才更倾向于大众产品
bytype1 = bytype[bytype['预估销售额']>=bytype['预估销售额'].quantile(0.95)]
bytype1
预估销售额 | 销售额占比 | 宝贝数 | 宝贝数占比 | 单宝贝平均销售额 | 相对竞争度 | |
---|---|---|---|---|---|---|
型号 | ||||||
超强力粘鼠板 | 2120129.32 | 0.142219 | 12 | 0.021661 | 176677.443333 | 0.669585 |
粘鼠板老鼠贴 | 2051699.02 | 0.137629 | 7 | 0.012635 | 293099.860000 | 0.451856 |
0005 | 927590.70 | 0.062223 | 2 | 0.003610 | 463795.350000 | 0.132628 |
驰天粘鼠板 | 876606.33 | 0.058803 | 4 | 0.007220 | 219151.582500 | 0.590151 |
QL-866 | 759629.30 | 0.050956 | 3 | 0.005415 | 253209.766667 | 0.526457 |
MT007 | 534713.60 | 0.035869 | 1 | 0.001805 | 534713.600000 | 0.000000 |
强力粘鼠魔毯 | 496974.60 | 0.033337 | 1 | 0.001805 | 496974.600000 | 0.070578 |
拜灭士5g | 420982.40 | 0.028240 | 1 | 0.001805 | 420982.400000 | 0.212696 |
CQL-1 | 391271.40 | 0.026247 | 1 | 0.001805 | 391271.400000 | 0.268260 |
qb-031 | 368146.74 | 0.024695 | 6 | 0.010830 | 61357.790000 | 0.885251 |
希诺粘鼠板 | 362077.20 | 0.024288 | 1 | 0.001805 | 362077.200000 | 0.322858 |
祛螨包 | 320779.80 | 0.021518 | 1 | 0.001805 | 320779.800000 | 0.400090 |
粘鼠板 | 285096.86 | 0.019124 | 21 | 0.037906 | 13576.040952 | 0.974611 |
A1009 | 265719.20 | 0.017825 | 1 | 0.001805 | 265719.200000 | 0.503063 |
A1001 | 225685.20 | 0.015139 | 1 | 0.001805 | 225685.200000 | 0.577933 |
新款老鼠板 | 222272.40 | 0.014910 | 1 | 0.001805 | 222272.400000 | 0.584315 |
BK300(博克二代) | 213570.00 | 0.014326 | 1 | 0.001805 | 213570.000000 | 0.600590 |
虫虫祛螨包 | 209308.20 | 0.014040 | 1 | 0.001805 | 209308.200000 | 0.608560 |
老鼠贴 | 209189.40 | 0.014033 | 4 | 0.007220 | 52297.350000 | 0.902196 |
mcplot(bytype1)
-
可见虽然粘鼠板市场份额普遍较高,但是0005在竞争度上有明显的优势
-
物理形态
byshape = byfun(df25,['物理形态'])
byshape
预估销售额 | 销售额占比 | 宝贝数 | 宝贝数占比 | 单宝贝平均销售额 | 相对竞争度 | |
---|---|---|---|---|---|---|
物理形态 | ||||||
胶水 | 534713.60 | 0.040706 | 1 | 0.001490 | 534713.600000 | 0.000000 |
喷雾 | 275280.33 | 0.020956 | 6 | 0.008942 | 45880.055000 | 0.914433 |
粉状 | 322931.28 | 0.024584 | 9 | 0.013413 | 35881.253333 | 0.933137 |
固体 | 11381498.83 | 0.866443 | 583 | 0.868852 | 19522.296449 | 0.963738 |
液体 | 354235.50 | 0.026967 | 22 | 0.032787 | 16101.613636 | 0.970137 |
啫喱 | 256687.10 | 0.019541 | 38 | 0.056632 | 6754.923684 | 0.987622 |
5个1元硬币厚硬板 | 5226.00 | 0.000398 | 1 | 0.001490 | 5226.000000 | 0.990482 |
气体 | 1357.18 | 0.000103 | 1 | 0.001490 | 1357.180000 | 0.997719 |
油状 | 2341.60 | 0.000178 | 2 | 0.002981 | 1170.800000 | 0.998068 |
胶水纸板 | 358.20 | 0.000027 | 1 | 0.001490 | 358.200000 | 0.999588 |
声波 | 328.90 | 0.000025 | 1 | 0.001490 | 328.900000 | 0.999642 |
粘胶 | 235.20 | 0.000018 | 1 | 0.001490 | 235.200000 | 0.999818 |
粘鼠板 | 413.90 | 0.000032 | 3 | 0.004471 | 137.966667 | 1.000000 |
胶状 | 275.50 | 0.000021 | 2 | 0.002981 | 137.750000 | 1.000000 |
mcplot(byshape)
-
可见市场份额最高的是固体,竞争度也偏高,而胶水虽然竞争度低,但是市场份额较低
-
基本可以认为常见的物理形态就是固体
-
物理形态,净含量
byshape_con = byfun(df25,['物理形态','净含量'],['物理形态','预估销售额'])
byshape_con
预估销售额 | 销售额占比 | 宝贝数 | 宝贝数占比 | 单宝贝平均销售额 | 相对竞争度 | ||
---|---|---|---|---|---|---|---|
物理形态 | 净含量 | ||||||
胶水纸板 | 5片\套 | 358.20 | 8.961336e-05 | 1 | 0.004098 | 358.200000 | 0.998289 |
粘鼠板 | 200g | 207.00 | 5.178661e-05 | 1 | 0.004098 | 207.000000 | 0.999011 |
30G | 193.70 | 4.845926e-05 | 1 | 0.004098 | 193.700000 | 0.999075 | |
粉状 | 50g | 1105.00 | 2.764454e-04 | 2 | 0.008197 | 552.500000 | 0.997360 |
90g | 179.40 | 4.488173e-05 | 1 | 0.004098 | 179.400000 | 0.999143 | |
液体 | 500g | 165396.00 | 4.137825e-02 | 1 | 0.004098 | 165396.000000 | 0.209797 |
450ML | 51494.78 | 1.288280e-02 | 2 | 0.008197 | 25747.390000 | 0.876988 | |
450ml | 37570.20 | 9.399195e-03 | 4 | 0.016393 | 9392.550000 | 0.955126 | |
500ml | 17920.40 | 4.483270e-03 | 2 | 0.008197 | 8960.200000 | 0.957191 | |
450 | 180.00 | 4.503184e-05 | 1 | 0.004098 | 180.000000 | 0.999140 | |
100ml | 111.86 | 2.798479e-05 | 1 | 0.004098 | 111.860000 | 0.999466 | |
气体 | 30gm | 1357.18 | 3.395351e-04 | 1 | 0.004098 | 1357.180000 | 0.993516 |
固体 | 1 | 2122422.34 | 5.309810e-01 | 17 | 0.069672 | 124848.372941 | 0.403519 |
20g | 243594.06 | 6.094160e-02 | 3 | 0.012295 | 81198.020000 | 0.612065 | |
118.5g | 209308.20 | 5.236407e-02 | 1 | 0.004098 | 209308.200000 | 0.000000 | |
2.2KG | 140739.32 | 3.520972e-02 | 2 | 0.008197 | 70369.660000 | 0.663799 | |
6个装 | 139575.50 | 3.491856e-02 | 1 | 0.004098 | 139575.500000 | 0.333158 | |
0.17KG | 133950.00 | 3.351119e-02 | 1 | 0.004098 | 133950.000000 | 0.360035 | |
12粒 | 36313.20 | 9.084723e-03 | 1 | 0.004098 | 36313.200000 | 0.826508 | |
170g | 27011.40 | 6.757628e-03 | 3 | 0.012295 | 9003.800000 | 0.956983 | |
020 | 23078.08 | 5.773602e-03 | 4 | 0.016393 | 5769.520000 | 0.972435 | |
610克 | 13132.80 | 3.285523e-03 | 1 | 0.004098 | 13132.800000 | 0.937256 | |
4片 | 12960.00 | 3.242292e-03 | 1 | 0.004098 | 12960.000000 | 0.938082 | |
200克 | 9943.20 | 2.487559e-03 | 2 | 0.008197 | 4971.600000 | 0.976247 | |
720g | 9412.20 | 2.354715e-03 | 1 | 0.004098 | 9412.200000 | 0.955032 | |
170 | 9177.60 | 2.296023e-03 | 1 | 0.004098 | 9177.600000 | 0.956153 | |
40G胶 | 8977.50 | 2.245963e-03 | 1 | 0.004098 | 8977.500000 | 0.957109 | |
2303g | 7810.00 | 1.953881e-03 | 1 | 0.004098 | 7810.000000 | 0.962687 | |
10张 | 7637.42 | 1.910706e-03 | 4 | 0.016393 | 1909.355000 | 0.990878 | |
60克胶水 | 7040.00 | 1.761245e-03 | 1 | 0.004098 | 7040.000000 | 0.966365 | |
... | ... | ... | ... | ... | ... | ... | |
1n | 16.20 | 4.052865e-06 | 1 | 0.004098 | 16.200000 | 0.999923 | |
0.082 | 16.00 | 4.002830e-06 | 1 | 0.004098 | 16.000000 | 0.999924 | |
25克 | 12.90 | 3.227282e-06 | 1 | 0.004098 | 12.900000 | 0.999938 | |
120g | 11.00 | 2.751946e-06 | 1 | 0.004098 | 11.000000 | 0.999947 | |
个 | 10.00 | 2.501769e-06 | 1 | 0.004098 | 10.000000 | 0.999952 | |
陶土 | 8.80 | 2.201557e-06 | 1 | 0.004098 | 8.800000 | 0.999958 | |
10克胶水 | 7.20 | 1.801274e-06 | 1 | 0.004098 | 7.200000 | 0.999966 | |
0.08kg | 7.04 | 1.761245e-06 | 1 | 0.004098 | 7.040000 | 0.999966 | |
110g | 3.32 | 8.305872e-07 | 1 | 0.004098 | 3.320000 | 0.999984 | |
0.02 | 1.50 | 3.752653e-07 | 1 | 0.004098 | 1.500000 | 0.999993 | |
1kg | 0.00 | 0.000000e+00 | 1 | 0.004098 | 0.000000 | 1.000000 | |
喷雾 | 600ml | 274808.80 | 6.875081e-02 | 2 | 0.008197 | 137404.400000 | 0.343531 |
500ML | 179.49 | 4.490425e-05 | 2 | 0.008197 | 89.745000 | 0.999571 | |
450ml | 160.00 | 4.002830e-05 | 1 | 0.004098 | 160.000000 | 0.999236 | |
500ml | 132.04 | 3.303335e-05 | 1 | 0.004098 | 132.040000 | 0.999369 | |
啫喱 | 12g | 135912.00 | 3.400204e-02 | 1 | 0.004098 | 135912.000000 | 0.350661 |
10克/支 | 40650.00 | 1.016969e-02 | 1 | 0.004098 | 40650.000000 | 0.805789 | |
10g | 4452.80 | 1.113988e-03 | 2 | 0.008197 | 2226.400000 | 0.989363 | |
4g | 2851.20 | 7.133043e-04 | 1 | 0.004098 | 2851.200000 | 0.986378 | |
20g | 2600.00 | 6.504599e-04 | 1 | 0.004098 | 2600.000000 | 0.987578 | |
150 | 582.50 | 1.457280e-04 | 1 | 0.004098 | 582.500000 | 0.997217 | |
50克 | 336.00 | 8.405943e-05 | 1 | 0.004098 | 336.000000 | 0.998395 | |
45g | 112.00 | 2.801981e-05 | 1 | 0.004098 | 112.000000 | 0.999465 | |
0.18 | 105.00 | 2.626857e-05 | 1 | 0.004098 | 105.000000 | 0.999498 | |
40g | 39.50 | 9.881987e-06 | 1 | 0.004098 | 39.500000 | 0.999811 | |
240g | 33.00 | 8.255837e-06 | 1 | 0.004098 | 33.000000 | 0.999842 | |
400g | 29.90 | 7.480289e-06 | 1 | 0.004098 | 29.900000 | 0.999857 | |
30g4 | 28.14 | 7.039977e-06 | 1 | 0.004098 | 28.140000 | 0.999866 | |
40克 | 19.50 | 4.878449e-06 | 1 | 0.004098 | 19.500000 | 0.999907 | |
约50克 | 5.40 | 1.350955e-06 | 1 | 0.004098 | 5.400000 | 0.999974 |
160 rows × 6 columns
mcplot(byshape_con,(30,10))
- 可见当物理形态为固体,净含量为1时,潜力较大
竞争分析
os.chdir('..')
os.chdir('./竞争数据')
品类分布(占比)
os.chdir('./商品销售数据')
- 加载数据
filenames2 = glob.glob('*.xlsx')
filenames2
['安速家居近30天销售数据.xlsx', '拜耳近30天销售数据.xlsx', '科凌虫控旗舰店近30天销售数据.xlsx']
- 查看数据
def load_xlsx1(filename):df = pd.read_excel(filename)useless = ['序号','店铺名称','主图链接','商品链接','商品名称']df.drop(columns=useless,inplace=True)return df
df3bai = load_xlsx1(filenames2[1])
df3bai.head()
商品ID | 商品原价 | 商品售价 | 30天销售量 | 总销量 | 类目 | 物理形态 | 型号 | 净含量 | 使用对象 | 销售额 | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 527604730327 | 109.0 | 39.9 | 43542 | 3023212 | 灭鼠/杀虫剂 | 啫喱 | 5g | 5g | 蟑螂 | 1737325.8 |
1 | 535731556857 | 199.0 | 59.9 | 4860 | 285440 | 灭鼠/杀虫剂 | 啫喱 | 拜灭易 | 12g | 蚂蚁 | 291114.0 |
2 | 530229854741 | 199.0 | 89.9 | 838 | 70516 | 灭鼠/杀虫剂 | 液体 | 特密得100ml | 100ml | 白蚁 | 75336.2 |
3 | 569753894890 | 198.0 | 79.9 | 1487 | 19602 | 灭鼠/杀虫剂 | 啫喱 | 拜灭士5g-除敌 | 5g+5ml*4 | 蟑螂 | 118811.3 |
4 | 549862604116 | 109.0 | 39.9 | 1641 | 155203 | 灭鼠/杀虫剂 | 液体 | 除敌 | 20ml | 杀虫剂 | 65475.9 |
df3an = load_xlsx1(filenames2[0])
df3an.head()
商品ID | 商品原价 | 商品售价 | 30天销售量 | 总销量 | 类目 | 适用对象 | 30天销售额 | |
---|---|---|---|---|---|---|---|---|
0 | 527032566392 | 60.0 | 54.4 | 2540 | 236321 | 灭鼠/杀虫剂 | 蟑螂 | 138176.0 |
1 | 534230487113 | 32.0 | 29.9 | 883 | 10498 | 灭鼠/杀虫剂 | 蟑螂 | 26401.7 |
2 | 527797679530 | 33.4 | 29.9 | 1073 | 117070 | 灭鼠/杀虫剂 | 蟑螂 | 32082.7 |
3 | 527113108079 | 48.0 | 45.5 | 471 | 55672 | 灭鼠/杀虫剂 | 蟑螂 | 21430.5 |
4 | 531350777813 | 58.0 | 48.0 | 566 | 19705 | 灭鼠/杀虫剂 | 蟑螂 | 27168.0 |
df3kl = load_xlsx1(filenames2[2])
df3kl.head()
商品ID | 商品原价 | 商品售价 | 30天销售量 | 总销量 | 类目 | 适用对象 | 30天销售额 | |
---|---|---|---|---|---|---|---|---|
0 | 541418255867 | 49.9 | 16.8 | 76608 | 3175991 | 灭鼠/杀虫剂 | 蟑螂 | 1287014.4 |
1 | 528722144927 | 39.0 | 19.8 | 5852 | 174989 | 灭鼠/杀虫剂 | 蟑螂 | 115869.6 |
2 | 545526161662 | 49.9 | 39.0 | 2497 | 74352 | 灭鼠/杀虫剂 | 蟑螂 | 97383.0 |
3 | 536261470312 | 49.0 | 29.8 | 540 | 76572 | 灭鼠/杀虫剂 | 蛾 | 16092.0 |
4 | 553350699341 | 48.9 | 13.8 | 6408 | 324171 | 灭鼠/杀虫剂 | 鼠 | 88430.4 |
类目
bai31 = df3bai.groupby('类目').sum()
bai31
商品ID | 商品原价 | 商品售价 | 30天销售量 | 总销量 | 销售额 | |
---|---|---|---|---|---|---|
类目 | ||||||
灭鼠/杀虫剂 | 8286108792066 | 2623.0 | 1195.0 | 59185 | 3720411 | 2673315.2 |
an31 = df3an.groupby('类目').sum()
an31
商品ID | 商品原价 | 商品售价 | 30天销售量 | 总销量 | 30天销售额 | |
---|---|---|---|---|---|---|
类目 | ||||||
漱口水 | 1130081741597 | 208.0 | 149.8 | 127 | 2710 | 9137.3 |
灭鼠/杀虫剂 | 15853551883006 | 1650.3 | 1196.7 | 11082 | 564638 | 494539.3 |
空气芳香剂 | 1620098374783 | 196.8 | 141.9 | 118 | 7065 | 4668.6 |
空调清洁剂 | 1056404562798 | 122.9 | 113.0 | 151 | 32939 | 10420.9 |
蚊香液 | 3878968356851 | 565.0 | 344.6 | 573 | 42000 | 24343.6 |
蚊香片 | 1129949034942 | 157.0 | 81.0 | 1 | 230 | 45.0 |
kl31 = df3kl.groupby('类目').sum()
kl31
商品ID | 商品原价 | 商品售价 | 30天销售量 | 总销量 | 30天销售额 | |
---|---|---|---|---|---|---|
类目 | ||||||
其它园艺用品 | 552695315776 | 39.9 | 26.0 | 880 | 41667 | 22880.0 |
灭鼠/杀虫剂 | 13109439326249 | 1728.4 | 817.2 | 163833 | 4416228 | 3734597.0 |
灭鼠笼/捕鼠器 | 1112465425997 | 88.9 | 42.7 | 2315 | 46760 | 62293.0 |
- 作图查看占比的不同
fig, axes = plt.subplots(1, 3, figsize=(10, 6))
ax = axes[0]
bai31['销售额'].plot.pie(autopct='%.f',title='拜耳',startangle=30,ax=ax)
ax.set_ylabel('')
ax = axes[1]
an31['30天销售额'].plot.pie(autopct='%.f',title='安速',startangle=60,ax=ax)
ax.set_ylabel('')
ax = axes[2]
kl31['30天销售额'].plot.pie(autopct='%.f',title='科凌虫控',startangle=90,ax=ax)
ax.set_ylabel('')
plt.show()
- 可见拜耳只有一个市场,其他的有不同市场,但主要市场都是灭鼠杀虫剂
适用对象
bai32 = df3bai.groupby('使用对象').sum()
bai32
商品ID | 商品原价 | 商品售价 | 30天销售量 | 总销量 | 销售额 | |
---|---|---|---|---|---|---|
使用对象 | ||||||
上门服务 | 578090143145 | 199.0 | 99.0 | 74 | 308 | 7326.0 |
杀虫剂 | 1074833731154 | 208.0 | 79.8 | 2593 | 187382 | 103460.7 |
白蚁 | 530229854741 | 199.0 | 89.9 | 838 | 70516 | 75336.2 |
蚂蚁 | 1106313745903 | 448.0 | 173.9 | 4989 | 286942 | 305820.0 |
蟑螂 | 4996641317123 | 1569.0 | 752.4 | 50691 | 3175263 | 2181372.3 |
an32 = df3an.groupby('适用对象').sum()
an32
商品ID | 商品原价 | 商品售价 | 30天销售量 | 总销量 | 30天销售额 | |
---|---|---|---|---|---|---|
适用对象 | ||||||
杀虫剂 | 4366320607112 | 435.7 | 349.6 | 755 | 19416 | 34687.5 |
漱口水 | 1130081741597 | 208.0 | 149.8 | 127 | 2710 | 9137.3 |
空气芳香剂 | 1620098374783 | 196.8 | 141.9 | 118 | 7065 | 4668.6 |
空调清洁剂 | 1056404562798 | 122.9 | 113.0 | 151 | 32939 | 10420.9 |
蚂蚁 | 563628133715 | 29.0 | 22.2 | 53 | 833 | 1176.6 |
蚊 | 5008917391793 | 722.0 | 425.6 | 574 | 42230 | 24388.6 |
蝇 | 564993565252 | 48.0 | 24.8 | 515 | 16551 | 12772.0 |
螨 | 2820972369214 | 399.0 | 242.6 | 3302 | 19587 | 164381.3 |
蟑螂 | 6446879299188 | 654.0 | 481.3 | 6178 | 500064 | 268585.3 |
鼠 | 1090757908525 | 84.6 | 76.2 | 279 | 8187 | 12936.6 |
kl32 = df3kl.groupby('适用对象').sum()
kl32
商品ID | 商品原价 | 商品售价 | 30天销售量 | 总销量 | 30天销售额 | |
---|---|---|---|---|---|---|
适用对象 | ||||||
其它园艺用品 | 552695315776 | 39.9 | 26.0 | 880 | 41667 | 22880.0 |
虫 | 1606589035658 | 247.6 | 118.6 | 37 | 6596 | 2035.0 |
虱 | 559335827678 | 65.0 | 25.1 | 7395 | 80838 | 185614.5 |
蛾 | 1074897437670 | 77.0 | 44.3 | 575 | 78354 | 16599.5 |
螨 | 1143807512213 | 198.0 | 78.8 | 36037 | 145055 | 1114222.4 |
蟑螂 | 2193692130180 | 237.8 | 105.5 | 85785 | 3427031 | 1525024.2 |
鼠 | 7643582808847 | 991.9 | 487.6 | 36319 | 725114 | 953394.4 |
- 作图
fig, axes = plt.subplots(1, 3, figsize=(10, 6))
ax = axes[0]
bai32['销售额'].plot.pie(autopct='%.f',title='拜耳',startangle=30,ax=ax)
ax.set_ylabel('')
ax = axes[1]
an32['30天销售额'].plot.pie(autopct='%.f',title='安速',startangle=60,ax=ax)
ax.set_ylabel('')
ax = axes[2]
kl32['30天销售额'].plot.pie(autopct='%.f',title='科凌虫控',startangle=90,ax=ax)
ax.set_ylabel('')
plt.show()
- 拜耳的主要对象是蟑螂,而另外两家除此之外还有螨,鼠
- 而从之前的分析看灭鼠和蟑螂的整体市场份额都大
- 应该开拓新市场,尤其是灭鼠,也考察其他两家都开拓的螨市场
产品结构分析
os.chdir('..')
os.chdir('./商品交易数据')
- 拜耳,安速,科凌虫控的数据分开读取分析
- 主要分析产品结构
- 由于分析过程相似,故都封装成函数方便分析
filenames3 = glob.glob('*.xlsx')
filenames3
['安速全店商品交易数据.xlsx', '拜耳全店商品交易数据.xlsx', '科凌虫控全店商品交易数据.xlsx']
拜耳
- 读数据
df4bai = pd.read_excel(filenames3[1])
df4bai.head()
品牌 | 时间 | 商品 | 行业排名 | 交易指数 | 交易增长幅度 | 支付转化指数 | 操作 | 交易金额 | |
---|---|---|---|---|---|---|---|---|---|
0 | 拜耳 | 2018-07-01 | 德国拜耳拜灭士蟑螂药一窝端杀蟑胶饵灭蟑螂屋无毒克星家用全窝端 | 1 | 583483 | 0.0350 | 1500 | 趋势分析 | 9354158.37 |
1 | 拜耳 | 2018-07-01 | 进口蟑螂药一窝端德国拜耳拜灭士强力杀蟑胶饵蟑螂屋克星家用全窝 | 6 | 278542 | 0.1258 | 1194 | 趋势分析 | 2470202.91 |
2 | 拜耳 | 2018-07-01 | 德国拜耳进口蚂蚁药拜灭易灭蚁饵剂除杀蚂蚁杀虫剂家用室内全窝端 | 11 | 212329 | 0.5070 | 1328 | 趋势分析 | 1518114.06 |
3 | 拜耳 | 2018-07-01 | 进口蟑螂药德国拜耳拜灭士灭杀蟑胶饵剂粉屋克星全窝端12g家用 | 44 | 107697 | -0.2044 | 1117 | 趋势分析 | 451897.06 |
4 | 拜耳 | 2018-07-01 | 德国拜耳 除敌跳蚤杀虫剂家用灭蟑螂药虱子杀潮虫臭虫除虫剂喷雾 | 45 | 105901 | -0.2134 | 936 | 趋势分析 | 438583.74 |
df4bai.info()
df4bai['商品'].value_counts().count()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 142 entries, 0 to 141
Data columns (total 9 columns):
品牌 142 non-null object
时间 142 non-null datetime64[ns]
商品 142 non-null object
行业排名 142 non-null int64
交易指数 142 non-null int64
交易增长幅度 142 non-null float64
支付转化指数 142 non-null int64
操作 142 non-null object
交易金额 142 non-null float64
dtypes: datetime64[ns](1), float64(2), int64(3), object(3)
memory usage: 10.1+ KB44
-
五个月的数据,每个商品至多五个月都有,至少有一个月,故需要对商品分类汇总
-
自定义分类汇总函数
def byproduct(df):dfb = df.groupby('商品').mean().loc[:,['交易增长幅度']]dfb['交易金额'] = df.groupby('商品').sum()['交易金额']dfb['交易金额占比'] = dfb['交易金额']/dfb['交易金额'].sum()dfb['商品个数'] = df.groupby('商品').count()['交易金额']dfb.reset_index(inplace=True)return dfb
bai4 = byproduct(df4bai)
bai4.head(5)
商品 | 交易增长幅度 | 交易金额 | 交易金额占比 | 商品个数 | |
---|---|---|---|---|---|
0 | 17年德国拜耳进口蚂蚁药拜灭易灭蚁饵剂粉除杀蚂蚁杀虫剂全窝端 | -0.247600 | 42340.55 | 0.000523 | 1 |
1 | 德国原装进口拜耳蟑螂药全窝端拜灭士5g+12g杀蟑胶饵剂粉屋捕捉器 | -0.120333 | 197377.17 | 0.002439 | 3 |
2 | 德国拜耳 除敌跳蚤杀虫剂家用灭蟑螂药虱子杀潮虫臭虫除虫剂喷雾 | -0.221080 | 1394780.59 | 0.017232 | 5 |
3 | 德国拜耳丁香医生限量款拜灭士加量家用蟑螂全窝端蟑螂药3支装 | 1.279300 | 26742.75 | 0.000330 | 1 |
4 | 德国拜耳上门除灭鼠灭白蚁蟑螂蚊子跳蚤苍蝇上海地区灭虫按件拍下 | 2.439300 | 28969.28 | 0.000358 | 1 |
bai4.describe()
交易增长幅度 | 交易金额 | 交易金额占比 | 商品个数 | |
---|---|---|---|---|
count | 44.000000 | 4.400000e+01 | 44.000000 | 44.000000 |
mean | 25.539933 | 1.839560e+06 | 0.022727 | 3.227273 |
std | 155.083825 | 6.321050e+06 | 0.078095 | 1.668639 |
min | -0.292100 | 2.255362e+04 | 0.000279 | 1.000000 |
25% | -0.061040 | 6.828508e+04 | 0.000844 | 1.750000 |
50% | 0.109000 | 2.061879e+05 | 0.002547 | 3.000000 |
75% | 1.287410 | 7.673291e+05 | 0.009480 | 5.000000 |
max | 1030.000000 | 4.010385e+07 | 0.495473 | 5.000000 |
-
其中交易增长幅度可表示市场发展率,交易金额占比可表示市场份额
-
这两个指标的最大值都远大于3/4分位数,认为是异常值,考虑引入盖帽法,方便后续作图
-
定义盖帽法函数(只考虑右边的尾巴盖帽)
def block(x):qu = x.quantile(.9)out = x.mask(x>qu,qu)return(out)
- 定义分别对两个指标盖帽的函数
def block2(df):df1 = df.copy()df1['交易增长幅度'] = block(df1['交易增长幅度'])df1['交易金额占比'] = block(df1['交易金额占比'])return df1
bai41 = block2(bai4)
bai41.describe()
交易增长幅度 | 交易金额 | 交易金额占比 | 商品个数 | |
---|---|---|---|---|
count | 44.000000 | 4.400000e+01 | 44.000000 | 44.000000 |
mean | 1.171668 | 1.839560e+06 | 0.007699 | 3.227273 |
std | 2.212537 | 6.321050e+06 | 0.010333 | 1.668639 |
min | -0.292100 | 2.255362e+04 | 0.000279 | 1.000000 |
25% | -0.061040 | 6.828508e+04 | 0.000844 | 1.750000 |
50% | 0.109000 | 2.061879e+05 | 0.002547 | 3.000000 |
75% | 1.287410 | 7.673291e+05 | 0.009480 | 5.000000 |
max | 6.717030 | 4.010385e+07 | 0.031863 | 5.000000 |
-
可见盖帽后指标不那么异常,方便作图观察
-
定义作图函数
def plotBOG(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()
- 以平均值作为波士顿矩阵的分隔线
plotBOG(bai41,mean=True)
- 以中位数作为波士顿矩阵的分隔线
plotBOG(bai41)
-
可以根据实际的业务选择区间的分隔线,由行业经验确定(如果认为增幅0.1在行业里算高,就可以作为分隔线)
-
明星产品和奶牛产品的商品个数普遍比较多
-
没有突出的明星产品,但是有快进入明星产品的问题产品
-
查看各个产品结构的产品(除了瘦狗)
-
各种产品排序,关心点不同,排序依据不同
- 明星产品:都关心,依什么排序都可以,产品一般不多
- 奶牛产品:老爆款,关心市场份额,依交易金额占比排序
- 问题产品,潜力款,关心市场增长率,依交易增长幅度排序
-
这里要查看实际数据,故使用盖帽前数据
def extractBOG(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
baistar,baicow,baique = extractBOG(bai4)
baistar1,baicow1,baique1 = extractBOG(bai4,by='交易增长幅度')
- 拜耳明星产品
baistar
商品 | 交易增长幅度 | 交易金额 | 交易金额占比 | 商品个数 | |
---|---|---|---|---|---|
6 | 德国拜耳拜灭士5g+除敌5ml*4支进口蟑螂药家用全窝端杀蟑螂套装 | 1.311740 | 1484952.41 | 0.018346 | 5 |
20 | 德国拜耳除敌杀虫剂灭蟑螂药跳蚤苍蝇臭虫除螨虱子喷雾5ml*8 | 0.325580 | 983199.69 | 0.012147 | 5 |
25 | 拜耳拜灭士 蟑螂药家用全窝端 强力灭除厨房蟑螂屋克星杀德国进口 | 1.454067 | 413902.42 | 0.005114 | 3 |
8 | 德国拜耳拜灭士蟑螂药一窝端进口全窝端家用灭除杀蟑胶饵5g包邮 | 29.260600 | 236386.32 | 0.002920 | 1 |
-
主要是除蟑和杀虫,但是占比不大,增幅一般
-
拜耳奶牛产品/老爆款
baicow
商品 | 交易增长幅度 | 交易金额 | 交易金额占比 | 商品个数 | |
---|---|---|---|---|---|
7 | 德国拜耳拜灭士蟑螂药一窝端杀蟑胶饵灭蟑螂屋无毒克星家用全窝端 | -0.121360 | 40103850.97 | 0.495473 | 5 |
39 | 进口蟑螂药一窝端德国拜耳拜灭士强力杀蟑胶饵蟑螂屋克星家用全窝 | -0.034680 | 13617307.87 | 0.168238 | 5 |
18 | 德国拜耳进口蚂蚁药拜灭易灭蚁饵剂除杀蚂蚁杀虫剂家用室内全窝端 | -0.056240 | 6130488.42 | 0.075741 | 5 |
42 | 进口蟑螂药德国拜耳拜灭士灭杀蟑胶饵剂粉屋克星全窝端12g家用 | 0.070960 | 3589799.54 | 0.044351 | 5 |
30 | 蟑螂药一窝端德国拜耳拜灭士除蟑灭杀蟑螂克星全窝端家用杀蟑胶 | 0.038900 | 2976922.63 | 0.036779 | 5 |
41 | 进口蟑螂药德国拜耳拜灭士杀蟑胶饵蟑螂克星全窝端家用灭蟑屋12g | -0.127140 | 1650681.34 | 0.020394 | 5 |
10 | 德国拜耳拜灭易灭蚁饵剂粉除杀防蚂蚁药杀虫剂全窝端家用室内花园 | -0.027300 | 1520126.15 | 0.018781 | 5 |
2 | 德国拜耳 除敌跳蚤杀虫剂家用灭蟑螂药虱子杀潮虫臭虫除虫剂喷雾 | -0.221080 | 1394780.59 | 0.017232 | 5 |
31 | 蟑螂药德国拜耳拜灭士强力除杀蟑螂克星胶饵屋家用捕捉器贴全窝端 | 0.011680 | 1198694.67 | 0.014810 | 5 |
27 | 拜耳蟑螂药一窝端家用拜灭士杀蟑胶饵德国小强药粉灭蟑螂厨房克星 | 0.035400 | 695372.27 | 0.008591 | 3 |
36 | 进口蟑螂药 德国拜耳拜灭士家用杀蟑螂胶饵捕捉器蟑螂屋粉全窝端 | -0.148240 | 582636.66 | 0.007198 | 5 |
15 | 德国拜耳进口白蚁药除灭防杀白蚁杀虫剂全窝端家用特傚触杀型粉药 | -0.134425 | 564169.77 | 0.006970 | 4 |
23 | 必抢 德国进口拜耳蟑螂克星家用小强全窝端蟑螂药杀蟑胶饵灭蟑17g | -0.292100 | 561689.93 | 0.006940 | 4 |
19 | 德国拜耳除敌杀虫剂灭蚊蟑螂蚂蚁药跳蚤苍蝇臭虫除螨虱子家用 | -0.075440 | 393582.71 | 0.004863 | 5 |
14 | 德国拜耳跳蚤杀虫剂家用潮虫灭蛾蚋虱子臭虫药除蟑螂5ml*4 | 0.007220 | 318059.43 | 0.003930 | 5 |
5 | 德国拜耳拜灭士5g+拜灭易12g进口杀蟑螂蚂蚁药蟑螂克星家用全窝端 | 0.048340 | 251225.58 | 0.003104 | 5 |
29 | 蟑螂药30克拜灭士德国拜耳进口安全灭蟑螂杀蟑胶饵颗粒剂传染传毒 | -0.107200 | 221081.46 | 0.002731 | 4 |
16 | 德国拜耳进口蚂蚁药家用拜灭易灭蚁饵剂杀蚂蚁杀虫剂室内全窝端蚁 | -0.047140 | 214998.61 | 0.002656 | 5 |
-
可见占比最高的是除蟑,灭虫也占一部分,占比一般
-
拜耳问题产品/潜力款
baique1
商品 | 交易增长幅度 | 交易金额 | 交易金额占比 | 商品个数 | |
---|---|---|---|---|---|
28 | 电子猫超声波驱鼠器家用大功率灭鼠防鼠赶老鼠夹药捕鼠干扰粘鼠板 | 1030.000000 | 41046.03 | 0.000507 | 1 |
40 | 进口蟑螂药一窝端德国拜耳拜灭士杀蟑胶饵诱防蟑螂屋全窝端5+12g | 31.218500 | 67043.14 | 0.000828 | 1 |
11 | 德国拜耳拜灭易进口蚂蚁药一窝端灭蚁饵剂清除蚂蚁粉家用全窝端 | 7.867000 | 32246.39 | 0.000398 | 1 |
26 | 拜耳灭蚂蚁药家用一窝端室内室外用杀小黄红蚂蚁药神器胶饵拜灭易 | 7.442700 | 22553.62 | 0.000279 | 1 |
12 | 德国拜耳白蚁药杀虫剂全窝端家用除杀防治灭飞蚂蚁特密得预防装修 | 5.023800 | 55113.41 | 0.000681 | 1 |
4 | 德国拜耳上门除灭鼠灭白蚁蟑螂蚊子跳蚤苍蝇上海地区灭虫按件拍下 | 2.439300 | 28969.28 | 0.000358 | 1 |
24 | 拜灭士蟑螂药蟑螂克星家用无毒强力灭蟑清德国拜耳杀蟑饵剂全窝端 | 1.797267 | 140032.47 | 0.001730 | 3 |
33 | 蟑螂药进口德国拜耳拜灭士家用除杀蟑螂屋胶饵捕捉器强力清全窝端 | 1.465350 | 101079.33 | 0.001249 | 2 |
3 | 德国拜耳丁香医生限量款拜灭士加量家用蟑螂全窝端蟑螂药3支装 | 1.279300 | 26742.75 | 0.000330 | 1 |
13 | 德国拜耳蟑螂药拜灭士杀蟑胶饵蟑螂克星全窝端家用灭蟑加量装12g | 1.069050 | 68699.06 | 0.000849 | 2 |
35 | 进口蚂蚁药德国拜耳拜灭易杀蚁胶饵灭蚁饵剂红黑黄蚂蚁全窝端家用 | 0.742200 | 33514.83 | 0.000414 | 1 |
21 | 德国进口拜耳蟑螂药拜灭士杀灭除蟑胶饵剂粉屋家用全窝端12g*2盒 | 0.586000 | 28605.01 | 0.000353 | 1 |
32 | 蟑螂药拜耳拜灭士杀蟑胶饵强力灭蟑清贴捕捉器蟑螂克星家用全窝端 | 0.538100 | 55395.16 | 0.000684 | 2 |
9 | 德国拜耳拜灭易12g+除敌5ml*4支 进口蚂蚁药全窝端家用杀虫剂组合 | 0.450550 | 89566.01 | 0.001107 | 2 |
17 | 德国拜耳进口蚂蚁药拜灭易灭蚁饵剂除杀蚂蚁无毒家用室内全窝端 | 0.364950 | 93400.98 | 0.001154 | 2 |
38 | 进口蟑螂药 德国拜耳拜灭士杀蟑螂胶饵剂33克灭蟑螂药全窝端家用 | 0.331367 | 143883.32 | 0.001778 | 3 |
43 | 预售德国拜耳进口蟑螂药进口蚂蚁药组合装5g+12g | 0.218150 | 85546.09 | 0.001057 | 2 |
22 | 德国进口拜耳蟑螂药拜灭士杀蟑胶饵5g两盒套装全窝端杀灭蟑螂剂屋 | 0.147040 | 189376.20 | 0.002340 | 5 |
-
可见大部分仍然是灭蟑和杀虫
-
交易增长幅度最大的是灭鼠,而之前描述过灭鼠有最高的市场份额,可以作为下一步着力点
-
总结:拜耳大部分产品集中在除蟑上,杀虫也有一定的规模,但是明星产品略乏力,可以进一步发展问题产品灭鼠为明星产品
安速
- 读数据,描述
df4an = pd.read_excel(filenames3[0])
df4an.head(2)
日期 | 商品 | 行业排名 | 交易指数 | 交易增长幅度 | 支付转化指数 | 操作 | 交易金额 | |
---|---|---|---|---|---|---|---|---|
0 | 2018-07-01 | 日本安速小强恢恢蟑螂屋纸盒子捕捉器药灭杀强力家用贴克星全窝端 | 3 | 310517 | 0.6037 | 1445 | 趋势分析 | 3002740.75 |
1 | 2018-07-01 | 日本进口安速小强恢恢灭蟑螂屋药无毒捕捉器克星家用强力清全窝端 | 25 | 151749 | -0.2359 | 1200 | 趋势分析 | 832540.52 |
df4an.info()
df4an['商品'].value_counts().count()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 141 entries, 0 to 140
Data columns (total 8 columns):
日期 141 non-null datetime64[ns]
商品 141 non-null object
行业排名 141 non-null int64
交易指数 141 non-null int64
交易增长幅度 141 non-null float64
支付转化指数 141 non-null int64
操作 141 non-null object
交易金额 141 non-null float64
dtypes: datetime64[ns](1), float64(2), int64(3), object(2)
memory usage: 8.9+ KB49
- 汇总指标
an4 = byproduct(df4an)
an4.describe()
交易增长幅度 | 交易金额 | 交易金额占比 | 商品个数 | |
---|---|---|---|---|
count | 49.000000 | 4.900000e+01 | 49.000000 | 49.000000 |
mean | 1.831989 | 6.150227e+05 | 0.020408 | 2.877551 |
std | 6.706975 | 1.954368e+06 | 0.064851 | 1.666241 |
min | -0.641300 | 1.916612e+04 | 0.000636 | 1.000000 |
25% | -0.059500 | 4.044140e+04 | 0.001342 | 1.000000 |
50% | 0.176750 | 1.162554e+05 | 0.003858 | 3.000000 |
75% | 0.604900 | 4.153983e+05 | 0.013784 | 5.000000 |
max | 42.014300 | 1.329498e+07 | 0.441164 | 5.000000 |
- 盖帽法处理
an41 = block2(an4)
an41.describe()
交易增长幅度 | 交易金额 | 交易金额占比 | 商品个数 | |
---|---|---|---|---|
count | 49.000000 | 4.900000e+01 | 49.000000 | 49.000000 |
mean | 0.593263 | 6.150227e+05 | 0.008969 | 2.877551 |
std | 1.160903 | 1.954368e+06 | 0.009983 | 1.666241 |
min | -0.641300 | 1.916612e+04 | 0.000636 | 1.000000 |
25% | -0.059500 | 4.044140e+04 | 0.001342 | 1.000000 |
50% | 0.176750 | 1.162554e+05 | 0.003858 | 3.000000 |
75% | 0.604900 | 4.153983e+05 | 0.013784 | 5.000000 |
max | 3.530507 | 1.329498e+07 | 0.029506 | 5.000000 |
- BCG图
plotBOG(an41)
-
可见奶牛产品足,明星产品部分有前途,问题产品部分有潜力,瘦狗产品不多
-
查看具体产品
anstar,ancow,anque = extractBOG(an4)
anstar1,ancow1,anque1 = extractBOG(an4,by='交易增长幅度')
- 安速明星
anstar
商品 | 交易增长幅度 | 交易金额 | 交易金额占比 | 商品个数 | |
---|---|---|---|---|---|
35 | 日本安速蟑螂小屋灭除杀蟑螂药一窝端神器捕捉器家用克星小强恢恢 | 0.440000 | 881587.79 | 0.029254 | 5 |
34 | 日本安速蚂蚁药灭蚂蚁清驱除杀红蚂蚁小黄蚂蚁全窝端家用室内花园 | 21.464140 | 444230.43 | 0.014741 | 5 |
21 | 日本安速小黑帽小强黑克杀蟑饵剂9枚 蟑螂药屋蟑螂克星家用全窝端 | 0.419900 | 320927.90 | 0.010649 | 4 |
39 | 日本进口安速天然除螨喷雾剂350ml床上免洗家用正品螨虫非除杀菌 | 3.859333 | 304915.11 | 0.010118 | 3 |
0 | 10枚装日本进口安速小强恢恢蟑螂屋诱捕捉器杀药贴环保无毒包邮 | 0.176750 | 217061.51 | 0.007203 | 4 |
43 | 日本进口安速小强恢恢蟑螂屋5片药捕捉器灭杀蟑螂克星家用全窝端 | 0.189600 | 215689.30 | 0.007157 | 4 |
29 | 日本安速红阿斯杀虫烟雾剂20g弹烟熏灭跳蚤蟑螂药克星家用全窝端 | 0.399800 | 193282.28 | 0.006414 | 4 |
18 | 日本安速小强恢恢蟑螂屋灭蟑螂强力捕捉器诱捕器除杀蟑螂清药贴 | 0.227425 | 142604.89 | 0.004732 | 4 |
-
杀虫和除蟑表现都不错
-
安速奶牛
ancow
商品 | 交易增长幅度 | 交易金额 | 交易金额占比 | 商品个数 | |
---|---|---|---|---|---|
19 | 日本安速小强恢恢蟑螂屋纸盒子捕捉器药灭杀强力家用贴克星全窝端 | 0.012180 | 13294975.97 | 0.441164 | 5 |
41 | 日本进口安速小强恢恢灭蟑螂屋药无毒捕捉器克星家用强力清全窝端 | -0.111000 | 3685204.19 | 0.122285 | 5 |
40 | 日本进口安速小强恢恢杀蟑灭蟑螂屋10枚捕捉器不含蟑螂药 | -0.000740 | 2354769.41 | 0.078138 | 5 |
24 | 日本安速小黑帽蟑螂屋家用强力灭蟑螂药环保无毒无味除小强包邮 | 0.072400 | 1083611.82 | 0.035957 | 5 |
16 | 日本安速小强恢恢蟑螂屋家用杀蟑胶饵小蟑螂药无毒蟑螂克星全窝端 | -0.254840 | 919683.22 | 0.030518 | 5 |
1 | ✅【10枚装】日本进口安速小强恢恢蟑螂屋捕捉器杀药贴家用全窝端 | -0.159780 | 812113.82 | 0.026948 | 5 |
32 | 日本安速红阿斯烟雾杀虫剂灭跳蚤药烟弹家用神器螨虫克星送蟑螂屋 | 0.095920 | 762628.32 | 0.025306 | 5 |
46 | 日本进口安速红阿斯杀虫烟雾剂弹烟熏灭跳蚤蟑螂克星家用全窝端 | -0.120460 | 622279.57 | 0.020649 | 5 |
6 | 原装进口日本安速红阿斯杀虫烟雾剂熏杀灭跳蚤臭虫螨虫蟑螂20克 | -0.283000 | 480525.86 | 0.015945 | 4 |
17 | 日本安速小强恢恢蟑螂屋捕捉器神器厨房清灭强力贴克星家用全窝端 | -0.059500 | 423102.79 | 0.014040 | 5 |
20 | 日本安速小强恢恢蟑螂屋药6片 无毒捕捉器强力灭清克星家用全窝端 | -0.203980 | 415398.34 | 0.013784 | 5 |
38 | 日本安速除螨虫喷雾剂床上免洗祛去螨虫喷剂家用杀菌送除螨包神器 | -0.102467 | 358839.15 | 0.011907 | 3 |
45 | 日本进口安速杀蝇饵剂苍蝇药1盒 粘蝇纸灭苍蝇贴强力神家用捕蝇器 | 0.012960 | 293644.17 | 0.009744 | 5 |
26 | 日本安速小黑帽蟑螂屋蟑螂药克星家用安全无毒强力灭蟑清全窝端! | -0.209850 | 279383.03 | 0.009271 | 4 |
36 | 日本安速蟑螂药12枚家用灭杀蟑螂屋胶饵剂清强力捕捉器克星全窝端 | -0.137750 | 184701.40 | 0.006129 | 4 |
15 | 日本安速小强恢恢蟑螂屋6片家用无毒蟑螂贴捕捉器克星家用全窝端 | -0.301267 | 168503.43 | 0.005591 | 3 |
31 | 日本安速红阿斯杀虫烟雾剂弹烟熏强力灭跳蚤蟑螂药克星家用全窝端 | -0.010433 | 116255.35 | 0.003858 | 3 |
-
主要是除蟑,和拜耳产生竞争
-
安速问题
anque1
商品 | 交易增长幅度 | 交易金额 | 交易金额占比 | 商品个数 | |
---|---|---|---|---|---|
4 | 冲销量日本安速小黑帽蟑螂屋蟑螂药家用强力灭蟑清安全无毒小强 | 42.01430 | 32034.34 | 0.001063 | 1 |
37 | 日本安速除螨虫喷雾剂床上免洗去螨虫神器喷剂家用非杀菌送除螨包 | 6.64800 | 41991.71 | 0.001393 | 1 |
13 | 日本安速ARS地球制药earth小飞虫恢恢果蝇诱捕器单只装 0315 | 4.36430 | 40441.40 | 0.001342 | 1 |
27 | 日本安速杀蟑气雾剂精纯无味型2瓶 灭蟑螂药杀虫剂家用潮虫百虫灵 | 3.44830 | 52292.37 | 0.001735 | 2 |
42 | 日本进口安速小强恢恢蟑螂屋5片家用无毒贴捕捉器克星家用全窝端 | 1.16750 | 19943.68 | 0.000662 | 1 |
30 | 日本安速红阿斯杀虫烟雾剂弹10g烟熏灭跳蚤蟑螂克星家用全窝端 | 0.97050 | 60200.62 | 0.001998 | 1 |
2 | 【20枚装】日本进口安速小强恢恢蟑螂屋蟑螂捕捉器诱捕器灭蟑小屋 | 0.93215 | 58785.41 | 0.001951 | 2 |
9 | 日本 安速EARTH小果蝇恢恢杀蝇饵剂灭苍蝇小飞虫神器诱捕捕捉器 | 0.88560 | 33633.57 | 0.001116 | 1 |
47 | 日本进口安速红阿斯杀虫烟雾剂跳蚤螨虫蚂蚁药蟑螂克星家用全窝端 | 0.73170 | 19166.12 | 0.000636 | 1 |
33 | 日本安速老鼠吱吱板4片 老鼠贴强力粘鼠板驱鼠灭鼠器老鼠胶药家用 | 0.66030 | 30567.08 | 0.001014 | 1 |
5 | 原装正品日本安速小强恢恢蟑螂屋蟑螂捕捉器诱捕器小屋20枚包邮 | 0.60490 | 32627.73 | 0.001083 | 1 |
12 | 日本ARS安速小黑帽蟑螂屋盒子无毒无味灭小强安全室内12枚蟑螂药 | 0.51235 | 81303.15 | 0.002698 | 2 |
48 | 现货 日本正品安速小黑帽蟑螂屋杀小强灭蟑螂药环保无毒无刺激 | 0.48520 | 105556.48 | 0.003503 | 3 |
10 | 日本ARS安速小黑帽环保无毒灭蟑螂药无味除小强小黑屋12枚 | 0.38120 | 34503.54 | 0.001145 | 1 |
8 | 德国拜耳进口蚂蚁药拜灭易灭蚁饵剂除杀蚂蚁无毒家用室内全窝端 | 0.36495 | 93400.98 | 0.003099 | 2 |
14 | 日本安速小强恢恢蟑螂屋20片蟑螂药灭蟑螂克星家用全窝端 | 0.28400 | 25693.46 | 0.000853 | 1 |
25 | 日本安速小黑帽蟑螂屋灭蟑螂药家用厨房灭蟑清蟑螂克星全窝端无毒 | 0.20310 | 35358.87 | 0.001173 | 1 |
-
前几款是灭蟑,除螨,杀虫,都有发展空间
-
总结:安速没有明显的灭鼠市场
-
拜耳和安速比较:拜耳杀虫是老爆款,灭蟑存在一定竞争
科凌虫控
- 读数据,描述
df4kl = pd.read_excel(filenames3[2])
df4kl.head(2)
日期 | 商品 | 行业排名 | 交易指数 | 交易增长幅度 | 支付转化指数 | 操作 | 交易金额 | |
---|---|---|---|---|---|---|---|---|
0 | 2018-07-01 | 蟑螂药一窝端蟑螂屋胶饵灭蟑螂无毒厨房家用强力杀蟑螂克星全窝端 | 2 | 466881 | 0.4525 | 1850 | 趋势分析 | 6256693.23 |
1 | 2018-07-01 | 蟑螂屋捕捉器除灭蟑螂药一窝端神器纸盒子胶饵杀小蟑螂贴厨房家用 | 14 | 204545 | 0.1933 | 1577 | 趋势分析 | 1419883.88 |
df4kl.info()
df4kl['商品'].value_counts().count()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 118 entries, 0 to 117
Data columns (total 8 columns):
日期 118 non-null datetime64[ns]
商品 118 non-null object
行业排名 118 non-null int64
交易指数 118 non-null int64
交易增长幅度 118 non-null float64
支付转化指数 118 non-null int64
操作 118 non-null object
交易金额 118 non-null float64
dtypes: datetime64[ns](1), float64(2), int64(3), object(2)
memory usage: 7.5+ KB31
- 汇总指标
kl4 = byproduct(df4kl)
kl4.describe()
交易增长幅度 | 交易金额 | 交易金额占比 | 商品个数 | |
---|---|---|---|---|
count | 31.000000 | 3.100000e+01 | 31.000000 | 31.000000 |
mean | 13.479448 | 1.500410e+06 | 0.032258 | 3.806452 |
std | 73.221448 | 4.039568e+06 | 0.086849 | 1.558190 |
min | -0.317840 | 2.566598e+04 | 0.000552 | 1.000000 |
25% | -0.065360 | 1.099735e+05 | 0.002364 | 2.500000 |
50% | 0.054800 | 3.286985e+05 | 0.007067 | 5.000000 |
75% | 0.552800 | 1.138542e+06 | 0.024478 | 5.000000 |
max | 407.982650 | 2.196606e+07 | 0.472259 | 5.000000 |
- 盖帽
kl41 = block2(kl4)
kl41.describe()
交易增长幅度 | 交易金额 | 交易金额占比 | 商品个数 | |
---|---|---|---|---|
count | 31.000000 | 3.100000e+01 | 31.000000 | 31.000000 |
mean | 0.263058 | 1.500410e+06 | 0.014589 | 3.806452 |
std | 0.492999 | 4.039568e+06 | 0.014994 | 1.558190 |
min | -0.317840 | 2.566598e+04 | 0.000552 | 1.000000 |
25% | -0.065360 | 1.099735e+05 | 0.002364 | 2.500000 |
50% | 0.054800 | 3.286985e+05 | 0.007067 | 5.000000 |
75% | 0.552800 | 1.138542e+06 | 0.024478 | 5.000000 |
max | 1.268350 | 2.196606e+07 | 0.044609 | 5.000000 |
- 作图
plotBOG(kl41)
-
可见奶牛产品足,明星产品少,大部分有前途,问题产品部分有潜力,瘦狗产品少
-
查看具体产品
klstar,klcow,klque = extractBOG(kl4)
klstar1,klcow1,klque1 = extractBOG(kl4,by='交易增长幅度')
- 科凌虫控明星
klstar
商品 | 交易增长幅度 | 交易金额 | 交易金额占比 | 商品个数 | |
---|---|---|---|---|---|
28 | 除螨虫家用喷剂床上祛防螨去螨虫神器喷雾剂包贴杀虫剂免洗非杀菌 | 0.80742 | 2270518.54 | 0.048815 | 5 |
20 | 老鼠贴超强力粘鼠板灭鼠神器捕鼠魔毯yao颗粒老鼠胶家用药捕鼠器 | 0.08576 | 2074886.77 | 0.044609 | 5 |
13 | 科凌虫控蟑螂药屋蟑螂克星杀蟑胶饵灭蟑螂粉全窝端家用强力灭蟑清 | 0.15184 | 1253677.00 | 0.026953 | 5 |
1 | 去儿童头虱除阴虱净喷剂百部酊虱卵用虱子药成人一扫光净虱灵喷雾 | 0.67058 | 1112790.54 | 0.023924 | 5 |
-
主要是灭鼠,除螨和杀虫
-
科凌虫控奶牛
klcow
商品 | 交易增长幅度 | 交易金额 | 交易金额占比 | 商品个数 | |
---|---|---|---|---|---|
23 | 蟑螂药一窝端蟑螂屋胶饵灭蟑螂无毒厨房家用强力杀蟑螂克星全窝端 | -0.09628 | 21966057.02 | 0.472259 | 5 |
22 | 蟑螂屋捕捉器除灭蟑螂药一窝端神器纸盒子胶饵杀小蟑螂贴厨房家用 | -0.00548 | 7464346.74 | 0.160480 | 5 |
5 | 杀蟑螂药一窝端蟑螂药粉家用捕捉器屋厨贴无毒灭蟑螂粉除小强克星 | -0.19370 | 1408637.81 | 0.030285 | 5 |
26 | 跳蚤杀虫剂家用厕所卫生间下水道除虫灭小飞虫蛾蚋蟑螂臭虫药室内 | -0.18824 | 1316871.08 | 0.028312 | 5 |
21 | 蟑螂屋强力灭蟑清蟑螂贴家用无毒粉杀蟑螂药胶饵捕捉器克星全窝端 | 0.05320 | 1157585.18 | 0.024888 | 5 |
15 | 粘鼠板超强力驱老鼠贴灭鼠抓老鼠夹药捕鼠器黏老鼠胶沾鼠神器家用 | -0.08956 | 1119499.65 | 0.024069 | 5 |
10 | 科凌虫控杀蟑螂药一窝端灭蟑螂胶饵药粉克星南方大蟑螂全窝端家用 | -0.09338 | 1009419.11 | 0.021702 | 5 |
14 | 米面蛾诱捕器蛾子粘捕器家用小飞虫杀虫剂灭飞蛾除米蛾衣蛾蚋蛾蠓 | -0.31784 | 578549.20 | 0.012439 | 5 |
17 | 老鼠笼捕鼠器全自动超强家用抓老鼠夹药捉耗子连续灭鼠神器驱鼠器 | -0.01008 | 465621.51 | 0.010011 | 5 |
29 | 除跳蚤喷剂床上杀虫剂气雾家用潮虫驱虫灭去蚂蚁药神器室内杀蜘蛛 | -0.19702 | 437756.89 | 0.009412 | 5 |
8 | 灭蟑螂药烟剂杀蜘蛛驱烟雾弹神器克星家用全窝端除蚂蚁蜈蚣烟熏片 | -0.04116 | 424747.11 | 0.009132 | 5 |
16 | 绿叶老鼠贴强力粘鼠板沾灭鼠神器胶药yao颗粒捕鼠器克星正品家用 | 0.05318 | 328698.54 | 0.007067 | 5 |
-
主要是除蟑,有很小部分灭虫和灭鼠
-
科凌虫控问题
klque1
商品 | 交易增长幅度 | 交易金额 | 交易金额占比 | 商品个数 | |
---|---|---|---|---|---|
2 | 天然除螨虫包喷雾剂中草药祛防杀去螨虫垫贴床上用品家用驱虫神器 | 407.98265 | 290170.09 | 0.006239 | 2 |
4 | 抓老鼠贴强力粘鼠板胶药沾灭鼠器捕鼠神器克星家用正品20张一窝端 | 4.21950 | 119948.74 | 0.002579 | 3 |
18 | 老鼠笼捕鼠器家用一窝端连续全自动强力扑捉抓灭老鼠夹子捕鼠神器 | 1.31100 | 62508.93 | 0.001344 | 1 |
25 | 蟑螂药蟑螂克星家用非无毒全窝端室内厨房南方大蟑螂一窝端脏螂药 | 1.26835 | 86020.53 | 0.001849 | 2 |
19 | 老鼠贴强力粘鼠板正品一窝端灭鼠器老鼠克星胶yao颗粒家用10片装 | 0.88335 | 81123.80 | 0.001744 | 2 |
27 | 跳蚤杀虫剂家用气雾剂除螨虫喷雾潮虫百虫灵蜈蚣蟑螂药灭蚂蚁虱子 | 0.56420 | 31783.47 | 0.000683 | 1 |
12 | 科凌虫控蟑螂药南方大蟑螂强力杀蟑饵剂蟑螂胶饵家用全窝端灭蟑清 | 0.54140 | 32057.62 | 0.000689 | 1 |
24 | 蟑螂药粉德国小蠊小强专杀灭蟑螂屋纸盒子家用蟑螂克星全窝端厨房 | 0.30630 | 125300.73 | 0.002694 | 3 |
11 | 科凌虫控老鼠贴超强力粘鼠板日本版捉抓老鼠夹胶家用灭鼠药捕鼠器 | 0.21870 | 99998.35 | 0.002150 | 3 |
6 | 汽车家用驱鼠剂防老鼠克星喷雾剂耗子发动机舱包防鼠灭鼠药驱鼠器 | 0.13730 | 25665.98 | 0.000552 | 1 |
3 | 抓老鼠夹子捕鼠器笼家用连续全自动逮捉老鼠笼超强扑鼠笼灭鼠神器 | 0.07335 | 51645.49 | 0.001110 | 2 |
0 | 4 只装驱老鼠夹捕鼠器家用灭鼠神器抓杀扑老鼠夹子捉老鼠笼全自动 | 0.05480 | 289907.35 | 0.006233 | 5 |
-
有较大潜力的是除螨
-
总结:科凌虫控积极发展多个产品,然而每个产品结构相对独立(奶牛除蟑,明星灭鼠,潜力除螨),没有后续的支持.竞争力不是那么强
流量结构分析
os.chdir('..')
os.chdir('./流量渠道数据')
filenames4 = glob.glob('*.xlsx')
filenames4
['安速家居旗舰店流量渠道.xlsx', '拜耳官方旗舰店流量渠道.xlsx', '科凌虫控旗舰店流量渠道.xlsx']
- 拜耳
df5bai = pd.read_excel(filenames4[1])
df5bai.head()
流量来源 | 交易指数 | 交易指数.1 | |
---|---|---|---|
0 | 淘内免费 | 399466 | 320128 |
1 | 手淘搜索 | 336457 | 274916 |
2 | 淘内免费其他 | 195308 | 153255 |
3 | 手淘问大家 | 123512 | 108108 |
4 | 手淘旺信 | 88024 | 59198 |
-
交易指数是销售额的反映
-
自定义流量结构和说明的函数
-
只取交易指数排名前10的流量渠道分析
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 = ['付费流量','直通车','淘宝客','淘宝联盟']ind = np.any([top10.index == i for i in paid],axis=0)explode = ind*0.1ax = top10['交易指数占比'].plot.pie(autopct='%.1f%%',figsize=(8,8),colormap='cool',explode=explode)ax.set_ylabel('')plt.show()paidsum = top10['交易指数占比'][ind].sum()salesum = top10['交易指数'].sum()paidsale = salesum * paidsumprint(f'前10流量中:总交易指数:{salesum:.0f};付费流量占比:{paidsum*100:.2f}%;付费流量带来交易指数:{paidsale:.0f}')return top10
bai5top10 = flow(df5bai)
前10流量中:总交易指数:2334051;付费流量占比:21.85%;付费流量带来交易指数:509959
- 排名前10的详细数据
bai5top10
交易指数 | 交易指数.1 | 交易指数占比 | |
---|---|---|---|
流量来源 | |||
淘内免费 | 399466 | 320128 | 0.171147 |
手淘搜索 | 336457 | 274916 | 0.144152 |
自主访问 | 312587 | 234293 | 0.133925 |
购物车 | 251600 | 186323 | 0.107795 |
付费流量 | 223315 | 206480 | 0.095677 |
我的淘宝 | 205162 | 151825 | 0.087900 |
淘内免费其他 | 195308 | 153255 | 0.083678 |
直通车 | 187952 | 147463 | 0.080526 |
手淘问大家 | 123512 | 108108 | 0.052917 |
淘宝客 | 98692 | 135320 | 0.042284 |
- 安速
df5an = pd.read_excel(filenames4[0])
df5an.head()
流量来源 | 交易指数 | |
---|---|---|
0 | 淘内免费 | 119751 |
1 | 手淘搜索 | 86389 |
2 | 淘内免费其他 | 62653 |
3 | 手淘问大家 | 31348 |
4 | 手淘旺信 | 25514 |
an5top10 = flow(df5an)
前10流量中:总交易指数:748539;付费流量占比:18.58%;付费流量带来交易指数:139048
-
可见拜耳和安速的流量配比是差不多的,安速的整体流量小很多,即流量效果拜耳明显优于安速
-
科凌虫控
df5kl = pd.read_excel(filenames4[2])
df5kl.head()
流量来源 | 交易指数 | |
---|---|---|
0 | 淘内免费 | 320128 |
1 | 手淘搜索 | 274916 |
2 | 淘内免费其他 | 153255 |
3 | 手淘问大家 | 108108 |
4 | 手淘旺信 | 59198 |
kl5top10 = flow(df5kl)
前10流量中:总交易指数:1918111;付费流量占比:25.51%;付费流量带来交易指数:489263
- 和拜耳在流量上差不多,科凌虫控付费占比较高
舆情分析
os.chdir('..')
os.chdir('./评论舆情数据')
- 读数据
filenames5 = glob.glob('*.xlsx')
filenames5
['安速.xlsx', '德国拜耳.xlsx', '科林虫控.xlsx']
df6bai = pd.read_excel(filenames5[1])
df6bai.head()
产品名称 | 链接 | 评论页码 | 评论 | 评论日期 | |
---|---|---|---|---|---|
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 |
- 抽评论列
bai6 = list(df6bai['评论'])
- 去掉非中英文字符
bai61 = [re.sub(r'[^a-z\u4E00-\u9Fa5]+',' ',i,flags=re.I) for i in bai6]
-
好用的文本处理的库:shorttext
-
读取构建停用词列表
stopwords = list(pd.read_csv('D:/data/python/百度停用词表.txt',names=['stopwords'])['stopwords'])
stopwords.extend([' '])
- 如下得到一个大列表包含多个小列表,每个小列表来自一条评论的分词
bai62 = []
for i in bai61:seg0 = pd.Series(jieba.lcut(i))# 可以尝试全模式看效果# 筛掉长度等于1的词ind1 = pd.Series([len(j) for j in seg0])>1seg1 = seg0[ind1]# 去掉停用词,去重ind2 = ~seg1.isin(pd.Series(stopwords))seg2 = list(seg1[ind2].unique())# 去掉筛选后的空列表if len(seg2)>0:bai62.append(seg2)
Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\jiang\AppData\Local\Temp\jieba.cache
Loading model cost 0.755 seconds.
Prefix dict has been built succesfully.
bai62[:2]
[['收到','家里','厨房','小强','评价','销量','赶紧','三盒','管用','后续','效果','追加','多久','才能','消灭','干净','没法','做饭','进去','担心','挥发','很多','试试'],['朋友','推荐','管用','放药','几天','蟑螂','出去玩','家里','角角落落','全都','点涂','四天','回来','开门','内心','忐忑','居然','一只','没见','真的','错峰','出行','但愿','第二次','购买','超级','好用','翻烂','两支','一支','点上']]
- 组合多个列表到一个列表
bai63 = [y for x in bai62 for y in x]
# 或如下方式:
# from itertools import chain
# bai63 = list(chain(*bai62))
bai63[:10]
['收到', '家里', '厨房', '小强', '评价', '销量', '赶紧', '三盒', '管用', '后续']
- 计算词频
baifreq = pd.Series(bai63).value_counts()
baifreq[:10]
效果 541
蟑螂 409
双十 145
不错 144
评论 138
小强 114
收到 106
用户 100
填写 100
东西 95
dtype: int64
- 组合多个字符为一个长字符,空格分隔
bai64 = ' '.join(bai63)
- 绘制词云
mask = imageio.imread('D:/data/python/leaf.jpg')
# 如果是中文必须制定字体
font = r'C:\Windows\Fonts\simkai.ttf'wc = WordCloud(background_color='wheat',mask=mask,font_path=font).generate(bai64)
plt.figure(figsize=(8,8))
plt.imshow(wc)
plt.axis('off')
plt.show()
- 写出词云文件
wc.to_file('D:/data/python/拜耳舆情词云.png')
<wordcloud.wordcloud.WordCloud at 0x153001f4588>
- 基于 TF-IDF 算法的关键词抽取
jieba.analyse.extract_tags(bai64,20,True)
[('蟑螂', 0.35868827490141125),('效果', 0.2849843733535205),('双十', 0.12792281324949317),('小强', 0.09200132125972145),('评论', 0.08243514073285675),('湿巾', 0.0800848241710357),('填写', 0.07859912763569854),('不错', 0.07854611456578228),('好评', 0.07205703576029969),('追评', 0.06743985193350374),('没用', 0.06355521640160776),('收到', 0.06240940420464874),('用户', 0.06013517913107095),('好用', 0.05909939270004407),('尸体', 0.05479502199496166),('划算', 0.05456206954124107),('湿纸巾', 0.05268657021031292),('家里', 0.04667477953221154),('发货', 0.04579483339359189),('期待', 0.04317101167929661)]
- 不管从词云还是关键词来看,评价偏好评,没有明显问题
- 可以在停用词中添加好评,蟑螂可以再看效果