航空公司客户价值分析-KMeans聚类
import numpy as np
import pandas as pd
data = pd.read_csv(r'***\chapter7\demo\data\air_data.csv', encoding='utf-8')
data.head()
|
MEMBER_NO |
FFP_DATE |
FIRST_FLIGHT_DATE |
GENDER |
FFP_TIER |
WORK_CITY |
WORK_PROVINCE |
WORK_COUNTRY |
AGE |
LOAD_TIME |
... |
ADD_Point_SUM |
Eli_Add_Point_Sum |
L1Y_ELi_Add_Points |
Points_Sum |
L1Y_Points_Sum |
Ration_L1Y_Flight_Count |
Ration_P1Y_Flight_Count |
Ration_P1Y_BPS |
Ration_L1Y_BPS |
Point_NotFlight |
0 |
54993 |
2006/11/02 |
2008/12/24 |
男 |
6 |
. |
北京 |
CN |
31.0 |
2014/03/31 |
... |
39992 |
114452 |
111100 |
619760 |
370211 |
0.509524 |
0.490476 |
0.487221 |
0.512777 |
50 |
1 |
28065 |
2007/02/19 |
2007/08/03 |
男 |
6 |
NaN |
北京 |
CN |
42.0 |
2014/03/31 |
... |
12000 |
53288 |
53288 |
415768 |
238410 |
0.514286 |
0.485714 |
0.489289 |
0.510708 |
33 |
2 |
55106 |
2007/02/01 |
2007/08/30 |
男 |
6 |
. |
北京 |
CN |
40.0 |
2014/03/31 |
... |
15491 |
55202 |
51711 |
406361 |
233798 |
0.518519 |
0.481481 |
0.481467 |
0.518530 |
26 |
3 |
21189 |
2008/08/22 |
2008/08/23 |
男 |
5 |
Los Angeles |
CA |
US |
64.0 |
2014/03/31 |
... |
0 |
34890 |
34890 |
372204 |
186100 |
0.434783 |
0.565217 |
0.551722 |
0.448275 |
12 |
4 |
39546 |
2009/04/10 |
2009/04/15 |
男 |
6 |
贵阳 |
贵州 |
CN |
48.0 |
2014/03/31 |
... |
22704 |
64969 |
64969 |
338813 |
210365 |
0.532895 |
0.467105 |
0.469054 |
0.530943 |
39 |
5 rows × 44 columns
一、数据探索
explore = data.describe(percentiles = [], include = 'all').T
explore.head()
|
count |
unique |
top |
freq |
mean |
std |
min |
50% |
max |
MEMBER_NO |
62988 |
NaN |
NaN |
NaN |
31494.5 |
18183.2 |
1 |
31494.5 |
62988 |
FFP_DATE |
62988 |
3068 |
2011/01/13 |
184 |
NaN |
NaN |
NaN |
NaN |
NaN |
FIRST_FLIGHT_DATE |
62988 |
3406 |
2013/02/16 |
96 |
NaN |
NaN |
NaN |
NaN |
NaN |
GENDER |
62985 |
2 |
男 |
48134 |
NaN |
NaN |
NaN |
NaN |
NaN |
FFP_TIER |
62988 |
NaN |
NaN |
NaN |
4.10216 |
0.373856 |
4 |
4 |
6 |
explore['null'] = len(data)-explore['count']
explore.head()
|
count |
unique |
top |
freq |
mean |
std |
min |
50% |
max |
null |
MEMBER_NO |
62988 |
NaN |
NaN |
NaN |
31494.5 |
18183.2 |
1 |
31494.5 |
62988 |
0 |
FFP_DATE |
62988 |
3068 |
2011/01/13 |
184 |
NaN |
NaN |
NaN |
NaN |
NaN |
0 |
FIRST_FLIGHT_DATE |
62988 |
3406 |
2013/02/16 |
96 |
NaN |
NaN |
NaN |
NaN |
NaN |
0 |
GENDER |
62985 |
2 |
男 |
48134 |
NaN |
NaN |
NaN |
NaN |
NaN |
3 |
FFP_TIER |
62988 |
NaN |
NaN |
NaN |
4.10216 |
0.373856 |
4 |
4 |
6 |
0 |
shuxing = pd.read_excel(r'***\chapter7\demo\data\客户信息属性说明.xls')
shuxing.head()
|
属性中文 |
属性英文 |
备注 |
0 |
会员卡号 |
MEMBER_NO |
NaN |
1 |
入会时间 |
FFP_DATE |
办理会员卡的开始的时间 |
2 |
第一次飞行日期 |
FIRST_FLIGHT_DATE |
NaN |
3 |
性别 |
GENDER |
NaN |
4 |
会员卡级别 |
FFP_TIER |
NaN |
explore1 = pd.merge(explore, shuxing, left_index=True, right_on='属性英文' ,how ='left' )
explore1