文章目录
项目背景
对客户分类,区分不同价值的客户,便于更好地管理不同层次的客户关系。
针对不同价值的客户提供个性化服务方案,采取不同营销策略,将有限的资源尽量集中于高价值客户,以实现企业利润最大化目标。
一、数据分类目的
1.借助航空公司的客户数据,把客户分成5类,按重要程度,依次为:
低价值、一般价值、重要挽留、重要发展、重要保持
2.分类完毕后对不同类别进行特征分析,分析原因。
3.根据结论制定对不同类级客户的营销方案,以达到利润最大化。
二、数据选定及预处理
1.选定模型及数据
选定合适的商业分析模型及对应特征是非常关键的一步。基于RFM模型(R代表客户最近消费时间间隔,F代表消费频率,M代表消费金额)及航空业务的实际情况,把用L、M、C 这三个因素反映M消费金额 ,延伸出LRFMC 模型:
客户入会时间长度 L : LOAD_TIME - FFPDATE
消费时间间隔 R: LAST_TO_END
消费频率 F: FLIGHT_COUNT
飞行里程M和折扣系数的平均值C五个指标作为航空公司识别客户价值指标 : SEG_KM_SUM AVG-DISCOUNT
2.读入数据
import numpy as np
import pandas as pd
datafile = r'C:\xlwings\air\air_data.csv' # 航空原始数据,第一行为属性标签 ##写入的数据的文件路径
cleanedfile =r'C:\xlwings\air\data_cleaned.csv' # 数据清洗后保存的文件 ##输出的数据的文件路径
data = pd.read_csv(datafile, encoding='utf-8') # 读取原始数据,指定UTF-8编码
3. 浏览数据
print('查看各字段属性') # 查看各字段属性
# print(data.info())
print('查看缺失项') # 查看缺失项
# print(data.isnull().sum()[data.isnull().sum().values != 0]) # 得出children,country,agent,company四个字段含有缺失项
print('查看数据大小') # 查看数据大小
# print(data.size)
# print(data.shape)
print('看数据数据及分布') # 查看数据数据及分布
# print(data.describe().T)
结论:数据明显存在缺失值以及异常值。
缺失值:SUM_YR_1,SUM_YR_2(分别代表某个客户观测期内票价花费金额)
处理措施:数据占比太少,删除缺失值
异常值: 票价均为0,平均折扣率不为0,总飞行里数大于0的记录(不符合逻辑)
处理措施: 予以删除
4. 数据预处理
4.1 数据清洗
data = data[data['SUM_YR_1'].notnull() * data['SUM_YR_2'].notnull()] # 票价非空值才保留 ('SUM_YR_1'字段的布尔值和'SUM_YR_2'的相乘,得到合并的布尔值)
##[清除空值]此举同时清洗了两个字段为空值的多行数据
# 只保留票价非零的,或者平均折扣率与总飞行公里数同时为0的记录。
index1 = data['SUM_YR_1'] != 0 #票价不为0的布尔值列表
index2 = data['SUM_YR_2'