26个数据分析案例——第二站:基于Hive的民航客户价值分析

实验所需环境

• Python: Python 3.x;
• Hadoop2.7.2环境;
• Hive2.2.0

数据说明

资料包

链接:https://pan.baidu.com/s/1Uzx5g2r54k9Q2PYK5_DlTQ
提取码:irq2

实验步骤

第一步:加载数据集

1、在Hive中创建名为air_data_base的数据库。

hive > create database air_data_base;
hive > use air_data_base;

运行结果为:

2、在上述创建的数据苦衷创建名为air_data_table的表。

hive> create table air_data_table(member_no string,ffp_date string,first_flight_date string,gender string,ffp_tier int,work_city string,work_province string,work_country string,age int,load_time string,flight_count int,bp_sum bigint,ep_sum_yr_1 int,ep_sum_yr_2 bigint,sum_yr_1 bigint,sum_yr_2 bigint,seg_km_sum bigint,weighted_seg_km double,last_flight_date string,avg_flight_count double,avg_bp_sum double,begin_to_first int,last_to_end int,avg_interval float,max_interval int,add_points_sum_yr_1 bigint,add_points_sum_yr_2 bigint,exchange_count int,avg_discount float,p1y_flight_count int,l1y_flight_count int,p1y_bp_sum bigint,1y_bp_sum bigint,ep_sum bigint,add_point_sum bigint,eli_add_point_sum bigint,l1y_eli_add_points bigint,points_sum bigint,l1y_points_sum float,ration_l1y_flight_count float,ration_p1y_flight_count float,ration_p1y_bps float,ration_l1y_bps float,point_notflight int)row format delimited fields terminated by ',';

运行结果为:

3、在/usr/local目录下创建名为aviation_data的文件夹并将将名为air_data.csv的数据集上传到该目录下,结果为:

4、将数据加载到名为air_data_table的数据表中

hive > load data local inpath '/usr/local/aviation_data/air_data.csv' overwrite into table air_data_table;
hive> select * from air_data_table limit 10;

运行结果为:

第二步:数据分析

1、统计观测窗口的票价收入(SUM_YR_1)、观测窗口的总飞行公里数(SEG_KM_SUM)和平均折扣率(AVG_DISCOUNT)三个字段的空值记录,并将结果保存到名为sum_seg_avg_null的表中。

hive > create table sum_seg_avg_null as select * from
(select count(*) as sum_yr_1_null_count from air_data_table where sum_yr_1 is null)
sum_yr_1,
(select count(*) as seg_km_sum_null from air_data_table where seg_km_sum is null)
seg_km_sum,
(select count(*) as avg_discount_null from air_data_table where avg_discount is null)
avg_discount;
hive> select * from sum_seg_avg_null;

运行结果为:

2、使用select语句统计air_data_table表中观测窗口的SUM_YR_1(票价收入)、SEG_KM_SUM(总飞行公里数)和AVG_DISCOUNT(平均折扣率)三列的最小值sum_seg_avg_min表中。

hive (default)> create table sum_seg_avg_min as selectmin(sum_yr_1) sum_yr_1,min(seg_km_sum) seg_km_sum,min(avg_discount) avg_discountfrom air_data_table;
hive (default)> select * from sum_seg_avg_min;

运行结果为:

第三步:数据清洗

1、通过上面两个步骤的数据分析不难看出数据中包含一定的数据缺失,但缺失的部分只占据了总体数据的少部分,不会影响最后的数据分析结果,所以这里将缺失值直接过滤掉,过滤掉的数据包括掉票价为空的记录、平均折扣率为0.0的记录、票价为0、平均折扣率不为0、总飞行公里数大于0的记录。

hive (default)> create table sum_yr_1_notnull as
select * from air_data_table wheresum_yr_1 is not null;
hive (default)> create table avg_discount_not_0 as select *from sum_yr_1_notnull where avg_discount <> 0;
hive (default)> create table sas_not_0 asselect * from avg_discount_not_0where !(sum_yr_1=0 and avg_discount <> 0and seg_km_sum > 0);

运行结果为:
过滤掉票价为空的记录


过滤平均折扣率为0.0的记录

过滤票价为0、平均折扣率不为0、总飞行公里数大于0的记录

2、为能够方便的建立LRFMC模型,需要从清洗后的数据中选择与其相关的6个属性,分别为LOAD_TIME、FFP_DATE、LAST_TO_END、FLIGHT_COUNT、SEG_KM_SUM、AVG_DISCOUNT。

hive> create table flfasl as select ffp_date,load_time,flight_count,avg_discount,seg_km_sum,last_to_end from sas_not_0;
hive> select * from flfasl limit 10;

运行结果为:

3、进行数据转换,将数据转换为适当的格式,使其能够适应挖掘任务及算法需要,在本任务中数据变换算法如下(本部分的算法仅针对于航空航空领域价值分析)。
构造LRFMC的5个指标和算法如下。
(1)L的构造:会员入会时间距离观测窗口结束的月数 = 观测窗口的结束时间 - 入会时间 [单位:月],本任务中公式如下。

