数据获取

我们利用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()

以下是心得体会:

通过这次Python项目实战,我学到了许多新的知识,这是一个让我把书本上的理论知识运用于实践中的好机会。原先,学的时候感叹学的资料太难懂,此刻想来,有些其实并不难,关键在于理解。

在这次实战中还锻炼了我其他方面的潜力,提高了我的综合素质。首先,它锻炼了我做项目的潜力,提高了独立思考问题、自我动手操作的潜力,在工作的过程中,复习了以前学习过的知识,并掌握了一些应用知识的技巧等

在此次实战中,我还学会了下面几点工作学习心态:

1)继续学习,不断提升理论涵养。在信息时代,学习是不断地汲取新信息,获得事业进步的动力。作为一名青年学子更就应把学习作为持续工作用心性的重要途径。走上工作岗位后,我会用心响应单位号召,结合工作实际,不断学习理论、业务知识和社会知识,用先进的理论武装头脑,用精良的业务知识提升潜力,以广博的社会知识拓展视野。

2)努力实践,自觉进行主角转化。只有将理论付诸于实践才能实现理论自身的价值,也只有将理论付诸于实践才能使理论得以检验。同样,一个人的价值也是透过实践活动来实现的,也只有透过实践才能锻炼人的品质,彰显人的意志。

3)提高工作用心性和主动性。实习,是开端也是结束。展此刻自我面前的是一片任自我驰骋的沃土,也分明感受到了沉甸甸的职责。在今后的工作和生活中,我将继续学习,深入实践,不断提升自我,努力创造业绩,继续创造更多的价值。

这次Python实战不仅仅使我学到了知识,丰富了经验。也帮忙我缩小了实践和理论的差距。在未来的工作中我会把学到的理论知识和实践经验不断的应用到实际工作中,为实现理想而努力。

数据分析案例-旅游景点票价预测相关推荐

  1. 数据分析:旅游景点销售门票和消费情况分析

    数据分析:旅游景点销售门票和消费情况分析 作者:AOAIYI 作者简介:Python领域新星作者.多项比赛获奖者:AOAIYI首页

  2. ​Python实战案例:航班票价预测这样做,效果真好啊

    在本文中,我将和大家一起学习将使用机器学习数据集使用基本的探索性数据分析技术分析航班票价预测,然后根据某些特征(例如航空公司的类型.到达时间)得出一些关于航班价格的预测时间,出发时间,飞行时间,来源, ...

  3. 数据分析案例-四川省旅游景点数据分析

    数据集介绍 数据为四川省的各旅游景点信息,特征有景点名称.星级.城市.票价.销量.热度6个维度,部分数据如下: 加载数据 首先要导入本次项目用到的第三方包和数据 import pandas as pd ...

  4. Python数据分析案例17——电影人气预测(特征工程构建)

    案例背景 本次案例是中国人民大学"人工智能与机器学习(2022年秋季)"课程的课堂竞赛. 比赛是根据有关电影的各种信息来预测电影的受欢迎程度,包括演员.工作人员.情节关键字.预算. ...

  5. Python数据分析案例28——西雅图交通事故预测(不平衡样本处理)

    本次案例适合机器学习数据科学方向的同学. 引言(废话集) 交通事故是一个严重的公共安全问题,在全球范围内每年都有成千上万的人死于交通事故.随着交通运输的发展和城市化进程的加速,交通事故已成为制约城市发 ...

  6. python酒店数据分析_Python数据分析 I 全国旅游景点分析案例,哪里好玩一目了然...

    原标题:Python数据分析 I 全国旅游景点分析案例,哪里好玩一目了然 前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作 ...

  7. Python数据分析案例08——预测泰坦尼克号乘员的生存(机器学习全流程)

    上一篇数据分析案例是回归问题,本次案例带来分类问题的 机器学习案例.这个数据集比上个案例更小.更简单,代码也不复杂,新手都可以学一学. 1.背景分析 预测乘客是否存活下来 泰坦尼克号是数据科学机器学习 ...

  8. Excel数据分析案例三——预测销量

    Excel数据分析案例三--预测销量 题目:有某服装实体店5.1~5.24每天的销售数据表,要求根据现有的销量数据预测接下来一星期,也就是5.25 ~ 5.30的销量,图表大致信息如下 此时需要用到E ...

  9. 【python】数据分析实战:分析全国旅游景点数据,暑假还不知道去哪玩的看过来

    前言 暑假是学生老师们拥有的最长假期,这么长的假期,光待在家里太浪费了,何不选择一个好去处,欣赏欣赏夏季的美景?当然,并不是所有地方都适合这个时节去的,那么,暑假适合去国内那些地方旅游呢?现在我们学习 ...

最新文章

  1. [ZJOI2007]仓库建设(斜率优化)
  2. 西裤哥的 Hook Api Lib 0.2 For C
  3. rot90--矩阵旋转
  4. 【转】NAST表的使用
  5. 信息系统项目管理师-项目风险管理考点笔记
  6. Solr建立索引时,过滤HTML标签
  7. 【Heritrix基础教程之2】Heritrix基本内容介绍
  8. 构建属于你自己的dapr服务发现
  9. C# WPF 表单更改提示
  10. Opserver开源的服务器监控系统(ASP.NET)
  11. C++子类父类成员函数的覆盖和隐藏实例详解
  12. 集成方法Ensemble Method(bagging, AdaBoost)
  13. adb shell 修改文件名_shell修改文件名(一)
  14. code block怎样导入整个文件夹_XRD分析软件Xpert HighScore Plus 3安装和导入pdf卡片图文教程...
  15. 一种基于全息投影设备的虚拟形象交互方法及系统
  16. 洛谷——P2504 [HAOI2006]聪明的猴子
  17. 【PS】海报设计,滤镜
  18. POJ3737UmBasketella
  19. LOGO创意-IT行业-随记
  20. 上电瞬间电容相当于短路

热门文章

  1. cod16显示服务器队列,使命召唤16战区
  2. 二叉树的堂兄弟节点判断001
  3. iOS中允许后台应用程序刷新在开发中的注意事项
  4. Spring中@Primary注解
  5. 软件测试---BUG的生命周期
  6. 《中国移动交通强国建设试点实施方案》获批!
  7. Mac 终于有显示隐藏文件的快捷键了
  8. 如何开始编写微信小程序
  9. 第一单元 用python学习微积分(七)第一单元总结
  10. routeros php插件,RouterOS的Webfig的使用方法