数据分析案例-旅游景点票价预测

简介: 数据分析案例-旅游景点票价预测

数据获取

我们利用scrapy爬虫框架对去哪儿网对景点数据进行抓取,部分数据如下:

加载数据

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
#加载数据
df = pd.read_csv("data.csv")
df.head()

数据预处理

处理景区等级,只保留数字,且对没有等级的用0填充

df['level'] = df['level'].fillna(0)
df['level'] = df['level'].apply(lambda x:0 if x==0 else int(x[0]))
df.head(10)

处理热度,只保留数值,且小数点保留两位数字

df['hot'] = df['hot'].apply(lambda x:float("%.2f"%float(x.split(" ")[-1])))
df.head(10)


地区处理,将area拆分为省,市,区,并新增这三列数据,最后删除area这一列

df['province'] = df['area'].apply(lambda x:x.split("·")[0] )
df['city'] = df['area'].apply(lambda x:x.split("·")[1] )
df['mini_city'] = df['area'].apply(lambda x:x.split("·")[-1] )
del df['area']
df.head()


统计分析

统计销量最多的前10个景点

# 统计销量最多的前10个景点
num_top = df.sort_values(by='num',axis=0,ascending=False)
num_top = num_top.reset_index(drop=True)
plt.rcParams['font.sans-serif']=['Microsfot YaHei']
plt.rcParams['axes.unicode_minus']=False
import seaborn as sns
sns.set(font="SimHei")
sns.set_context("talk")
fig = plt.figure()
sns.barplot(num_top['name'][:10],num_top['num'][:10])
plt.xticks(rotation=90)
fig.show()


景区评级和省份的关系

#景区评级和省份的关系
df['level_sum']=1
var = df.groupby(['province','level']).level_sum.sum()
var.unstack().plot(kind="bar",figsize=(35,10),stacked=False,color=['red','blue','green','black'])


统计人最多的前10个5A景区

#统计人最多的前10个5A景区
top_5A = df[df['level']==5].sort_values(by="num",axis=0,ascending=False).reset_index(drop=True)
# top_5A.head()
fit = plt.figure(figsize=(35,15))
# plt.pie(top_5A["num"][:10],labels=top_5A["name"][:10],autopct='%1.2f%%')
sns.barplot(top_5A["name"][:10],top_5A["num"][:10])
plt.title("人数最多的10个5A景区")
plt.xticks(rotation=90)
plt.show()


统计人最少的前10个5A景区

#统计人最少的前10个5A景区
top_5A = df[df['level']==5].sort_values(by="num",axis=0,ascending=True).reset_index(drop=True)
# top_5A.head()
fit = plt.figure(figsize=(35,15))
# plt.pie(top_5A["num"][:10],labels=top_5A["name"][:10],autopct='%1.2f%%')
sns.barplot(top_5A["name"][:10],top_5A["num"][:10])
plt.title("人数最多的10个5A景区")
plt.xticks(rotation=90)
plt.show()



数据的分布分析

景区等级分布

#景区等级分布
plt.figure(figsize=(20,1))
sns.countplot(y='level',data=df)



热度分布

# 热度分布
sns.distplot(df['hot'])
plt.xticks(rotation=25)


价格分布

#价格分布
sns.distplot(df['price'])
plt.xticks(rotation=25)


销量分析

#销量分析
sns.distplot(df['num'])
plt.xticks(rotation=25)

将num进行分组并可视化

df['num_cut'] = pd.cut(df['num'],10)
plt.figure()
sns.countplot(y='num_cut',data=df)


建模

one-hot编码

df =df[['name','level','hot','price','num','province','city','mini_city']]
one_hot_df = pd.get_dummies(df[['province','city','mini_city']]) 
one_hot_df.head()


合并数据

df = df[['level','hot','price','num']]
df = pd.merge(df,one_hot_df,left_index=True,right_index=True)
df.head()


导包

from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error,mean_absolute_error

数据准备

X = df[df.columns.difference(['price'])].values
Y = df['price'].values

划分数据集并训练模型