L = LOAD_TIME - FFP_DATE

(2)R的构造:客户最近一次乘坐公司飞机距观测窗口结束的月数 = 最后一次乘机时间至观测窗口末端时长[单位:月],本任务中公式如下。

R = LAST_TO_END

(3)F的构造:客户再观测窗口内乘坐公司飞机的次数 = 观测窗口的飞行次数[单位: 次],本任务中公式如下。

F = FLIGHT_COUNT

(4)M的构造:客户再观测时间内在公司累计的飞行里程 = 观测窗口总飞行公里数[单位: 公里],本任务中公式如下。

M = SEG_KM_SUM

(5)C的构造:客户在观测时间内乘坐舱位所对应的折扣系数的平均值 = 平均折扣率 [单位: 无],本任务中公式如下。

C = AVG_DISCOUNT

根据以上公式对数据规约后的数据进行计算,得到LRFMC。

hive> create table lrfmc as select
round((unix_timestamp(LOAD_TIME,'yyyy/MM/dd')-unix_timestamp(FFP_DATE,'>yyyy/MM/dd'))/(30*24*60*60),2) as l,
round(last_to_end/30,2) as r,
FLIGHT_COUNT as f,
SEG_KM_SUM as m,
round(AVG_DISCOUNT,2) as c
from flfasl;

运行结果为:

4、对数据进行标准化操作,公式为标准化值= (x - min(x))/(max(x) - min(x)),将标准化后的数据保存到名为“standardlrfmc”的表中。

hive> create table standardlrfmc asselect (lrfmc.l-minlrfmc.l)/(maxlrfmc.l-minlrfmc.l) as l,(lrfmc.r-minlrfmc.r)/(maxlrfmc.r-minlrfmc.r) as r,(lrfmc.f-minlrfmc.f)/(maxlrfmc.f-minlrfmc.f) as f,(lrfmc.m-minlrfmc.m)/(maxlrfmc.m-minlrfmc.m) as m,(lrfmc.c-minlrfmc.c)/(maxlrfmc.c-minlrfmc.c) as cfrom lrfmc,(select max(l) as l,max(r) as r,max(f) as f,max(m) as m,max(c) as c from lrfmc) as maxlrfmc,
(select min(l) as l,min(r) as r,min(f) as f,min(m) as m,min(c) as c from lrfmc) as minlrfmc;

运行结果为:


5、将标准化后的数据导出到本地的standardlrfmc.csv中并使用逗号作为分隔符。

[root@master ~]# hive -e "insert overwrite local directory '/usr/local/standardlrfmc' row format delimited fields terminated by ',' select * from air_data.standardlrfmc;"
[root@master ~]# cd /usr/local/standardlrfmc
[root@master standardlrfmc]# ls
[root@master standardlrfmc]# mv 000000_0 standardlrfmc.csv
[root@master standardlrfmc]# ls

第四步:客户分类

1、根据业务逻辑,确定将客户大致分为五类,将k=5,以及标准化后的数据,利用之前建立的Kmeans模型,可算出这五类客户群体的聚类中心。

>>> import pandas as pd
>>> import numpy as np
>>> from sklearn.cluster import KMeans
>>> dt=pd.read_csv("/usr/local/standardlrfmc/standardlrfmc.csv",encoding='UTF-8')
>>> dt.columns=['L','R','F','M','C']
>>> model=KMeans(n_clusters=5)
>>> model.fit(dt)
>>> r1=pd.Series(model.labels_).value_counts()
>>> r2=pd.DataFrame(model.cluster_centers_)
>>> r=pd.concat([r2,r1],axis=1)
>>> r.columns=list(dt.columns)+['Clustercategory']
>>> r

运行结果为:

根据聚类中心结果,再结合航空公司的业务逻辑,可得如下结果:
 客户群1(Customers 1)在C属性上最大,可定义为重要挽留客户;
 客户群2(Customers 2)在L属性上最大,可定义为重要发展客户。
 客户群3(Customers 3)在F、M属性上最小,可定义为低价值客户;
 客户群4(Customers 4)在L属性上最大,可定义为一般客户;
 客户群5(Customers 5)在F、M属性上最小,可定义为低价值客户;

后续案例持续更新

01 基于Python的HBase冠字号查询系统
02基于Hive的民航客户价值分析
03 基于python的药店销售数据分析
04基于Flume与Kafka的web服务器日志数据采集
05 基于Scrapy的架构的数据采集
06 Linux操作系统实时日志采集并处理
07 医疗行业案例-中医病症辩证关联规则分析
08教育行业案例-高校学生生活数据分析
10 娱乐行业案例-广告收益回归预测模型
11网络行业案例-网站访问行为分析
12零售行业案例-店铺热门商品实时统计
13 营业额数据可视化
14金融行业案例-基于上市公司股票信息及其衍生变量的金融数据分析
15银行信用卡风险数据可视化
16 滴滴出行城市运营分析
17 幸福指数可视化
18 员工主动离职预警模型
19 歌手推荐模型
20 2020新冠肺炎疫情数据分析
21 淘宝购物狂欢节数据分析
22 共享单车数据分析
23人脸检测系统
24服装分拣系统
25口罩佩戴识别系统
26 imdb电影数据分析
20 2020新冠肺炎疫情数据分析
21 淘宝购物狂欢节数据分析
22 共享单车数据分析
23人脸检测系统
24服装分拣系统
25口罩佩戴识别系统
26 imdb电影数据分析

