阅读路线
项目介绍:该项目对某酒店预订网在一段时间内的客户预定信息数据进行分析,其中着重对该网站整体消费情况和用户行为展开分析,找出高价值用户人群,对客户进行用户画像分析,从而为该网站的精细化营销提供相关建议。
代码展示
1.初始设置
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
2.查看数据
rawdata=pd.read_csv('E:/userlostprob.txt',sep='\t')
rawdata.head()
从图中我们可以看到,原始数据有很多缺失值。
# 查看数据维度
rawdata.shape
该数据维度为(689945, 51)。总共689945条样本数据,除去标签列和id列,总共49个字段。
# 查看每列数据信息
rawdata.info()
可以看到,除了预定时间和入住时间2列为字符型之外,其余均为数值型,我们之后只需要将预定时间和入住时间处理为数值型。
# 查看数据缺失情况
rawdata.isnull().mean()
我们可以看到,数据缺失值较多,特别是historyvisit_7ordernum缺失达到近88%。
# 标签分布
rawdata['label'].value_counts()
我们可以看到,数据存在明显偏斜。
3.相关数据特征的可视化
# 解决坐标轴刻度负号乱码
plt.rcParams['axes.unicode_minus'] = False
# 解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['Simhei']
# 访问日期和入住日期
# 入住时间人数统计
arrival=rawdata[['arrival']]
arrival['counta']=1
arrival=arrival.groupby('arrival').sum().reset_index()
# 访问时间人数统计
d=rawdata[['d']]
d['countd']=1
d=d.groupby('d').sum().reset_index()
# 合并入住时间和访问时间人数
time_table=pd.merge(arrival,d,left_on='arrival',right_on='d',how='left')
time_table.fillna(0,inplace=True)
del time_table['d']
# 画出日期与人数的关系图
plt.figure(figsize=(13, 5));
plt.style.use('ggplot')
x=range(len(time_table));
y1=time_table['counta'].values;
y2=time_table['countd'].values;
z=time_table['arrival'].values;
plt.plot(x,y1,c="r",label='入住人数');
plt.bar(x,y2,align="center",label='预定人数');
plt.xlabel('日期');
plt.ylabel('人数');
plt.xticks(x,z,fontsize=11,rotation=45);
plt.title('访问和预定人数图',fontsize=20)
plt.legend(fontsize=20)
从上图中可以看到,520当天预定人数和入住人数都达到峰值,因为情侣会出门“过节”。而从此之后,预订人数为零,入住人数也会一路走低,到了周末,会有小的峰值。
# 访问时间段
plt.figure(figsize=(15, 6))
plt.style.use('seaborn-colorblind')
plt.hist(rawdata['h'].dropna(), bins = 50, edgecolor = 'k');
plt.xlabel('访问时间');
plt.ylabel('人数');
plt.title('访问时间与人数分布图');
从上图中,我们可以看到,凌晨四五点时的访问人数最少,之后,访问人数总体一路走高,并且23点时达到峰值,将近51000人。
plt.figure(figsize=(20, 7))
plt.style.use('seaborn-colorblind')
x1=rawdata['customer_value_profit'].dropna()
x2=rawdata['ctrip_profits'].dropna()
plt.subplot(121)
plt.plot(x1,linewidth=0.5)
plt.title('客户近1年价值')
plt.subplot(122)
plt.plot(x2,linewidth=0.5)
plt.title('客户价值')
我们可以清晰地看到,客户近一年的价值图和客户价值图大体上很相似,大多数人分布在0~100的范围内,但不排除有些客户价值非常大,峰值达到了600,这些客户都可以在之后的分析中重点观察,因为他们是非常有“价值”的。
## 消费能力指数
plt.figure(figsize=(10, 6))
plt.style.use('seaborn-colorblind')
plt.hist(rawdata['consuming_capacity'].dropna(), bins = 50, edgecolor = 'k');
plt.xlabel('消费能力指数');
plt.ylabel('人数');
plt.title('消费能力指数图');
从上图中,我们可以看到,消费能力指数的值范围是0-100。消费能力指数值基本呈现一个正态分布,平均消费能力在30附近,我们也能看到消费能力达到近100的人数也特别多,达到了21000多人,从这一点上,我们可以看到,酒店的入住客户中仍然存在较大群体的富裕人士。
# 价格敏感