利用Python分析航空公司客户价值
一、背景介绍
随着社会生活中数据量的急剧增多,如何从这些海量的数据中提取与发掘出对我们决策有用的信息成为当前亟待解决的题,因此,数据分析与挖掘技术在这些年得到了广泛的发展,也受到了足够的重视。面对不同领域的数据,不同的任务目标,我们在进行数据分析时也会选择不同的模型来进行建模,从而发现数据中的特征,提取其中的价值。常见的数据挖掘模型有:分类与预测、聚类分析、关联规则、时序模式、离群点检测等。这些模型,在我们的生活中已经有了广泛的应用。例如航空公司的客户价值分析,就是对用户数据进行聚类分析,发掘出不同价值群的用户,然后有针对性的制定相应的营销手段,实现精准化运营,以期获取最大的用户转化率。(更多内容,可参阅程序员在旅途)
本篇博文的实例来源于《Python数据分析与挖掘实践》(第二版)中的第七章。实现的主要目标是:
1,借助航空公司客户数据,对客户进行分类。
2,对不同客户类别进行特征分析,比较不同类别的客户价值。
3,针对不同价值的客户类别制定相应的营销策略,为其提供个性化服务。
二、分析步骤与流程
此案例的总体流程图如下所示。简单来说就是:因为最开始只是要构建模型,所以不需要使用航空公司的全部客户数据,只需要先从业务系统中抽取某一时段的客户数据作为训练即可,然后对数据从宏观上进行分析,之后对数据进行处理,使之能够达到建模的要求,最后选择合适的聚类算法建模并且对结果进行反馈。
2.1. 建模数据的获取:
这个可以从公司的业务系统选择性抽取,例如抽取最近两年的数据。数据的属性说明如下图所示:
2.2. 数据的宏观性探索分析:
2.2.1 描述性统计分析 - 查看属性字段的缺失值、平均值、最大值、最小值等情况,从宏观层面上了解数据。
import pandas as pd
datafile = r'C:\Users\itour\Desktop\air_customer_data.csv'
data = pd.read_csv(datafile, encoding='utf-8')
explore = data.describe(percentiles=[], include='all').T # 使用统计函数对数据进行统计分析
explore['null'] = len(data) - explore['count'] # 计算空值数
# describe有很多统计子项,这里就取我们要用到的即可
explore = explore[['null', 'mean', 'max', 'min']]
explore.columns = ['空值记录数', '最大值', '最小值', '平均值']
print(explore)
通过上图可以看出有一些记录含有空值,这样的数据对建模可能会有影响,因此,在后面的数据预处理环节,要把这些空值删掉。
2.2.2 数据的分布分析 - 寻找客户信息的分布规律,例如入会时间分布、年龄分布、性别分布、会员等级分布等等。
1)入会时间分布图展示
import pandas as pd
from datetime import datetime
import matplotlib.pyplot as plt
datafile = r'C:\Users\itour\Desktop\air_customer_data.csv'
data = pd.read_csv(datafile, encoding='utf-8')
ffp = data['FFP_DATE'].apply(lambda x: datet