数据挖掘-07-航空公司客户价值分析(包括数据和代码)
文章目录
- 0. 数据代码下载
- 1. 背景与挖掘目标
- 2. 导入相关库,加载数据
- 2.1客户基本信息分布
- a. 绘制会员性别比例饼图
- b. 绘制会员各级别人数条形图
- c. 绘制年龄分布图
 
- 2.2 客户乘机信息分布分析
- a. 绘制客户飞行次数箱线图
- b. 绘制客户总飞行公里数箱线图
 
- 2.3 客户积分信息分布分析
- a. 绘制会员总累计积分箱线图
 
 
- 3. 相关性分析
- 4. 数据预处理
- 4.1 数据变换
 
- 5. K-means客户聚类分析
- 5.1 绘制客户关系雷达图
 
 
0. 数据代码下载
关注公众号:『AI学习星球』
 回复:航空公司客户价值分析 即可获取数据下载。
 算法学习、4对1辅导、论文辅导或核心期刊可以通过公众号或CSDN滴滴我
 
1. 背景与挖掘目标
客户关系管理是精准化运营的基础,而客户关系管理的核心是客户分类。通过客户分类,对客户群体进行细分,区别出低价值客户与高价值客户,对不同的客户群体开展不同的个性化服务,将有限的资源合理地分配给不同价值的客户,从而实现效益最大化。
总体流程:
- 抽取航空公司2012年4月1日至2014年3月31日的数据。
- 对抽取的数据进行数据探索分析与预处理,包括数据缺失值与异常值的探索分析、数据清洗、特征构建、标准化等操作。
- 基于RFM模型,使用K-Means算法进行客户分群。
- 针对模型结果得到不同价值的客户,采用不同的营销手段,提供定制化的服务。
2. 导入相关库,加载数据
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
plt.style.use('ggplot')
%matplotlib inline
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
air_data = pd.read_csv('air_data.csv',encoding='utf8')
air_data
查看数据结构,6W+的数据,44个字段,包含了客户的基本信息,客户乘机信息,和客户的积分信息
 
air_data.head()

air_data.info()

2.1客户基本信息分布
选取客户基本信息中的入会时间、性别、会员卡级别和年龄字段进行探索分析,探索客户的基本信息分布情况
#处理入会时间,拿到年份,并按时间排序
air_data['year'] = pd.to_datetime(air_data['FFP_DATE']).dt.year
air_data = air_data.sort_values(by=['year'],ascending=True)
air_data = air_data.reset_index(drop=True)
sns.countplot('year',data=air_data)
plt.title('每年入会人数',fontsize=14)

a. 绘制会员性别比例饼图
air_data['GENDER'].value_counts().plot.pie(shadow=True,autopct='%.2f%%',labels=['男','女'])

b. 绘制会员各级别人数条形图
air_data.FFP_TIER.value_counts().plot.bar(label='grade',color='dodgerblue')
plt.title('会员各级别人数', fontsize=20)
plt.xlabel('会员等级', fontsize=14)
plt.ylabel('人数', fontsize=14)

c. 绘制年龄分布图
age = air_data['AGE'].dropna()
age = age.astype('int64')
fig = plt.figure(figsize = (5 ,10))
plt.boxplot(age, labels = ['AGE'],patch_artist=True,boxprops = {'facecolor':'lightblue'})
plt.title('age')

 可以看出大部分会员年龄集中在30~50岁之间,极少量的会员年龄小于20岁或高于60岁,且存在一个超过100岁的异常数据
2.2 客户乘机信息分布分析
lte = air_data['LAST_TO_END']
plt.figure(figsize = (5,8))
plt.boxplot(lte,patch_artist=True,labels = ['Time'],boxprops = {'facecolor':'lightblue'})
plt.title('乘机时长分布箱线图')

a. 绘制客户飞行次数箱线图
fc = air_data['FLIGHT_COUNT']
plt.figure(figsize = (5 ,8))
plt.boxplot(fc, patch_artist=True,labels = ['FLIGHT_COUNT'],boxprops = {'facecolor':'lightblue'})
plt.title('飞行次数箱线图')

b. 绘制客户总飞行公里数箱线图

 客户的飞行次数与总飞行公里数也明显地分为两个群体,大部分客户集中在箱型图下方的箱体中,少数客户分散分布在箱体上界的上方,这部分客户很可能是高价值客户,因为其飞行次数和总飞行公里数明显超过箱体内的其他客户