26个数据分析案例——第二站:基于Hive的民航客户价值分析相关推荐

  1. 26个数据分析案例——第一站:基于Python的HBase冠字号查询系统

    26个数据分析案例--第一站:基于Python的HBase冠字号查询系统 实验所需环境 • Python: Python 3.x: • Hadoop 2.7.7环境: • HBase 1.3.5: 数 ...

  2. 使用ML.NET实现基于RFM模型的客户价值分析

    RFM模型 在众多的客户价值分析模型中,RFM模型是被广泛应用的,尤其在零售和企业服务领域堪称经典的分类手段.它的核心定义从基本的交易数据中来,借助恰当的聚类算法,反映出对客户较为直观的分类指示,对于 ...

  3. 基于RFM模型的客户价值分析

    数据:air_data 模型:LRFMC 算法:K-Means 借助航空公司客户数据,对客户进行分类. https://nbviewer.jupyter.org/github/wfshhebau/LR ...

  4. 打怪升级之小白的大数据之旅(六十一)<Hive旅程第二站:Hive安装>

    打怪升级之小白的大数据之旅(六十一) Hive旅程第二站:Hive安装 上次回顾 上一章我们学习了Hive的概念以及框架原理,本章节是对Hive的安装进行分享,因为它有些需要自己配置的点,所以我单独开 ...

  5. Spark大数据-基于Hive和Spark的淘宝双11数据分析与预测

    基于Hive和Spark的淘宝双11数据分析与预测 1.系统和环境要求(版本仅供参考): Linux: centos7 MySQL: 5.7.16 Hadoop: 2.7.1 Hive: 1.2.1 ...

  6. 来自Bitly的USA.gov数据,数据分析案例

    数据分析案例01 xiaoyao 1.USA.gov Data from Bitly–来自Bitly的USA.gov数据 数据背景:2011年,URL缩短服务Bitly跟美国政府⽹站USA.gov合作 ...

  7. 《利用Python进行数据分析·第2版》第14章 数据分析案例

    第 1 章 准备工作第 2 章 Python 语法基础,IPython 和 Jupyter 第 3 章 Python 的数据结构.函数和文件 第 4 章 NumPy 基础:数组和矢量计算 第 5 章 ...

  8. B站基于Iceberg的湖仓一体架构实践

    点击上方蓝色字体,选择"设为星标" 回复"面试"获取更多惊喜 八股文教给我,你们专心刷题和面试 Hi,我是王知无,一个大数据领域的原创作者. 放心关注我,获取更 ...

  9. WINCE基于hive注册表的实现

    ********************************LoongEmbedded******************************** 作者:LoongEmbedded(kandi ...

最新文章

  1. Qt中的缓冲区QBuffer
  2. Java并发编程实战~Balking模式
  3. java predicate原理_Java Predicate
  4. 工厂 调用Unity Application Block 通过XML配置文件映射读取数据层方法
  5. excel如何做出弧形_人民日报同款海报,只用线和字就能做出高大上的工作报告...
  6. django 发送php,django 使用 request 获取浏览器发送的参数
  7. CentOS5.4安装libpng提示--configure: error: ZLib not installed
  8. 群晖NAS系统DSM入门
  9. matlab检验数据异方差,求教!怀特异方差检验方法在matlab中的实现,以及广义最........
  10. 个人第一次作业:阅读与准备作业
  11. Linux运维工程师综合面试题
  12. 2021年,这个岗位发展前景广,刚入行月薪上万?
  13. 用Python如何开发Excel宏脚本?新手必学
  14. Python中的Lasso回归之最小角算法LARS
  15. 倒排索引、正排索引系列一
  16. 程序人生 hello's P2P
  17. QLabel图片居中无拉伸
  18. CMakeList语法介绍
  19. CSS实现催眠动画效
  20. Starling的handleLostContext属性说明

热门文章

  1. windows全局消息钩子的一个BUG
  2. java根据2个经纬度点,计算这2个经纬度点之间的距离(通过经度纬度得到距离)
  3. 网站后台万能密码/10大常用弱口令
  4. 转 给SSD(固态硬盘)编程
  5. docker基本操作小结
  6. FLANN (1.9.2)源码编译
  7. 【智慧照明】宾馆智能照明控制系统
  8. 2019年京东PLUS会员前端开发之路总结
  9. Java项目:SSM医院病历信息管理系统
  10. 新手nvm npm 卸载不用依赖包,项识别为 cmdlet、函数、脚本文件,等命令集合