Python文本数据挖掘——电商寻求市场增长点(上)

一、项目背景

分析流程概述

在这里插入图片描述

  • 每个环节都有具体的要求,例如需求文档要求包含:目的,分析思路,预期效果
  • 业务部门出问题和需求,以及对算法&数据部门输出报告的理解和应用

中台

在这里插入图片描述

市场类别

评判市场和品牌的发展趋势和增长情况:

互联网产品由关注用户增量到用户存量,判断产品或市场是用户增量还是存量,判断有新的需求出现即可:

  • 增量市场:从无到有,关注哪些需求没有被满足,快速迭代抢占市场,考虑最多的不是用户体验.流量=新增客户.
    -存量市场:从有到优,现在关注如何更好的满足需求,考虑更多的是用户体验.产品价值=新体验-旧体验-替换成本,为达到新体验突破性大幅增加,产品价值得到实现
  • 创新:,同纬度竞争别家的先发优势门槛太高,如果别家体量很大,基本可以放弃;创新可能就是剩下的活路,而面对互联网的高速发展,线下需求基本都被互联网化,切入点可能就转移到细分市场

产品结构——波士顿矩阵(BCG Matrix)

在这里插入图片描述

产品架构

(一)、 介绍

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

(二)、数据说明

在这里插入图片描述

二、分析流程

(一)、驱虫市场的潜力分析

分析目的&加载数据

- 分析目的:

针对各个子类目市场近三年的交易额数据,以及top100品牌数据,通过描述性分析,在年变化的维度上:

  • 分析整个市场的总体趋势
  • 分析整个市场的总体趋势
  • 分析市场集中度,即是否存在垄断

- 分析过程:

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

import os

# 显示当前工作目录
print("Initial working directory:", os.getcwd())
# 切换目录
os.chdir('data\驱虫剂市场')
filenames = glob.glob('*近三年交易额.xlsx')
filenames

在这里插入图片描述

re.search(r'.*(?=市场)','灭鼠杀虫剂市场近三年交易额.xlsx').group()

在这里插入图片描述

def read_3threes(filename):
    colname = re.search(r'.*(?=市场)',filename).group() # 提取文件名中“市场”前面的文字
    df = pd.read_excel(filename) 
    if df['时间'].dtypes == 'int64':
        # 将“时间”列的数据类型转变为datetime类型
        df['时间'] = pd.to_datetime(df['时间'],unit='D',origin=pd.Timestamp('1899-12-30'))
    df.rename(columns={df.columns[1]:colname},inplace=True) # 修改第二列的列名
    df.set_index('时间',inplace=True)
    return df

*在这里插入图片描述*

# 分别读取七个文件,并转换成DataFrame,存入列表中
dfs = [read_3threes(filename) for filename in filenames]
# 将7个DataFrame在axis=1的方向拼接
df = pd.concat(dfs,axis=1).reset_index()
df.head()

在这里插入图片描述

df.isna().mean()

在这里插入图片描述

month = df['时间'].dt.month
month

在这里插入图片描述

month = df['时间'].dt.month
month

在这里插入图片描述

for i in [11,12]:
    dm = df[month==i] # 从df中抽取对应月份的记录
    Xtrain = np.array(dm['时间'].dt.year).reshape(-1,1)
    y_hat = [pd.datetime(2018,i,1)]
    for j in range(1,len(dm.columns)):  # 遍历对应月份的每个种类
        ytrain = np.array(dm.iloc[:,j])  # 获取对应种类的交易金额,作为训练样本集标签
        reg = LinearRegression()
        reg.fit(Xtrain,ytrain)
        y_predict = reg.predict(np.array([2018]).reshape(-1,1))
        y_hat.append(y_predict)
    newrow = pd.DataFrame(dict(zip(df.columns,y_hat)))
    df = newrow.append(df)  # 将预测的结果加到df中
df.reset_index(drop=True,inplace=True) # 删除原索引,重置索引
df.head()

在这里插入图片描述

df = df[df['时间'].dt.year!=2015]

- 清洗补全数据

我们需要的是2016-2018年每月完整的数据(方便从年变化的角度分析产品)
假设:

  • 每年各月之间没有明显规律的周期性变化(近似认为月和月之间的相关性不大)
  • 每年对应月份的数据是线性变化的(一是因为数据少,二是认为随着年份的增长,交易额在大环境下是稳步变化的)
    在这里插入图片描述

(二)、潜力分析

按照年份查看驱虫市场的总体变化趋势

df['colsum'] = df.sum(1)
df.head()

在这里插入图片描述

df.insert(1,'year',df['时间'].dt.year)
df.head()

在这里插入图片描述

  • 根据年份分组,并对每一组求和,重置索引
byyear = df.groupby('year').sum().reset_index()
byyear.head()

在这里插入图片描述

# 重命名 'year' 列为 '年份'
byyear = byyear.rename(columns={'year': '年份'})
byyear = byyear.rename(columns={'colsum': '合计'})

# 显示前几行数据
byyear.head()

在这里插入图片描述
所有子类目市场每年的交易金额总和

