日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發布時間:2025/3/15 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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客户价值分析_航空公司客户价值分析实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。