air_data数据集进行航空公司客户价值分析的详细代码
时间: 2024-05-03 10:16:36 浏览: 362
航空公司客户价值分析(附完整代码)
5星 · 资源好评率100%
航空公司客户价值分析通常使用RFM模型进行,即根据客户的最近一次购买时间(Recency)、购买频率(Frequency)和消费金额(Monetary)三个指标来进行客户分类和价值评估。下面是使用air_data数据集进行航空公司客户价值分析的详细代码:
1. 导入必要的库和数据集
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# 导入数据集
air_data = pd.read_csv('air_data.csv', encoding='gb18030')
```
2. 数据预处理
```python
# 删除票价为空的数据
air_data = air_data[air_data['SUM_YR_1'].notnull() & air_data['SUM_YR_2'].notnull()]
# 删除票价为0、平均折扣率不在0-1之间、总飞行公里数为0的数据
index1 = air_data['SUM_YR_1'] != 0
index2 = air_data['SUM_YR_2'] != 0
index3 = (air_data['avg_discount'] >= 0) & (air_data['avg_discount'] <= 1)
index4 = air_data['SEG_KM_SUM'] != 0
air_data = air_data[index1 | index2 & index3 & index4]
# 删除不需要的列
air_data = air_data[['LOAD_TIME', 'FFP_DATE', 'LAST_TO_END', 'FLIGHT_COUNT', 'SEG_KM_SUM', 'avg_discount']]
```
3. 计算RFM指标
```python
# 计算最近一次购买时间
air_data['LOAD_TIME'] = pd.to_datetime(air_data['LOAD_TIME'])
air_data['FFP_DATE'] = pd.to_datetime(air_data['FFP_DATE'])
recency = (air_data['LOAD_TIME'] - air_data['FFP_DATE']) / np.timedelta64(1, 'D')
air_data['recency'] = recency.astype(int)
# 计算购买频率和消费金额
frequency = air_data['FLIGHT_COUNT']
monetary = air_data['SEG_KM_SUM'] * air_data['avg_discount']
# 将RFM指标转换为数据框
rfm = pd.DataFrame({'recency': recency, 'frequency': frequency, 'monetary': monetary})
```
4. RFM指标标准化
```python
# 标准化RFM指标
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
rfm_std = scaler.fit_transform(rfm)
# 将标准化后的数据转换为数据框
rfm_std = pd.DataFrame(rfm_std, columns=['recency', 'frequency', 'monetary'])
```
5. K-Means聚类
```python
# 使用K-Means聚类
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=5, random_state=2021)
kmeans.fit(rfm_std)
# 将聚类结果添加到数据框中
rfm['label'] = kmeans.labels_
```
6. 可视化聚类结果
```python
# 绘制散点图
sns.scatterplot(x='frequency', y='monetary', hue='label', data=rfm)
plt.xlabel('Frequency')
plt.ylabel('Monetary')
plt.show()
sns.scatterplot(x='recency', y='monetary', hue='label', data=rfm)
plt.xlabel('Recency')
plt.ylabel('Monetary')
plt.show()
sns.scatterplot(x='recency', y='frequency', hue='label', data=rfm)
plt.xlabel('Recency')
plt.ylabel('Frequency')
plt.show()
```
7. 分析聚类结果
根据上述可视化结果,可以对每个聚类标签进行分析,如下:
- 标签0:Recency较大、Frequency和Monetary较小,属于低价值客户,应该采取激励措施提高其购买频率和消费金额。
- 标签1:Recency和Frequency较小、Monetary较大,属于高价值但不活跃的客户,应该通过精准营销措施激活其购买欲望。
- 标签2:Recency、Frequency和Monetary均较小,属于一般价值客户,可以通过优惠券等措施提高其忠诚度。
- 标签3:Recency、Frequency和Monetary均较大,属于高价值且活跃的忠诚客户,应该维护好这部分客户的忠诚度,提供更加个性化的服务。
- 标签4:Recency较小、Frequency和Monetary较大,属于高价值且频繁的客户,可以通过VIP服务等措施提高其忠诚度。
以上就是使用RFM模型进行航空公司客户价值分析的详细代码。
阅读全文