欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

python客户价值分析_航空公司客户价值分析实例

发布时间:2025/3/15 python 45 豆豆
生活随笔 收集整理的这篇文章主要介绍了 python客户价值分析_航空公司客户价值分析实例 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

第8章 航空公司客户价值分析

传统的识别客户价值应用最广泛的模型主要通过3个指标(最近消费时间间隔(Recency)、消费频率(Frequency)和消费金额(Monetary))来进行客户细分,识别出价值高的客户,简称RFC模型。

在RFC模型中,消费金额表示在一段时间内,客户购买产品的总金额。但是不适用于航空公司的数据处理。因此我们用客户在一段时间内的累计飞行里程M和客户在一定时间内乘坐舱位的折扣系数C代表消费金额。再在模型中增加客户关系长度L,所以我们用LRFMC模型。

8.1 探索数据

探索数据的缺失情况、异常值等。

#-*- coding: utf-8 -*-

#对数据进行基本的探索

#返回缺失值个数以及最大最小值

import pandas as pd

#航空原始数据,第一行为标题

datafile= '/home/hadoop/data/air_customer/air_data.csv'

#数据探索结果表

resultfile = '/home/hadoop/data/air_customer/tmp/explore.xls'

data = pd.read_csv(datafile, encoding = 'utf-8')

explore = data.describe().T

#计算空值

explore['null'] = len(data)-explore['count']

##统计空值,最大,最小值等

explore = explore[['null', 'max', 'min']]

explore

数据部分结果

null max min

MEMBER_NO 0.0 62988.000000 1.00

FFP_TIER 0.0 6.000000 4.00

AGE 420.0 110.000000 6.00

FLIGHT_COUNT 0.0 213.000000 2.00

BP_SUM 0.0 505308.000000 0.00

EP_SUM_YR_1 0.0 0.000000 0.00

EP_SUM_YR_2 0.0 74460.000000 0.00

SUM_YR_1 551.0 239560.000000 0.00

SUM_YR_2 138.0 234188.000000 0.00

SEG_KM_SUM 0.0 580717.000000 368.00

WEIGHTED_SEG_KM 0.0 558440.140000 0.00

AVG_FLIGHT_COUNT 0.0 26.625000 0.25

#保存结果

explore.to_excel(resultfile)

8.2 预处理数据

根据上面的数据统计,丢弃所有不符合的数据,

1、票价为空的

2、票价为0,但是折扣不是0,而且飞行里程大于0,

这样的数据是错误数据,直接删除

#票价非空值才保留

data = data[data['SUM_YR_1'].notnull()]

data = data[data['SUM_YR_2'].notnull()]

# 去掉票价为0,但是折扣不是0,或飞行里程大于0

data = data.drop(data['SUM_YR_1'] ==0 & (data['SEG_KM_SUM'] != 0) | (data['avg_discount'] > 0))

##保存清理后数据

cleanedfile = '/home/hadoop/data/air_customer/tmp/data_cleaned.csv'

data.to_csv(cleanedfile, encoding = 'utf-8')

8.3 数据归约

# 属性规约:去掉不相管的属性,只留下与LRFMC模型相关的属性

# FFP_DATE 入会时间

# LOAD_TIME 观测窗口结束时间

# FLIGHT_COUNT 飞行频率

# avg_discount 平均折扣

# SEG_KM_SUM 观测窗口总飞行公里数

# LAST_TO_END 最后一次乘机时间至观察窗口末端时长

data = data[['FFP_DATE','LOAD_TIME', 'FLIGHT_COUNT', 'avg_discount', 'SEG_KM_SUM','LAST_TO_END']]

#保存数据

cleanedfile = '/home/hadoop/data/air_customer/tmp/data_cleaned.csv'

data.to_csv(cleanedfile, encoding = 'utf-8')

数据变化的LRFMC数据:

L = LOAD_TIME - FFP_DATE (观测窗口时间 - 入会时间)

R = LOAD_TIME - LAST_TO_END (观测窗口时间 - 最后一次乘机时间)

F = FLIGHT_COUNT

M = SEG_KM_SUM

C = avg_discount

from datetime import datetime

import time

def normal_time(date):

'''

格式化数据

'''

return datetime.strptime(date,"%Y/%m/%d")