x_train,x_test,y_train,y_test = train_test_split(X,Y,test_size=0.3,random_state=6)
rf = RandomForestRegressor(n_estimators=20,max_depth=7)
rf.fit(x_train,y_train)
pred = rf.predict(x_test)
print(mean_squared_error(y_test,pred))
print(mean_absolute_error(y_test,pred))

模型结果预测

result_df = pd.DataFrame(np.concatenate((y_test.reshape(-1,1),pred.reshape(-1,1)),axis=1),columns=['y_test','y_pred'])
result_df.head()


目录
相关文章
|
3月前
|
数据采集 存储 数据挖掘
【优秀python数据分析案例】基于Python书旗网小说网站数据采集与分析的设计与实现
本文介绍了一个基于Python的书旗网小说网站数据采集与分析系统,通过自动化爬虫收集小说数据,利用Pandas进行数据处理,并通过Matplotlib和Seaborn等库进行数据可视化,旨在揭示用户喜好和市场趋势,为图书出版行业提供决策支持。
313 6
【优秀python数据分析案例】基于Python书旗网小说网站数据采集与分析的设计与实现
|
3月前
|
数据采集 数据可视化 关系型数据库
【优秀python 数据分析案例】基于python的穷游网酒店数据采集与可视化分析的设计与实现
本文介绍了一个基于Python的穷游网酒店数据采集与可视化分析系统,通过爬虫技术自动抓取酒店信息,并利用数据分析算法和可视化工具,提供了全国主要城市酒店的数量、星级、价格、评分等多维度的深入洞察,旨在为旅行者和酒店经营者提供决策支持。
109 4
【优秀python 数据分析案例】基于python的穷游网酒店数据采集与可视化分析的设计与实现
|
3月前
|
JSON 数据挖掘 API
案例 | 用pdpipe搭建pandas数据分析流水线
案例 | 用pdpipe搭建pandas数据分析流水线
|
3月前
|
数据采集 数据可视化 数据挖掘
【优秀python案例】基于python爬虫的深圳房价数据分析与可视化实现
本文通过Python爬虫技术从链家网站爬取深圳二手房房价数据,并进行数据清洗、分析和可视化,提供了房价走势、区域房价比较及房屋特征等信息,旨在帮助购房者更清晰地了解市场并做出明智决策。
134 2
|
3月前
|
数据采集 存储 数据可视化
【优秀python数据分析案例】基于python的中国天气网数据采集与可视化分析的设计与实现
本文介绍了一个基于Python的中国天气网数据采集与可视化分析系统,通过requests和BeautifulSoup库实现数据爬取,利用matplotlib、numpy和pandas进行数据可视化,提供了温湿度变化曲线、空气质量图、风向雷达图等分析结果,有效预测和展示了未来天气信息。
702 2
|
3月前
|
数据采集 数据可视化 算法
基于Python flask的boss直聘数据分析与可视化系统案例,能预测boss直聘某个岗位某个城市的薪资
本文介绍了一个基于Python Flask框架的Boss直聘数据分析与可视化系统,系统使用selenium爬虫、MySQL和csv进行数据存储,通过Pandas和Numpy进行数据处理分析,并采用模糊匹配算法进行薪资预测。
基于Python flask的boss直聘数据分析与可视化系统案例,能预测boss直聘某个岗位某个城市的薪资
|
4月前
|
数据采集 机器学习/深度学习 数据可视化
完整的Python数据分析流程案例解析-数据科学项目实战
【7月更文挑战第5天】这是一个Python数据分析项目的概览,涵盖了从CSV数据加载到模型评估的步骤:获取数据、预处理(处理缺失值和异常值、转换数据)、数据探索(可视化和统计分析)、模型选择(线性回归)、训练与评估、优化,以及结果的可视化和解释。此流程展示了理论与实践的结合在解决实际问题中的应用。
110 1
|
3月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
79 2
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
179 4
|
3月前
|
机器学习/深度学习 算法 数据挖掘
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
本文介绍了2023年第二届钉钉杯大学生大数据挑战赛初赛A题的Python代码分析,涉及智能手机用户监测数据分析中的聚类分析和APP使用情况的分类与回归问题。
84 0
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析