import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sn
data=pd.read_csv('../air_data.csv')
data
#数据的描述性统计
explore=data.describe(percentiles=[],include='all').T
explore
|
count |
unique |
top |
freq |
mean |
std |
min |
50% |
max |
MEMBER_NO |
62988.0 |
NaN |
NaN |
NaN |
31494.5 |
18183.213715 |
1.0 |
31494.5 |
62988.0 |
FFP_DATE |
62988 |
3068 |
2011/1/13 |
184 |
NaN |
NaN |
NaN |
NaN |
NaN |
FIRST_FLIGHT_DATE |
62988 |
3406 |
2013/2/16 |
96 |
NaN |
NaN |
NaN |
NaN |
NaN |
GENDER |
62985 |
2 |
男 |
48134 |
NaN |
NaN |
NaN |
NaN |
NaN |
FFP_TIER |
62988.0 |
NaN |
NaN |
NaN |
4.102162 |
0.373856 |
4.0 |
4.0 |
6.0 |
WORK_CITY |
60719 |
3309 |
广州 |
9385 |
NaN |
NaN |
NaN |
NaN |
NaN |
WORK_PROVINCE |
59740 |
1183 |
广东 |
17507 |
NaN |
NaN |
NaN |
NaN |
NaN |
WORK_COUNTRY |
62962 |
118 |
CN |
57748 |
NaN |
NaN |
NaN |
NaN |
NaN |
AGE |
62568.0 |
NaN |
NaN |
NaN |
42.476346 |
9.885915 |
6.0 |
41.0 |
110.0 |
LOAD_TIME |
62988 |
1 |
2014/3/31 |
62988 |
NaN |
NaN |
NaN |
NaN |
NaN |
FLIGHT_COUNT |
62988.0 |
NaN |
NaN |
NaN |
11.839414 |
14.049471 |
2.0 |
7.0 |
213.0 |
BP_SUM |
62988.0 |
NaN |
NaN |
NaN |
10925.081254 |
16339.486151 |
0.0 |
5700.0 |
505308.0 |
EP_SUM_YR_1 |
62988.0 |
NaN |
NaN |
NaN |
0.0 |
0.0 |
0.0 |
0.0 |
0.0 |
EP_SUM_YR_2 |
62988.0 |
NaN |
NaN |
NaN |
265.689623 |
1645.702854 |
0.0 |
0.0 |
74460.0 |
SUM_YR_1 |
62437.0 |
NaN |
NaN |
NaN |
5355.376064 |
8109.450147 |
0.0 |
2800.0 |
239560.0 |
SUM_YR_2 |
62850.0 |
NaN |
NaN |
NaN |
5604.026014 |
8703.364247 |
0.0 |
2773.0 |
234188.0 |
SEG_KM_SUM |
62988.0 |
NaN |
NaN |
NaN |
17123.878691 |
20960.844623 |
368.0 |
9994.0 |
580717.0 |
WEIGHTED_SEG_KM |
62988.0 |
NaN |
NaN |
NaN |
12777.152439 |
17578.586695 |
0.0 |
6978.255 |
558440.14 |
LAST_FLIGHT_DATE |
62988 |
731 |
2014/3/31 |
959 |
NaN |
NaN |
NaN |
NaN |
NaN |
AVG_FLIGHT_COUNT |
62988.0 |
NaN |
NaN |
NaN |
1.542154 |
1.786996 |
0.25 |
0.875 |
26.625 |
AVG_BP_SUM |
62988.0 |
NaN |
NaN |
NaN |
1421.440249 |
2083.121324 |
0.0 |
752.375 |
63163.5 |
BEGIN_TO_FIRST |
62988.0 |
NaN |
NaN |
NaN |
120.145488 |
159.572867 |
0.0 |
50.0 |
729.0 |
LAST_TO_END |
62988.0 |
NaN |
NaN |
NaN |
176.120102 |
183.822223 |
1.0 |
108.0 |
731.0 |
AVG_INTERVAL |
62988.0 |
NaN |
NaN |
NaN |
67.749788 |
77.517866 |
0.0 |
44.666667 |
728.0 |
MAX_INTERVAL |
62988.0 |
NaN |
NaN |
NaN |
166.033895 |
123.39718 |
0.0 |
143.0 |
728.0 |
ADD_POINTS_SUM_YR_1 |
62988.0 |
NaN |
NaN |
NaN |
540.316965 |
3956.083455 |
0.0 |
0.0 |
600000.0 |
ADD_POINTS_SUM_YR_2 |
62988.0 |
NaN |
NaN |
NaN |
814.689258 |
5121.796929 |
0.0 |
0.0 |
728282.0 |
EXCHANGE_COUNT |
62988.0 |
NaN |
NaN |
NaN |
0.319775 |
1.136004 |
0.0 |
0.0 |
46.0 |
avg_discount |
62988.0 |
NaN |
NaN |
NaN |
0.721558 |
0.185427 |
0.0 |
0.711856 |
1.5 |
P1Y_Flight_Count |
62988.0 |
NaN |
NaN |
NaN |
5.766257 |
7.210922 |
0.0 |
3.0 |
118.0 |
L1Y_Flight_Count |
62988.0 |
NaN |
NaN |
NaN |
6.073157 |
8.175127 |
0.0 |
3.0 |
111.0 |
P1Y_BP_SUM |
62988.0 |
NaN |
NaN |
NaN |
5366.72055 |
8537.773021 |
0.0 |
2692.0 |
246197.0 |
L1Y_BP_SUM |
62988.0 |
NaN |
NaN |
NaN |
5558.360704 |
9351.956952 |
0.0 |
2547.0 |
259111.0 |
EP_SUM |
62988.0 |
NaN |
NaN |
NaN |
265.689623 |
1645.702854 |
0.0 |
0.0 |
74460.0 |
ADD_Point_SUM |
62988.0 |
NaN |
NaN |
NaN |
1355.006223 |
7868.477 |
0.0 |
0.0 |
984938.0 |
Eli_Add_Point_Sum |
62988.0 |
NaN |
NaN |
NaN |
1620.695847 |
8294.398955 |
0.0 |
0.0 |
984938.0 |
L1Y_ELi_Add_Points |
62988.0 |
NaN |
NaN |
NaN |
1080.378882 |
5639.857254 |
0.0 |
0.0 |
728282.0 |
Points_Sum |
62988.0 |
NaN |
NaN |
NaN |
12545.7771 |
20507.8167 |
0.0 |
6328.5 |
985572.0 |
L1Y_Points_Sum |
62988.0 |
NaN |
NaN |
NaN |
6638.739585 |
12601.819863 |
0.0 |
2860.5 |
728282.0 |
Ration_L1Y_Flight_Count |
62988.0 |
NaN |
NaN |
NaN |
0.486419 |
0.319105 |
0.0 |
0.5 |
1.0 |
Ration_P1Y_Flight_Count |
62988.0 |
NaN |
NaN |
NaN |
0.513581 |
0.319105 |
0.0 |
0.5 |
1.0 |
Ration_P1Y_BPS |
62988.0 |
NaN |
NaN |
NaN |
0.522293 |
0.339632 |
0.0 |
0.514252 |
0.999989 |
Ration_L1Y_BPS |
62988.0 |
NaN |
NaN |
NaN |
0.468422 |
0.338956 |
0.0 |
0.476747 |
0.999993 |
Point_NotFlight |
62988.0 |
NaN |
NaN |
NaN |
2.728155 |
7.364164 |
0.0 |
0.0 |
140.0 |
from datetime import datetime
ffp=data['FFP_DATE'].apply(lambda x:datetime.strptime(x,'%Y/%m/%d'))
ffp_year=ffp.map(lambda x : x.year)
#绘制各年份会员入会人数直方图
fig=plt.figure(figsize=(8,5))
plt.rcParams['font.sans-serif'] = 'SimHei' # 设置中文显示
plt.rcParams['axes.unicode_minus'] = False
plt.hist(ffp_year, bins='auto', color='#111111')
plt.xlabel('年份')
plt.ylabel('入会人数')
plt.title('各年份会员入会人数 2019320143322李之琛')
plt.show()
plt.close
<function matplotlib.pyplot.close(fig=None)>
male=pd.value_counts(data['GENDER'])['男']
female=pd.value_counts(data['GENDER'])['女']
fig = plt.figure(figsize = (7 ,4)) # 设置画布大小
plt.pie([ male, female], labels=['男','女'], colors=['lightskyblue', 'lightcoral'],
autopct='%1.1f%%')
plt.title('会员性别比例2019320143322李之琛')
plt.show()
plt.close
<function matplotlib.pyplot.close(fig=None)>
#提取属性并合并为新数据集
data_corr = data[['FFP_TIER','FLIGHT_COUNT','LAST_TO_END',
'SEG_KM_SUM','EXCHANGE_COUNT','Points_Sum']]
age1 = data['AGE'].fillna(0)
data_corr['AGE'] = age1.astype('int64')
data_corr['ffp_year'] = ffp_year
# 计算相关性矩阵
dt_corr = data_corr.corr(method = 'pearson')
print('相关性矩阵为:\n',dt_corr)
# 绘制热力图
import seaborn as sns
plt.subplots(figsize=(10, 10)) # 设置画面大小
sns.heatmap(dt_corr, annot=True, vmax=1, square=True, cmap='Blues')
plt.title('热力3322李之琛')
plt.show()
plt.close()
C:\Users\reion\AppData\Local\Temp\ipykernel_21832\391820817.py:5: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
data_corr['AGE'] = age1.astype('int64')
C:\Users\reion\AppData\Local\Temp\ipykernel_21832\391820817.py:6: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
data_corr['ffp_year'] = ffp_year
相关性矩阵为:
FFP_TIER FLIGHT_COUNT LAST_TO_END SEG_KM_SUM \
FFP_TIER 1.000000 0.582447 -0.206313 0.522350
FLIGHT_COUNT 0.582447 1.000000 -0.404999 0.850411
LAST_TO_END -0.206313 -0.404999 1.000000 -0.369509
SEG_KM_SUM 0.522350 0.850411 -0.369509 1.000000
EXCHANGE_COUNT 0.342355 0.502501 -0.169717 0.507819
Points_Sum 0.559249 0.747092 -0.292027 0.853014
AGE 0.076245 0.075309 -0.027654 0.087285
ffp_year -0.116510 -0.188181 0.117913 -0.171508
EXCHANGE_COUNT Points_Sum AGE ffp_year
FFP_TIER 0.342355 0.559249 0.076245 -0.116510
FLIGHT_COUNT 0.502501 0.747092 0.075309 -0.188181
LAST_TO_END -0.169717 -0.292027 -0.027654 0.117913
SEG_KM_SUM 0.507819 0.853014 0.087285 -0.171508
EXCHANGE_COUNT 1.000000 0.578581 0.032760 -0.216610
Points_Sum 0.578581 1.000000 0.074887 -0.163431
AGE 0.032760 0.074887 1.000000 -0.242579
ffp_year -0.216610 -0.163431 -0.242579 1.000000