2.3 客户积分信息分布分析
ec = air_data['EXCHANGE_COUNT']fig = plt.figure(figsize = (8 ,5))
plt.hist(ec, bins=5, color='lightblue')
plt.xlabel('兑换次数')
plt.ylabel('会员人数')
plt.title('会员兑换积分次数分布直方图')

 绘制会员兑换积分次数直方图,绝大部分客户的兑换次数在0~10的区间内,这表示大部分客户都很少进行积分兑换
a. 绘制会员总累计积分箱线图
ps = air_data['Points_Sum']fig = plt.figure(figsize = (5 ,8))
plt.boxplot(ps, patch_artist=True,labels = ['总累计积分'],  # 设置x轴标题boxprops = {'facecolor':'lightblue'})  # 设置填充颜色
plt.title('客户总累计积分箱线图')

 一部分客户集中在箱体中,少部分客户分散分布在箱体上方,这部分客户的积分要明显高于箱体内的客户的积分。
3. 相关性分析
air_data['AGE'].fillna(0,inplace=True)
air_data['AGE'].astype('int64')data_2 = air_data[['FFP_TIER','FLIGHT_COUNT','LAST_TO_END','SEG_KM_SUM','EXCHANGE_COUNT','Points_Sum','AGE']]data_corr = data_2.corr(method = 'pearson')
print('相关性矩阵为:\n',data_corr)

plt.subplots(figsize=(10, 10))
sns.heatmap(data_corr, annot=True, vmax=1, square=True, cmap='Blues')

 可以看出部分属性间具有较强的相关性,如FLIGHT_COUNT(飞行次数)属性与SEG_KM_SUM(飞行总公里数)属性;也有部分属性与其他属性的相关性都较弱,如AGE(年龄)属性与EXCHANGE_COUNT(积分兑换次数)属性
4. 数据预处理
- 丢弃票价为空的记录
- 保留票价不为0的,或者平均折扣率不为0且总飞行公里数大于0的记录
- 丢弃年龄大于90的记录
air_data = air_data.dropna(axis=0,subset=['SUM_YR_1','SUM_YR_2'])
air_data = air_data[((air_data['SUM_YR_1']>0) | (air_data['SUM_YR_2']>0)) & (air_data['SEG_KM_SUM']>0) & (air_data['avg_discount']>0) &(air_data['AGE']<90)]
航空公司客户价值分析的LRFMC模型
在RFM模型中,消费金额表示在一段时间内客户购买该企业产品的金额的总和。由于航空票价受到运输距离、舱位等级等多种因素的影响,同样消费金额的不同旅客对航空公司的价值是不同的,例如,一位购买长航线、低等级舱位票的旅客与一位购买短航线、高等级舱位票的旅客相比,后者对于航空公司而言更有价值。因此这个特征并不适用于航空公司的客户价值分析。本案例选择客户在一定时间内累积的飞行里程M和客户在一定时间内乘坐舱位所对应的折扣系数的平均值C两个特征代替消费金额。此外,航空公司会员入会时间的长短在一定程度上能够影响客户价值,所以在模型中增加客户关系长度L,作为区分客户的另一特征。将清洗好的数据,保存,并重新读进来
air_data.to_csv('cleandata.csv')clean_data = pd.read_csv('cleandata.csv',encoding='utf8')
airline_selection = clean_data[['FFP_DATE','LOAD_TIME','LAST_TO_END','FLIGHT_COUNT','SEG_KM_SUM','avg_discount']]
airline_selection.head()

4.1 数据变换
将数据转换成“适当的”格式,以适应挖掘任务及算法的需要。
- 会员入会时间距观测窗口结束的月数L=会员入会时长
- 客户最近一次乘坐公司飞机距观测窗口结束的月数R=最后一次乘机时间至观测窗口末端时长(单位:月)
- 客户在观测时间内在公司累计的飞行次数F=观测窗口内的飞行次数
- 客户在观测时间内在公司累计的飞行里程M=观测窗口总飞行公里数(单位:公里 )
- 客户在观测时间内乘坐舱位所对应的折扣系数的平均值C=平均折扣率(单位:无)
在完成5个指标的数据提取后,发现5个指标的取值范围数据差异较大,为了消除数量级数据带来的影响,需要对数据进行标准化处理。
L = pd.to_datetime(airline_selection['LOAD_TIME']) - pd.to_datetime(airline_selection['FFP_DATE'])
L = L.astype('str').str.split().str[0]
L = L.astype('int')/30airline_features = pd.concat([L,airline_selection.iloc[:,2:]],axis = 1)
airline_features.columns = ['L','R','F','M','C']
print('构建的LRFMC属性前5行为:\n',airline_features.head())from sklearn.preprocessing import StandardScaler
data = StandardScaler().fit_transform(airline_features)
#np.savez('./airline_scale.npz',data)
print('标准化后LRFMC五个属性为:\n',data[:5,:])

5. K-means客户聚类分析
import sklearn.cluster as sc
model = sc.KMeans(n_clusters=5,n_jobs=4,random_state=123)
model.fit(data)
print('聚类中心:\n',model.cluster_centers_)
print('样本类别标签:\n',model.labels_)
print('不同类别样本的数目:\n',pd.Series(model.labels_).value_counts())

cluster_center = pd.DataFrame(model.cluster_centers_,\columns = ['ZL','ZR','ZF','ZM','ZC'])
cluster_center.index = pd.DataFrame(model.labels_ ).\drop_duplicates().iloc[:,0]
print(cluster_center)

5.1 绘制客户关系雷达图
labels = ['ZL','ZR','ZF','ZM','ZC']
legen = [' customers' + str(i + 1) for i in cluster_center.index]
lstype = ['-','--',(0, (3, 5, 1, 5, 1, 5)),':','-.']
kinds = list(cluster_center.iloc[:, 0])
并转换为 np.ndarray
cluster_center = pd.concat([cluster_center, cluster_center[['ZL']]], axis=1)
centers = np.array(cluster_center.iloc[:, 0:])n = len(labels)
angle = np.linspace(0, 2 * np.pi, n, endpoint=False)
angle = np.concatenate((angle, [angle[0]]))fig = plt.figure(figsize = (8,6))
ax = fig.add_subplot(111, polar=True) for i in range(len(kinds)):ax.plot(angle, centers[i], linestyle=lstype[i], linewidth=2, label=kinds[i])
ax.set_thetagrids(angle * 180 / np.pi, labels)
plt.title('Customer Profile Analysis')
plt.legend(legen)

通过建立合理的客户价值评估模型,对客户进行分类,分析比较不同客户群体的价值,并制定相应的营销策略,对不同的客户群提供个性化的客户服务是必须的和有效的。
关注公众号:『AI学习星球』
 回复:航空公司客户价值分析 即可获取数据下载。
 算法学习、4对1辅导、论文辅导或核心期刊可以通过公众号或CSDN滴滴我
 
相关文章:
 
数据挖掘-07-航空公司客户价值分析(包括数据和代码)
文章目录 0. 数据代码下载1. 背景与挖掘目标2. 导入相关库,加载数据2.1客户基本信息分布a. 绘制会员性别比例饼图b. 绘制会员各级别人数条形图c. 绘制年龄分布图 2.2 客户乘机信息分布分析a. 绘制客户飞行次数箱线图b. 绘制客户总飞行公里数箱线图 2.3 客户积分信息…...
浏览器 css 默认的字体图表
以下是一些常见的浏览器(PC端)中网站 CSS 默认字体及其对应的字体系列(font family): 浏览器默认字体字体系列(font family)ChromeArial, sans-serif“Arial”, “Helvetica Neue”, Helvetica…...
 
JAVA:注册表窗口的实现
目录 题目要求: 思路大意: 窗体的实现: 窗口A: 窗口B: 窗体之间的构思: 关键代码的实现: 窗口A: 封装列表: 窗口B: 题目要求: 使用…...
 
Liunx Centos 防火墙操作
liunx centos 防火墙 查看防火墙状态 systemctl status firewalld查看已经开放的端口 firewall-cmd --list-ports添加端口3306 firewall-cmd --zonepublic --add-port3306/tcp --permanent重启防火墙 firewall-cmd --reload数据库开放账号可以外网登陆 mysql -u root -p …...
 
VirtualBox 和 Vagrant 快速安装 Centos7 报错
VirtualBox 和 Vagrant 快速安装 Centos7 报错 今天尝试用 VirtualBox 和 Vagrant 快速安装 Centos7,BUG 多多! 1)下载 6.1.26 版本 VirtualBox,Windows11 不兼容???什么鬼? 解决…...
使用Python进行数学四则运算
当我们讨论到Python中的计算问题时,我们必然涉及到加法运算符()、减法运算符(-)、乘法运算符(*)以及除法运算符(/)这四大常见的算术运算。下面,我将为您展示如…...
 
