从航空公司系统内的客户基本信息、乘机信息以及积分信息等详细数据中,根据末次飞行日期(LAST_FLIGHT_DATE),以2014年3月31日为结束时间,选取宽度为两年的时间段作为分析观测窗口,抽取观测窗口2012年4月1日至2014年3月31日内有乘机记录的所有客户的详细数据形成历史数据,总共62988条记录。其中包含了如会员卡号,入会时间,性别,年龄,会员卡级别,工作地城市,工作地所在省份,工作地所在国家,观测窗口结束时间,观测窗口乘机积分,飞行公里数,飞行次数,飞行时间,乘机时间间隔,平均折扣率等44个属性,如表1所示。
表1航空公司数据属性说明
属性名称 |
属性说明 |
|
客户基本信息 |
MEMBER_NO |
会员卡号 |
FFP_DATE |
入会时间 |
|
FIRST_FLIGHT_DATE |
第一次飞行日期 |
|
GENDER |
性别 |
|
FFP_TIER |
会员卡级别 |
|
WORK_CITY |
工作地城市 |
|
WORK_PROVINCE |
工作地所在省份 |
|
WORK_COUNTRY |
工作地所在国家 |
|
AGE |
年龄 |
|
乘机信息 |
FLIGHT_COUNT |
观测窗口内的飞行次数 |
LOAD_TIME |
观测窗口的结束时间 |
|
LAST_TO_END |
最后一次乘机时间至观测窗口结束时长 |
|
AVG_DISCOUNT |
平均折扣率 |
|
SUM_YR |
观测窗口的票价收入 |
|
SEG_KM_SUM |
观测窗口的总飞行公里数 |
|
LAST_FLIGHT_DATE |
末次飞行日期 |
|
AVG_INTERVAL |
平均乘机时间间隔 |
|
MAX_INTERVAL |
最大乘机间隔 |
|
积分信息 |
EXCHANGE_COUNT |
积分兑换次数 |
EP_SUM |
总精英积分 |
|
PROMOPTIVE_SUM |
促销积分 |
|
PARTNER_SUM |
合作伙伴积分 |
|
POINTS_SUM |
总累计积分 |
|
POINT_NOTFLIGHT |
非乘机的积分变动次数 |
|
BP_SUM |
总基本积分 |
*数据详见:demo/data/air_data.csv。
1. 描述性统计分析
通过对原始数据观察发现数据中存在票价为空值的记录,同时存在票价最小值为0、折扣率最小值为0但总飞行公里数大于0的记录。票价为空值的数据可能是客户不存在乘机记录造成。其它的数据可能是客户乘坐0折机票或者积分兑换造成。
查找每列属性观测值中空值个数、最大值、最小值,如代码清单1所示。
代码清单1数据探索
# 对数据进行基本的探索 # 返回缺失值个数以及最大最小值 import pandas as pd datafile= '../data/air_data.csv' # 航空原始数据,第一行为属性标签 resultfile = '../tmp/explore.csv' # 数据探索结果表 # 读取原始数据,指定UTF-8编码(需要用文本编辑器将数据装换为UTF-8编码) data = pd.read_csv(datafile, encoding = 'utf-8') # 包括对数据的基本描述,percentiles参数是指定计算多少的分位数表(如1/4分位数、中位数等) explore = data.describe(percentiles = [], include = 'all').T # describe()函数自动计算非空值数,需要手动计算空值数 explore['null'] = len(data)-explore['count'] explore = explore[['null', 'max', 'min']] explore.columns = [u'空值数', u'最大值', u'最小值'] # 表头重命名 ''' 这里只选取部分探索结果。 describe()函数自动计算的字段有count(非空值数 |