数据分析实战-酒店价格因素分析-Python

数据集和源代码放在资源里了
数据集和源代码

导入所需要的包

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

from sklearn.preprocessing import MinMaxScaler
from sklearn.linear_model import LinearRegression as LR
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS'] #显示中文标签

读取数据,并显示前五行

df = pd.read_csv('hoteldata.csv')
df.head()
  • 看特征数据类型以及是否包含缺失值
df.info()
  • 查看数值型变量数据情况
df.describe()

描述性分析

  • 绘制对数房价
df["对数房价"] = np.log(df["房价"])
plt.figsize = (8, 8)
plt.hist(df['对数房价'], bins = 30, edgecolor = 'k')
plt.xlabel('对数房价')
plt.ylabel('频数')
plt.title('对数房价直方图')
plt.show()

在这里插入图片描述

  • 绘制酒店房间类型箱线图
#酒店房间类型
plt.figure(figsize=(6,6))
sns.boxplot(x='房间类型',y='对数房价',data=df)
plt.title("酒店房间类型箱线图")
plt.show()

在这里插入图片描述

  • 绘制对数房价密度图
types = set(df["房间类型"])
figsize = (15, 10)
for i in types:
    subset = df[df["房间类型"] == i]
    sns.kdeplot(subset['对数房价'],label = i , shade = False, alpha = 0.4)
plt.xlabel('对数房价', size = 15)
plt.legend()
plt.title('对数房价密度图', size = 20)
plt.show()

在这里插入图片描述

#酒店区域因素分析
plt.figsize = (8, 8)
sns.boxplot(x='地区',y='对数房价',data=df)
plt.title("地区箱线图")
plt.show()

在这里插入图片描述

types = set(df["地区"])
figsize = (15, 10)
for i in types:
    subset = df[df["地区"] == i]
    sns.kdeplot(subset['对数房价'],label = i , shade = False, alpha = 0.4)
plt.xlabel('对数房价', size = 15)
plt.legend()
plt.title('Density Plot', size = 20)
plt.show()

在这里插入图片描述

#酒店装修时间因素分析
plt.figsize = (20, 8)
sns.boxplot(x='装修时间',y='对数房价',data=df)
plt.title("装修时间箱线图")
plt.show()

在这里插入图片描述

plt.figsize = (8, 8)
plt.hist(df['经度'], bins = 30, edgecolor = 'k')
plt.xlabel('经度')
plt.ylabel('频数')
plt.title('经度直方图')
plt.show()
plt.figsize = (8, 8)
plt.hist(df['纬度'], bins = 30, edgecolor = 'k')
plt.xlabel('纬度')
plt.ylabel('频数')
plt.title('纬度直方图')
plt.show()
plt.figsize = (8, 8)
plt.hist(df['评价数'], bins = 30, edgecolor = 'k')
plt.xlabel('评价数')
plt.ylabel('频数')
plt.title('评价数直方图')
plt.show()
plt.scatter(df['对数房价'],df["评价数"],color="green",alpha=0.5)
plt.xlabel('评价数')
plt.ylabel('对数房价')
plt.title("对数房价与评价数散点图")
plt.show()
grade=pd.DataFrame([df['卫生评分'],df['服务评分'],df['设施评分'],df['位置评分']]).T
correlation=grade.corr()
plt.subplots(figsize=(6, 6))
sns.heatmap(correlation, annot=True, square=True, cmap="Blues")
plt.show()

在这里插入图片描述

df["评分"] = (df["卫生评分"] + df["服务评分"] +df["设施评分"] +df["位置评分"])/4
plt.scatter(df['对数房价'],df["评分"],color="black",alpha=0.5)
plt.xlabel('对数房价')
plt.ylabel('评分')
plt.show()
plt.scatter(df['对数房价'],df["公司"],color="green",alpha=0.5)
plt.xlabel('公司')
plt.ylabel('对数房价')
plt.title("对数房价与公司散点图")
plt.show()
plt.scatter(df['对数房价'],df["出行住宿"],color="red",alpha=0.5)
plt.xlabel('出行住宿')
plt.ylabel('对数房价')
plt.title("对数房价与出行住宿散点图")
plt.show()
plt.scatter(df['对数房价'],df["校园生活"],color="purple",alpha=0.5)
plt.xlabel('校园生活')
plt.ylabel('对数房价')
plt.title("对数房价与校园生活散点图")
plt.show()
  • 数据分组和哑变量处理
