1 背景说明
正常情况下,一家公司一个业务线的客户数量的成长过程类似一个地区的人口增长一样,一般会经历这几个成长阶段,即沉默期、成长期、爆发期、稳定期,而整个过程的走势曲线符合“S”型曲线。以汽车后市场的询价客户数为例,当渗透率达到上限,以及流失和留存达到一个平衡状态之后,其客户数会维持一个稳定的水平,基于这样的一个前提假设,下面我们尝试用logistics增长模型来拟合客户数增长趋势。
2 数据探索性分析
用python读取数据,查看数据的信息,观察是否存在缺失的数据,计算数据的描述性统计指标,大致了解数据的分布情况,具体python代码如下:
import pandas as pd
data = pd.read_excel(r'D:\logistic增长拟合\高端车中端车询价客户数数据.xlsx',engine='openpyxl')
print(data.info())
print(data[['高端车询价客户数','中端车询价客户数']].describe())
运行结果:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 59 entries, 0 to 58
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 月份 59 non-null int64
1 高端车询价客户数 59 non-null int64
2 中端车询价客户数 59 non-null int64
dtypes: int64(3)
memory usage: 1.5 KB
None
高端车询价客户数 中端车询价客户数
count 59.000000 59.000000
mean 14757.254237 12549.542373
std 12560.147425 13848.859081
min 263.000000 45.000000
25% 2693.500000 830.500000
50% 13423.000000 7604.000000
75% 21892.500000 19858.500000
max 42052.000000 47767.000000
从结果可以看到,数据不存在缺失的问题,高端车的数据相对于中端车而言,要稳定一些。
下面我们绘制散点图,观察中高端车询价客户数各自现阶段的走势如何,具体python代码如下:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文显示问题
plt.rcParams['axes.unicode_minus'] = False # 解决坐标轴负数问题
t = data['月份'].to_list()
t1 = np.array(range(1,len(t)+1))
P_A = data['高端车询价客户数'].values
P_B = data['中端车询价客户数'].values
# 绘制散点图
fig1 = plt.figure(figsize=(15,6))
plt.scatter(x=t1,y=P_A,c='g',marker='o',label='高端车询价客户数')
plt.scatter(x=t1,y=P_B,c='b',marker='*',label='中端车询价客户数')
plt.xticks(ticks=t1,labels=t,rotation=90)
plt.xlabel('日期')
plt.ylabel('客户数')
plt.legend(loc=0)
plt.show()
运行结果:
从图片可以看到,由于春节的影响,19年到21年的2月份的询价客户数都出现了一个断崖式下跌,从样本集来看就是存在离群点,如果为了让拟合出来的增长速率更精准,朋友们可以对每年2月份的数据进行处理,处理的方式可以有以下两种:(1)剔除2月份的数据;(2)用2月份往前的三项数据的算术平均值代替2月份的数据。
3 模型拟合
下面我们以logistics增长模型