行文体系出自《python数据分析与挖掘》第7章 航空公司客户价值分析
一、数据探索分析
describe() 基本描述分析
import pandas as pd
datafile = r'data\air_data.csv'
resultfile = r'data\explore.xlsx'
data = pd.read_csv(datafile)
explore = data.describe(percentiles = [], include = 'all').T
#include = 'all' 表示所有指标(字段)
备注:count:非空值数;unique:唯一值数量;top:频数最高者;freq:最高频数
计算空值数量、查看range
#计算空值数量
explore['null'] = len(data)-explore['count']
#查看数据概况
explore = explore[['null','max','min']]
explore.columns = ['空值数','最大值','最小值']
explore.to_excel(resultfile)
二、预处理
保留消费非空的记录
data3 = data[data['SUM_YR_1'].notnull() & data['SUM_YR_2'].notnull()]
保留年度票价为0、或者折扣率与总飞行里程同时为0的记录
index1 = data.SUM_YR_1 != 0
index2 = data.SUM_YR_2 != 0
index3 = (data['SEG_KM_SUM'] == 0) & (data['avg_discount'] == 0)
data4 = data3[index1|index2|index3]
data4.to_excel(cleanedfile)
三、特征工程 略
#时间差计算
import datetime
data4.L = pd.to_datetime(data4.LOAD_TIME) - pd.to_datetime(data4.FFP_DATE)
四、标准差标准化
data = (data-data.mean(axis = 0))/(data.std(axis = 0))
#重命名字段
data.columns = ['Z' + i for i in data.columns]
五、模型构建
#K-means聚类
from sklearn.cluster import KMeans
k = 5
iteration = 500 #聚类最大循环次数
kmodel = KMeans(n_clusters = k, n_jobs = 4)#n_jobs是并行数,设置为cpu数
kmodel.fit(data)
六、结果查看与整理
print(kmodel.cluster_centers_)#聚类中心
print(kmodel.labels_)#样本对应的类别
#简单打印结果
r1 = pd.Series(kmodel.labels_).value_counts() #统计各个类别的数目
r2 = pd.DataFrame(kmodel.cluster_centers_) #找出聚类中心
r = pd.concat([r2, r1], axis = 1) #横向连接(0是纵向), 得到聚类中心对应的类别下的数目
r2.columns = list(data.columns)
r.columns = list(data.columns) + [u'类别数目'] #重命名表头
七、结果分析
用excel做了一个雷达图,python目测得自己写轮子
吐槽:质量好差,还加码
八、模型应用
分类为需要费心思的用户和不需要费心思的用户
对需要费心思的贵宾,sssssVIP,高级会员等等名称的用户,各种细分,想方设法保住,不能流失,OK