以驱虫市场数据为例,挖掘某店铺新的业务方向和市场增长点。
联系微信wusheng9922
接上一节(3) 接下来看市场的竞争情况分析。
10.竞争分析
导入数据
os.chdir('..')
os.chdir('./竞争数据')
10.1品类分布分析
导入数据 洗数据
os.chdir('./商品销售数据')
filenames2 = glob.glob('*.xlsx')
filenames2
df3 = pd.read_excel(filenames2[1])
df3.head(1)
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()
df3an = load_xlsx1(filenames2[0])
df3an.head()
df3kl = load_xlsx1(filenames2[2])
df3kl.head()
洗完后 我们得到三家公司的可用于分析的数据如下
三家公司的类目分组,查看三家公司 他们都有什么产品类目 和对应销量如何:
同样的方法对适用对象 分组来看 各家公司 的业务领域:
bai32 = df3bai.groupby('使用对象').sum()
bai32
an32 = df3an.groupby('适用对象').sum()
an32
kl32 = df3kl.groupby('适用对象').sum()
kl32
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()
10.2产品结构分析
导入数据
os.chdir('..')
os.chdir('./商品交易数据')
filenames3 = glob.glob('*.xlsx')
filenames3
df4bai = pd.read_excel(filenames3[1])
df4bai.head()
df4bai.info()
df4bai['商品'].value_counts().count()
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)
bai4.describe()
盖帽法处理 异常数据 方便做图
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()
定义函数做图
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)
在产品波士顿矩阵中,提取问题、奶牛、明星产品,看下都有哪些:
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='交易增长幅度')
明星产品
奶牛产品
问题产品
同样的方法找到 an kl 这两家公司的 波士顿产品矩阵:
an 的明星产品
an 的奶牛产品
an的问题产品
kl 波士顿矩阵
kl 明星产品
kl奶牛产品
kl问题产品
对比三家综合分析:根据自身业务 给出分析。
10.2流量结构分析
os.chdir('..')
os.chdir('./流量渠道数据')
filenames4 = glob.glob('*.xlsx')
filenames4
df5bai = pd.read_excel(filenames4[1])
df5bai.head()
拿到三家的前十名的流量数据:
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)
df5an = pd.read_excel(filenames4[0])
df5an.head()
an5top10 = flow(df5an)
df5kl = pd.read_excel(filenames4[2])
df5kl.head()
kl5top10 = flow(df5kl)