df["装修时间"] = pd.cut(df["装修时间"],[0,2015,2020],labels = ["旧装修","新装修"])
df[["房间类型"]] = df[["房间类型"]].replace({'标准间': 0, '商务间': 1, '豪华套间': 2})
le = LabelEncoder()
df['地区'] = le.fit_transform(df['地区'])
df["装修时间"] = le.fit_transform(df["装修时间"])
df["评分"] = le.fit_transform(df["评分"])
  • 数据标准化
from sklearn import preprocessing
df['评分']=preprocessing.scale(df['评分'])
df['校园生活']=preprocessing.scale(df['校园生活'])
df['公司']=preprocessing.scale(df['公司'])
df['出行住宿']=preprocessing.scale(df['出行住宿'])
df['评价数']=preprocessing.scale(df['评价数'])

对数线性回归模型

features=['地区','房间类型','装修时间','评分','校园生活','公司','出行住宿',"评价数"]
X = df[features]
y = df[["对数房价"]]

import statsmodels.api as sm
# 模型训练
model = sm.OLS(y, X).fit()
# 查看模型结果
model.summary()

在这里插入图片描述

# 提取回归系数
sm.OLS(y, X).fit().params
#R2
sm.OLS(y, X).fit().rsquared
# P值
sm.OLS(y, X).fit().pvalues
# 为了检验上述回归中是否存在严重的多重共线性,使用Python的VIF检验模块来验证:
from statsmodels.stats.outliers_influence import variance_inflation_factor
vif = [variance_inflation_factor(X.values, X.columns.get_loc(i)) for i in X.columns]
vif
  • 7
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论提供了有关酒店的大量信息。这个数据可用于许多nlp项目:推荐系统,情绪分析,同类酒店的图网,基于评论的酒店细分。该数据集包含25个城市的酒店列表和评论。 file/opensearch/documents/92885/hotelReviewsInAustin__en2019100120191005.csv file/opensearch/documents/92885/hotelReviewsInBali__en2019100120191005.csv file/opensearch/documents/92885/hotelReviewsInBangkok__en2019100120191005.csv file/opensearch/documents/92885/hotelReviewsInBarcelona__en2019100120191005.csv file/opensearch/documents/92885/hotelReviewsInBombay__en2019100120191005.csv file/opensearch/documents/92885/hotelReviewsInChicago__en2019100120191005.csv file/opensearch/documents/92885/hotelReviewsInDubai__en2019100120191005.csv file/opensearch/documents/92885/hotelReviewsInHong Kong__en2019100120191005.csv file/opensearch/documents/92885/hotelReviewsInIstanbul__en2019100120191005.csv file/opensearch/documents/92885/hotelReviewsInLondon__en2019100120191005.csv file/opensearch/documents/92885/hotelReviewsInMiami__en2019100120191005.csv file/opensearch/documents/92885/hotelReviewsInMilan__en2019100120191005.csv file/opensearch/documents/92885/hotelReviewsInNew York__en2019100120191005.csv file/opensearch/documents/92885/hotelReviewsInOsaka__en2019100120191005.csv file/opensearch/documents/92885/hotelReviewsInParis__en2019100120191005.csv file/opensearch/documents/92885/hotelReviewsInPhuket__en2019100120191005.csv file/opensearch/documents/92885/hotelReviewsInPrague__en2019100120191005.csv file/opensearch/documents/92885/hotelReviewsInRome__en2019100120191005.csv file/opensearch/documents/92885/hotelReviewsInSan Francisco__en2019100120191005.csv file/opensearch/documents/92885/hotelReviewsInSantorini__en2019100120191005.csv file/opense

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

葫芦娃啊啊啊啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值