# 绘图
sns.relplot('年份','合计',kind='line',marker='o',data=byyear)
plt.title('近三年驱虫市场趋势',fontsize=16)
plt.xticks(byyear.年份)
plt.xlabel('年份')
plt.yticks(byyear.合计)
plt.ylabel('总交易额')
plt.show()

在这里插入图片描述
可以看出:近三年呈增长趋势,整个市场倾向于成长期和成熟期

驱虫市场的潜力分析-各市场变化趋势

查看各类目市场三年内销售额总和的变化趋势

byyear

在这里插入图片描述

# 绘制各子类目市场趋势

# 列出所有子类目
categories = ['灭鼠杀虫剂', '电蚊香套装', '盘香灭蟑香蚊香盘', '蚊香加热器', '蚊香液', '蚊香片', '防霉防蛀片']

for category in categories:
    plt.plot(byyear['年份'], byyear[category], marker='o', label=category)

plt.xlabel('年份')
plt.ylabel('销售总量')
plt.title('各子类目市场趋势')
plt.legend()
plt.grid(True)
plt.tight_layout()

# 显示图表
plt.show()

在这里插入图片描述
可见:灭鼠杀虫剂份额大,增长高。直观的看灭鼠杀虫剂和蚊香液都有较大的机会

驱虫市场的潜力分析-各市场占比

byyear
# 先按年份对数据进行分组求和
by_year_sum = byyear.groupby('年份')[categories].sum()

# 计算每个类目在各年份的占比
category_percentage_by_year = by_year_sum.div(by_year_sum.sum(axis=1), axis=0) * 100

# 可视化各类目在不同年份的销售额占比
plt.figure(figsize=(12, 8))
category_percentage_by_year.plot(kind='bar', stacked=True)
plt.xlabel('年份')
plt.ylabel('占比(%)')
plt.title('各类目在不同年份的销售额占比')
plt.legend(loc='upper right', bbox_to_anchor=(1.2, 1))
plt.grid(True)
plt.tight_layout()
plt.show()

在这里插入图片描述
可见:每年占比情况变化不大,灭鼠杀虫剂和蚊香液市场大
灭鼠杀虫剂和蚊香液可进一步扩展,就需要与甲方业务人员进一步沟通 · 假设沟通后我们重点关注的是灭鼠杀虫剂

驱虫市场的潜力分析-各市场年增幅

进一步分析各类目市场16-17年17-18年增幅

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

在这里插入图片描述

byyear_diff.plot()
plt.xlabel('年份')
plt.ylabel('销售总量')
plt.title('各子类目市场趋势')
plt.legend()
plt.grid(True)
plt.show()

在这里插入图片描述
可见:见除了灭鼠杀虫剂和蚊香液增幅比较稳定,其它都有下降甚至变负
1、电蚊香套装进入负增长,该领域不可进; 2、较稳定增长领域:灭鼠杀虫剂; 3、考虑蚊香加热器产品寿命长,且总交易额较低,占比较低,市场小,故主要考虑灭鼠杀虫剂市场。

驱虫市场的潜力分析-垄断

  • 垄断程度,或者说市场势力的重要量化指标是行业集中度
  • 常见的指标有行业集中率:CRn指数,赫芬达尔指数(Herfindahl-Hirschman Index,缩
    写HHI)
  • 指数范围从1/N到1,指数的导数表示该行业中“等效”的公司数量,上例的市场结构等同于拥有1.55521加相同规模的公司
  • 范围: [1/N,‘高度竞争行业’,0.01],(0.01,‘不集中的行业’,0.15],(0.15,‘中等集中’,0.25],(0.25,‘高度集中’,1]

1.3 市场集中度描述 采用赫芬达尔指数(Herfindahl-Hirschman Index,缩写HHI)

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

在这里插入图片描述

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

在这里插入图片描述
驱虫市场各品牌份额占有率图如下

df1.plot(x='品牌', y='交易指数占比', kind='bar', figsize=(12, 8))
plt.xlabel('品牌')
plt.ylabel('交易指数占比')
plt.title('驱虫市场各品牌份额占有率')
plt.legend(loc='upper right')  # 设置图例位置为右上角
plt.grid(True)  # 显示网格线
plt.tight_layout()
plt.show()

在这里插入图片描述

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

在这里插入图片描述

结果分析

可见:该市场存在一定竞争,但不存在垄断。 驱虫市场的潜力分析-结论

  1. 整体驱虫市场处于快速增长阶段,趋向于成长期到成熟期
  2. 灭鼠杀虫剂市场份额较大(大于60%),约是第二名蚊香液的二倍,市场增长率接近40%, 可以认为是明星产品类目,需要持续投资和重点关注
  3. 驱虫市场不存在垄断,结构不集中,竞争相对激烈,即没有明显的来自大公司的压力
方法分析

HHI的局限性:
分析流程:使用top100品牌数据,通过交易指数反映销售额从而得到市场占有率,描述各品牌市场份额,计算HHI指标:

  1. 行业细分:由于产品分类细化,类间差异大,销售量数据就不一定能准确判断行业集
    中度.(例如某个大行业中各大公司市场份额相同,但业务不同,仍可能造成垄断)
  2. 地理范围:从总的市场份额来看占比一致,但是各个公司可能在当地造成垄断
  3. 长尾现象:无限小众市场抗衡大市场(看具体行业)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值