成都工业学院2021级操作系统专周课程设计FCFS,SSTF,SCAN,LOOK算法的实现
运行环境 操作系统:Windows 11 家庭版 运行软件:CLion 2023.2.2 源代码文件 #include <iostream> #include <vector> #include <algorithm> #include <random> using namespace std;// 生成随机数 int generateRandomNumber…...
 
【51单片机系列】矩阵按键扩展实验
本文对矩阵按键的一个扩展,利用矩阵按键和动态数码管设计一个简易计算器。代码参考:https://blog.csdn.net/weixin_47060099/article/details/106664393 实现功能:使用矩阵按键,实现一个简易计算器,将计算数据及计算结…...
 
大数据云计算——Docker环境下部署Hadoop集群及运行集群案列
大数据云计算——Docker环境下部署Hadoop集群及运行集群案列 本文着重介绍了在Docker环境下部署Hadoop集群以及实际案例中的集群运行。首先,文章详细解释了Hadoop的基本概念和其在大数据处理中的重要性,以及为何选择在Docker环境下部署Hadoop集群。接着&…...
计算机网络链路层(期末、考研)
计算机网络总复习链接🔗 目录 组帧差错控制检错编码纠错编码 流量控制与可靠传输机制流量控制、可靠传输与滑动窗口机制单帧窗口与停止-等待协议多帧滑动窗口与后退N帧协议(GBN)多帧滑动窗口与选择重传协议 介质访问控制信道划分介质访问控制…...
 
