Posted on ::
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
countuniquetopfreqmeanstdmin50%max
MEMBER_NO62988.0NaNNaNNaN31494.518183.2137151.031494.562988.0
FFP_DATE6298830682011/1/13184NaNNaNNaNNaNNaN
FIRST_FLIGHT_DATE6298834062013/2/1696NaNNaNNaNNaNNaN
GENDER62985248134NaNNaNNaNNaNNaN
FFP_TIER62988.0NaNNaNNaN4.1021620.3738564.04.06.0
WORK_CITY607193309广州9385NaNNaNNaNNaNNaN
WORK_PROVINCE597401183广东17507NaNNaNNaNNaNNaN
WORK_COUNTRY62962118CN57748NaNNaNNaNNaNNaN
AGE62568.0NaNNaNNaN42.4763469.8859156.041.0110.0
LOAD_TIME6298812014/3/3162988NaNNaNNaNNaNNaN
FLIGHT_COUNT62988.0NaNNaNNaN11.83941414.0494712.07.0213.0
BP_SUM62988.0NaNNaNNaN10925.08125416339.4861510.05700.0505308.0
EP_SUM_YR_162988.0NaNNaNNaN0.00.00.00.00.0
EP_SUM_YR_262988.0NaNNaNNaN265.6896231645.7028540.00.074460.0
SUM_YR_162437.0NaNNaNNaN5355.3760648109.4501470.02800.0239560.0
SUM_YR_262850.0NaNNaNNaN5604.0260148703.3642470.02773.0234188.0
SEG_KM_SUM62988.0NaNNaNNaN17123.87869120960.844623368.09994.0580717.0
WEIGHTED_SEG_KM62988.0NaNNaNNaN12777.15243917578.5866950.06978.255558440.14
LAST_FLIGHT_DATE629887312014/3/31959NaNNaNNaNNaNNaN
AVG_FLIGHT_COUNT62988.0NaNNaNNaN1.5421541.7869960.250.87526.625
AVG_BP_SUM62988.0NaNNaNNaN1421.4402492083.1213240.0752.37563163.5
BEGIN_TO_FIRST62988.0NaNNaNNaN120.145488159.5728670.050.0729.0
LAST_TO_END62988.0NaNNaNNaN176.120102183.8222231.0108.0731.0
AVG_INTERVAL62988.0NaNNaNNaN67.74978877.5178660.044.666667728.0
MAX_INTERVAL62988.0NaNNaNNaN166.033895123.397180.0143.0728.0
ADD_POINTS_SUM_YR_162988.0NaNNaNNaN540.3169653956.0834550.00.0600000.0
ADD_POINTS_SUM_YR_262988.0NaNNaNNaN814.6892585121.7969290.00.0728282.0
EXCHANGE_COUNT62988.0NaNNaNNaN0.3197751.1360040.00.046.0
avg_discount62988.0NaNNaNNaN0.7215580.1854270.00.7118561.5
P1Y_Flight_Count62988.0NaNNaNNaN5.7662577.2109220.03.0118.0
L1Y_Flight_Count62988.0NaNNaNNaN6.0731578.1751270.03.0111.0
P1Y_BP_SUM62988.0NaNNaNNaN5366.720558537.7730210.02692.0246197.0
L1Y_BP_SUM62988.0NaNNaNNaN5558.3607049351.9569520.02547.0259111.0
EP_SUM62988.0NaNNaNNaN265.6896231645.7028540.00.074460.0
ADD_Point_SUM62988.0NaNNaNNaN1355.0062237868.4770.00.0984938.0
Eli_Add_Point_Sum62988.0NaNNaNNaN1620.6958478294.3989550.00.0984938.0
L1Y_ELi_Add_Points62988.0NaNNaNNaN1080.3788825639.8572540.00.0728282.0
Points_Sum62988.0NaNNaNNaN12545.777120507.81670.06328.5985572.0
L1Y_Points_Sum62988.0NaNNaNNaN6638.73958512601.8198630.02860.5728282.0
Ration_L1Y_Flight_Count62988.0NaNNaNNaN0.4864190.3191050.00.51.0
Ration_P1Y_Flight_Count62988.0NaNNaNNaN0.5135810.3191050.00.51.0
Ration_P1Y_BPS62988.0NaNNaNNaN0.5222930.3396320.00.5142520.999989
Ration_L1Y_BPS62988.0NaNNaNNaN0.4684220.3389560.00.4767470.999993
Point_NotFlight62988.0NaNNaNNaN2.7281557.3641640.00.0140.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