def interval_time(dd):

'''

计算时间间隔,以月为单位

'''

return dd.days / 30

# 计算LRFMC数据

data_LRFMC= pd.read_csv(cleanedfile,encoding='utf-8')

# data_LRFMC.columns = ['L', 'R', 'F','M', 'C']

data_LRFMC['L'] = (data['LOAD_TIME'].apply(normal_time) - data['FFP_DATE'].apply(normal_time)).apply(interval_time)

data_LRFMC['R'] = data['LAST_TO_END']

data_LRFMC['F'] = data['FLIGHT_COUNT']

data_LRFMC['M'] = data['SEG_KM_SUM']

data_LRFMC['C'] = data['avg_discount']

# 显示数据的描述,最大值和最小值

data_LRFMC_describe = data_LRFMC.describe().T

data_LRFMC_describe = data_LRFMC_describe[['max','min']].T

LRFMCfile = '/home/hadoop/data/air_customer/tmp/LRFMC.csv'

#数据写入文件

data_LRFMC.to_csv('LRFMCfile')

data_LRFMC_describe[['L','R','F','M','C']]

L R F M C

max 114.0 731.0 213.0 375074.0 1.500000

min 12.0 1.0 2.0 751.0 0.136017

最大值和最小值间隔较大,需要对数据进行标准化。

data_LRFMC=data_LRFMC[['L','R','F','M','C']]

# 标准化、重命名、写入文件

data_normal = (data_LRFMC - data_LRFMC.mean()) / (data_LRFMC.std())

data_normal.columns = ['Z'+i for i in data_normal.columns]

data_normafile = '/home/hadoop/data/air_customer/tmp/data_norma.csv'

data_normal.to_csv('data_normafile')

8.4 训练模型

数据处理完毕,下面进行模型的构建,

1、使用聚类算法,将数据生成5类用户

2、针对聚类结果进行特征分析

from sklearn.cluster import KMeans

k = 5

kmodel = KMeans(k,n_jobs=2) #得到模型

data_normal1=data_normal.dropna()

kmodel.fit(data_normal1) #训练模型

# 查看聚类中心和对应的类别

print(kmodel.cluster_centers_)

print(kmodel.labels_)

[[ 0.17343002 -0.07166046 -0.11266706 -0.09427382 2.69339174]

[-0.69751929 -0.40379498 -0.1697544 -0.17211799 -0.21902225]

[-0.3148445 1.67877305 -0.57462591 -0.5402772 -0.11557315]

[ 0.47921629 -0.79631365 2.48086723 2.43227193 0.27007082]

[ 1.15091348 -0.36698843 -0.09473823 -0.10441368 -0.13723191]]

print(kmodel.labels_)

[3 3 3 ..., 1 1 4]

8.4 可视化数据结果

import matplotlib.pyplot as plt

clu = kmodel.cluster_centers_

x = [1,2,3,4,5]

colors = ['red','green','yellow','blue','black']

for i in range(5):

plt.plot(x,clu[i],label='clustre '+str(i),linewidth=6-i,color=colors[i],marker='o')

plt.xlabel('L R F M C')

plt.ylabel('values')

plt.show()

8.5 客户价值分析

注意kmeans每次运行的时候得到的类会有差别,簇号也会相应的改变,但是中间点基本不会改变:

cluster L R F M C color

客户群1 0.17343 -0.07166 -0.11267 -0.09427 0.693392 red

客户群2 -0.69752 -0.40379 -0.16975 -0.17212 -0.21902 gree

客户群3 -0.31484 1.678773 -0.57463 -0.54028 -0.11557 yellow

客户群4 0.479216 -0.79631 2.480867 2.432272 0.270071 blue

客户群5 1.150913 -0.36699 -0.09474 -0.10441 -0.13723 black

我们重点关注的是L,F,M,从图中可以看到:

1、客户群4[blue] 的F,M很高,L也不低,可以看做是重要保持的客户;

2、客户群3[yellow] 的R比较高,为重要发展客户

3、客户群1[red] 重要挽留客户,原因:C较高,但是F,M较低

4、客户群2[green] 一般客户

5、客户群5[black] 低价值客户

总结

以上是生活随笔为你收集整理的python客户价值分析_航空公司客户价值分析实例的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。