专栏名称: 小蚊子数据分析
数据分析知识、培训、招聘分享。
目录
相关文章推荐
51好读  ›  专栏  ›  小蚊子数据分析

Python分析元旦旅游热门城市,告诉你哪些景点性价比更高

小蚊子数据分析  · 公众号  ·  · 2020-12-30 09:02

正文


元旦 马上就要到了,难得的3天小长假,玩肯定是要去玩的,但 去哪儿玩是个问题 。于是,以旅游热门城市 厦门 为例,用Python获取了去哪儿网的相关景点数据,包括景点名称、地区、评分、销量、价格、坐标等字段,对数据进行可视化并作简单分析,以求 找到性价比较高的景点

数据获取

去哪儿网数据采集相对简单,找到 真实url 后,构造参数拼接,用request请求到json数据,以追加模式将数据存储为csv文件即可。

爬虫核心代码如下:

# -*- coding = uft-8 -*-
# @Time : 2020/12/25 9:47 下午
# @Author : 公众号 菜J学Python
# @File : 去哪儿.py

import requests
import random
from time import sleep
import csv
import pandas as pd
from fake_useragent import UserAgent

def get_data(keyword,page):
ua = UserAgent(verify_ssl=False)
headers = {"User-Agent": ua.random}
url = f'http://piao.qunar.com/ticket/list.json?keyword={keyword}®ion=&from=mpl_search_suggest&page={page}'
res = requests.request("GET", url,headers=headers)
sleep(random.uniform(1, 2))
try:
res_json = res.json()
#print(res_json)
sight_List = res_json['data']['sightList']
print(sight_List)
except:
pass

if __name__ == '__main__':
keyword = "厦门"
for page in range(1,100): #控制页数
print(f"正在提取第{page}页")
sleep(random.uniform(1, 2))
get_data(keyword,page)

数据处理

导入相关包

首先导入数据处理和数据可视化相关第三方库,便于后续操作。

import pandas as pd 
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置加载的字体名
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
import jieba
import re
from pyecharts.charts import *
from pyecharts import options as opts
from pyecharts.globals import ThemeType
import stylecloud
from IPython.display import Image

导入景点数据

用pandas读取爬取的csv格式景点数据并预览。

df = pd.read_csv("/旅游/厦门旅游景点.csv",names=['name', 'star', 'score','qunarPrice','saleCount','districts','point','intro'])
df.head()

删除重复数据

网站存在一定的重复数据,需要进行剔除。

df = df.drop_duplicates()

查看数据信息

查看字段类型和缺失值情况,符合分析需要,无需另作处理。

df.info()
    <class 'pandas.core.frame.DataFrame'>
Int64Index:
422 entries, 0 to 423
Data columns (total 8 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 name 422 non-null object
1 star 422 non-null object
2 score 422 non-null float64
3 qunarPrice 422 non-null float64
4 saleCount 422 non-null int64
5 districts 422 non-null object
6 point 422 non-null object
7 intro 377 non-null object
dtypes: float64(2), int64(1), object(5)
memory usage: 29.7+ KB

描述性统计

从描述性统计表可知,剔除重复数据后,剩余 424个景点 ,门票均价为 40元

color_map = sns.light_palette('orange', as_cmap=True)  # light_palette调色板
df.describe().style.background_gradient(color_map)

可视化分析

景点介绍

通过对厦门景点介绍文本进行词云图绘制,我们很容易看出厦门的特点。典型的 海滨休闲城市 ,帆船、鼓浪屿、游艇等词被大量提及,建筑、博物馆等词也有一定提及,体现出厦门浓厚的 人文气息

#绘制词云图
text1 = get_cut_words(content_series=df['intro'])
stylecloud.gen_stylecloud(text=' '.join(text1), max_words=100,
collocations=False,
font_path='simhei.ttf',
icon_name='fas fa-heart',
size=653,
#palette='matplotlib.Inferno_9',
output_name='./offer.png')
Image(filename='./xiamen.png')

景点分布

利用kepler.gl绘制厦门市旅游景点分布地图,同时以圆圈的大小表示门票月销量的大小,我们可以很清晰的看到,厦门市景点集中分布在思明区和湖里区,其他区域分布较为分散。尤其是 思明区 ,门票销量遥遥领先其他区域。

df["lon"] = df["point"].str.split(",",expand=True)[0] 
df["lat"] = df["point"].str.split(",",expand=True)[1]
df.to_csv("/data.csv")

评分TOP10景点

从景点评分来看, 厦门大学 评分最高,5分满分。其次是 鼓浪屿和南普陀寺 ,分别为4.9分和4.6分。难怪有人说,没去过厦大和鼓浪屿,相当于没来过厦门。

df_score = df.pivot_table(index='name',values='score')
df_score.sort_values('score',inplace=True,ascending=False)
df_score[:10]

月销量TOP10景点

从门票月销量来看, 鼓浪屿排第一 ,月销量1230,其次是 厦门园林植物园 和鼓浪屿往返轮渡。 厦门方特梦幻王国 也有600以上的月销量。

df_saleCount = df.pivot_table(index='name',values='saleCount')
df_saleCount.sort_values('saleCount',inplace=True,ascending=False)
df_saleCount[:10]

价格TOP20景点

从景点价格来看,玩 游艇、直升机、帆船 类的活动花销较大,另外,厦门 方特 价格也不便宜,如果对价格不敏感可以考虑,如果是穷游可以提前避开。







请到「今天看啥」查看全文