数据分析实战-酒店价格因素分析-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
    评论
Python数据分析实战是一个将Python应用于实际数据分析项目的过程。通过使用Python编程语言和相关工具,可以对数据进行读取、处理、计算、分析建模和可视化,从而得出有价值的结论。 在Python数据分析实战中,你将面临很多问题需要解决。这些问题可能包括数据的清洗和整理,选择合适的统计方法和模型,以及数据可视化等。根据引用和引用的内容,我们可以了解到Python数据分析的流程主要包括读写、处理计算、分析建模和可视化四个部分,每个部分都会使用不同的Python工具。 在数据分析的过程中,你可以使用Python中的各种库和工具来完成不同的任务。比如,你可以使用pandas库来读取和处理数据,使用NumPy库进行数值计算,使用matplotlib或seaborn库进行数据可视化,使用scikit-learn进行机器学习建模等。这些工具可以帮助你高效地进行数据分析,并且可以根据具体的项目需求进行灵活的选择和应用。 在实战中,你可以选择一个具体的数据集或者项目进行分析。例如,你可以分析销售数据,了解销售趋势和关键因素;你可以分析用户行为数据,找出用户喜好和购买偏好;你还可以分析社交媒体数据,了解用户的情感倾向和话题热度等。通过对这些数据的分析,你可以为业务决策提供有力的支持和建议。 总结来说,Python数据分析实战是一个使用Python进行实际数据分析项目的过程。通过合理选择和应用Python工具和库,你可以解决数据分析中的各种问题,并得出有价值的结论。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

葫芦娃啊啊啊啊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值