首页 > 其他分享 >航空公司客户价值分析各类图代码

航空公司客户价值分析各类图代码

时间:2023-03-12 21:24:16浏览次数:39  
标签:plt corr 航空公司 代码 explore 会员 各类 pd data

import pandas as pd

datafile= 'D:\data/air_data.csv'  # 航空原始数据,第一行为属性标签
resultfile = 'D:\data/explore.csv'  # 数据探索结果表

# 读取原始数据,指定UTF-8编码(需要用文本编辑器将数据装换为UTF-8编码)
data = pd.read_csv(datafile, encoding = 'utf-8')

# 包括对数据的基本描述,percentiles参数是指定计算多少的分位数表(如1/4分位数、中位数等)
explore = data.describe(percentiles = [], include = 'all').T  # T是转置,转置后更方便查阅
explore['null'] = len(data)-explore['count']  # describe()函数自动计算非空值数,需要手动计算空值数

explore = explore[['null', 'max', 'min']]
explore.columns = ['空值数', '最大值', '最小值']  # 表头重命名
'''
这里只选取部分探索结果。
describe()函数自动计算的字段有count(非空值数)、unique(唯一值数)、top(频数最高者)、
freq(最高频数)、mean(平均值)、std(方差)、min(最小值)、50%(中位数)、max(最大值)
'''

explore.to_csv(resultfile)  # 导出结果


import pandas as pd
import matplotlib.pyplot as plt 

datafile= 'D:\data/air_data.csv'  # 航空原始数据,第一行为属性标签

# 读取原始数据,指定UTF-8编码(需要用文本编辑器将数据装换为UTF-8编码)
data = pd.read_csv(datafile, encoding = 'utf-8')

# 客户信息类别
# 提取会员入会年份
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='#0504aa')
plt.xlabel('年份')
plt.ylabel('入会人数')
plt.title('各年份会员入会人数--number:3014')
plt.show()
plt.close

 

 

# 提取会员不同性别人数
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('会员性别比例--number:3014')
plt.show()
plt.close

# 提取不同级别会员的人数
lv_four = pd.value_counts(data['FFP_TIER'])[4]
lv_five = pd.value_counts(data['FFP_TIER'])[5]
lv_six = pd.value_counts(data['FFP_TIER'])[6]
# 绘制会员各级别人数条形图
fig = plt.figure(figsize = (8 ,5))  # 设置画布大小
plt.bar(x=range(3), height=[lv_four,lv_five,lv_six], width=0.4, alpha=0.8, color='skyblue')
plt.xticks([index for index in range(3)], ['4','5','6'])
plt.xlabel('会员等级')
plt.ylabel('会员人数')
plt.title('会员各级别人数--number:3014')
plt.show()
plt.close()

 

# 提取会员年龄
age = data['AGE'].dropna()
age = age.astype('int64')
# 绘制会员年龄分布箱型图
fig = plt.figure(figsize = (5 ,10))
plt.boxplot(age, 
            patch_artist=True,
            labels = ['会员年龄'],  # 设置x轴标题
            boxprops = {'facecolor':'lightblue'})  # 设置填充颜色
plt.title('会员年龄分布箱线图--number:3014')
# 显示y坐标轴的底线
plt.grid(axis='y')
plt.show()
plt.close

 

 

# 代码7-4

# 积分信息类别
# 提取会员积分兑换次数
ec = data['EXCHANGE_COUNT']
# 绘制会员兑换积分次数直方图
fig = plt.figure(figsize = (8 ,5))  # 设置画布大小
plt.hist(ec, bins=5, color='#0504aa')
plt.xlabel('兑换次数')
plt.ylabel('会员人数')
plt.title('会员兑换积分次数分布直方图--number:3014')
plt.show()
plt.close

 

 

# 提取会员总累计积分
ps = data['Points_Sum']
# 绘制会员总累计积分箱线图
fig = plt.figure(figsize = (5 ,8))
plt.boxplot(ps, 
            patch_artist=True,
            labels = ['总累计积分'],  # 设置x轴标题
            boxprops = {'facecolor':'lightblue'})  # 设置填充颜色
plt.title('客户总累计积分箱线图--number:3014')
# 显示y坐标轴的底线
plt.grid(axis='y')
plt.show()
plt.close

# 代码7-5

# 提取属性并合并为新数据集
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('热力图--number:3014')
plt.show()
plt.close

 

标签:plt,corr,航空公司,代码,explore,会员,各类,pd,data
From: https://www.cnblogs.com/cz944524/p/17209154.html

相关文章

  • 代码随想录算法Day39 | 62.不同路径,63. 不同路径 II
    62.不同路径题目链接:62.不同路径-力扣(LeetCode)思路确定dp数组(dptable)以及下标的含义dp[i][j]:表示从(0,0)出发,到(i,j)有dp[i][j]条不同的路径。确定递推公式......
  • 航空公司客户价值分析
    #-*-coding:utf-8-*-"""CreatedonWedMar808:46:512023@author:86184"""#对数据进行基本的探索#返回缺失值个数以及最大最小值importpandasasp......
  • MybatisPlus(十二) 代码生成器
    一、代码生成器publicclassFastAutoGeneratorTest{publicstaticvoidmain(String[]args){FastAutoGenerator......
  • 航空公司客户价值分析
    #-*-coding:utf-8-*-#代码7-1#对数据进行基本的探索#返回缺失值个数以及最大最小值importpandasaspddatafile='D://人工智能/air_data.csv'#航空原......
  • AI来实现代码转换!Python转Java,Java转Go不在话下?
    今天看到个有趣的网站,给大家分享一下。该网站的功能很神奇,可以实现编程语言的转化。感觉在一些场景之下还是有点作用的,比如你原来跟我一样是做Java的,因为工作需要突然转G......
  • JS中操作(处理)各类型数据的方法
    操作(处理)数据的方式主要有:数据类型转换增删改查变化显示(翻转,排序,大小写)合并截取​1.字符串数据操作方法获取字符串长度 length获取字符在字符串中所处位置indexOf()获取出......
  • java数据库代码生成工具代码
    importcom.baomidou.mybatisplus.annotation.IdType;importcom.baomidou.mybatisplus.generator.AutoGenerator;importcom.baomidou.mybatisplus.generator.config.*......
  • 分层测试以获得对代码的信心
    令我震惊的是,很少有开发人员了解综合测试。我经常收到开发人员发来的电子邮件,担心他们缺乏测试经验。说实话,他们应该担心!测试是没有商量余地的。顶级公司——以及我工作......
  • 代码大全 阅读笔记01
    阅读了代码大全,以下是我的收获:松散耦合性:耦合性就是两个子程序之间的紧密程度。要注意耦合的规模:注意两个子程序之间的联系程度。注意两个子程序之间的联系的直接程度,越......
  • 007 springboot集合mybatis-plus,使用其中的代码生成器
    代码生成器步骤一:在pom.xml中添加相应的依赖<!--代码生成器--><dependency><groupId>com.baomidou</groupId><artifactId>......