洛谷 P8794 [蓝桥杯 2022 国 A] 环境治理
文章目录 [蓝桥杯 2022 国 A] 环境治理题目链接题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 思路解析CODE给点思考 [蓝桥杯 2022 国 A] 环境治理 题目链接 https://www.luogu.com.cn/problem/P8794 题目描述 LQ 国拥有 n n n 个城市,从 0 0 …...
力扣面试150题 | 买卖股票的最佳时期
力扣面试150题 | 买卖股票的最佳时期 题目描述解题思路代码实现 题目描述 121.买卖股票的最佳时期 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一…...
 
uniapp 之 图片 视频 文件上传
<view class"" style"padding: 24rpx 0"><text>相关资料 <text class"fs-26 color-666">(图片、视频、文档不超过9个)</text> </text><view class"flex align-center" style&…...
 
MIT线性代数笔记-第28讲-正定矩阵,最小值
目录 28.正定矩阵,最小值打赏 28.正定矩阵,最小值 由第 26 26 26讲的末尾可知在矩阵为实对称矩阵时,正定矩阵有以下四种判定方法(都是充要条件): 所有特征值都为正左上角所有 k k k阶子矩阵行列式都为正&…...
 
Python:五种算法RFO、GWO、DBO、HHO、SSA求解23个测试函数
一、五种算法介绍 (1)红狐优化算法(Red fox optimization,RFO) (2)灰狼优化算法(Grey Wolf Optimizer,GWO) (3)蜣螂优化算法(Dung beetle opti…...
如何参与开源项目
大家好,受卡哥邀请,和大家分享一下开源活动的相关经验。首先简要自我介绍一下,我目前在一所985研二在读,主要学习大数据方向,从去年开始参与开源活动近一年时间,也对多个Apache框架有所贡献。 由于学校或专…...
 
twitter开发如何避坑
此篇介绍在twitter开发过程中遇到的坑(尤其是费用的坑)。 一坑:免费接口少! 刚开始申请免费API使用的时候,twitter官方只会给你三个免费接口使用。 发twitter、删推文、查看用户信息。 这三个接口远远不够开发中使用…...
 
人工智能算法合集
人工智能(Artificial Intelligence,AI)作为当今世界最热门的技术领域之一,正日益改变着我们的生活方式、工作方式甚至整个社会结构。在人工智能领域中,算法是至关重要的一环,它们是实现人工智能技术应用的核…...
 
PythonStudio:一款国人写的python及窗口开发编辑IDE,可以替代pyqt designer等设计器了
本款软件只有十几兆,功能算是强大的,国人写的,很不错的python界面IDE.顶部有下载链接。下面有网盘下载链接,或者从官网直接下载。 目前产品免费,以后估计会有收费版本。主页链接:PythonStudio-硅量实验室 作…...
 
大模型应用_FastGPT
1 功能 整体功能,想解决什么问题 官方说明:FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景!个人体会…...
 
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
 
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
 
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
 
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
 
day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
k8s从入门到放弃之HPA控制器
k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率(或其他自定义指标)来调整这些对象的规模,从而帮助应用程序在负…...
 
VisualXML全新升级 | 新增数据库编辑功能
VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...
文件上传漏洞防御全攻略
要全面防范文件上传漏洞,需构建多层防御体系,结合技术验证、存储隔离与权限控制: 🔒 一、基础防护层 前端校验(仅辅助) 通过JavaScript限制文件后缀名(白名单)和大小,提…...
