多彩贵州城指在贵州文化旅游开设的一个对外交流的门户,展示贵州的风土人情、多样的自然生态景观和多彩的多民族原生态文化,而今天作为一个初级数据分析人员,使用Python技术来展示多彩贵州在2022年的在旅游数据的可视化和分析。欢迎大家来我们贵州玩耍!!!
分析所需的数据和一下材料,百度网盘打开即可:
链接:https://pan.baidu.com/s/1FIx3yKEg6CnQXNXLCrFEAw
提取码:GGZZ
使用工具:Jupyter Notebooks 推荐查看链接自主下载和学习:anaconda及jupyter安装配置
1.导入需要的包
!pip install --upgrade pyecharts
#升级 pyecharts 包,地图显示部分需要用到 pyecharts==1.9.0以上版本
import jieba#中文分词处理
import pandas as pd #数据处理库
from collections import Counter#数据统计库
from pyecharts.charts import Line,Pie,Scatter,Bar,Map,Grid#pyecharts数据可视化
from pyecharts.charts import WordCloud
from pyecharts import options as opts
from pyecharts.globals import ThemeType
from pyecharts.globals import SymbolType
from pyecharts.commons.utils import JsCode
如果安装jieba包发现安装不了可以参考这个链接:Anaconda-Python安装jieba库,我之前一直下不了jieba包就是用这个方法才可以的。
2.数据处理
2.1读取贵州景点的数据集
guizhou = pd.read_excel('F:\桌面\贵州景点.xlsx')
guizhou.head()
读取地址主要取决于你把excel文档放在那个位置了,这里我就放在了桌面上了。
2.2运用info()和shape查看贵州旅游景点数据集的索引和数据类型
guizhou.info()
guizhou.shape #查看数据集有几行几列
2.3查看贵州旅游景点数据集的数值型列汇总统计
guizhou.describe()
从describe可以得出结论有三种数字型数据,分别是评分价格销量。
2.4查看销售量大于0的行
guizhou.loc[guizhou['销量']>0,:].head(75)
得出结论贵州的75个旅游景点均有游客观光,说明贵州的旅游行业比较稳定。
2.5统计各特征的空值,分析星级
guizhou.isnull().sum()
可以看出数据非常完整,只有星级有空值,中华人民共和国旅游景区质量等级划分的景区级别,共分为五级,从高到低依次为AAAAA、AAAA、AAA、AA、A级五级,其中景区暂时达不到国家要求或新建景区等级划分暂时为空。
本次统计的数据集仅为贵州最著名的75个景区,其中56个国家级(4A和5A占大部分,并全为3A以上),19个暂未评定,可以确定贵州是全国比较有名气的旅游省份
2.5.1将没有星级的景区用‘待定’来填入
guizhou['星级'].fillna('待定', inplace=True)
guizhou.isnull().sum()
作用:可靠性高,方便进行数据分析
2.6按销量排序查看那些景区的热度较高(从高到低)
guizhou.sort_values('销量' , ascending=False).head(75)
可以得出黔东南苗族侗族自治州的西江千户苗寨最高,而遵义市的思达遵义游乐园销量惨淡
3.数据可视化和分析
3.1查找贵州销售前20热门景点数据
color = """new echarts.graphic.LinearGradient(0,0,1,0,
[{offset: 0, color: '#87CEFA'}, {offset: 1, color: '#00BFFF'}], false)"""
sort_info = guizhou.sort_values(by='销量', ascending=True)
b1 = (
Bar()
.add_xaxis(list(sort_info['名称'])[-20:])
.add_yaxis('贵州热门景点销量', sort_info['销量'].values.tolist()[-20:], itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color)))
.reversal_axis()
.set_global_opts(
title_opts=opts.TitleOpts(title='贵州热门景点销量数据'),
yaxis_opts=opts.AxisOpts(name='景点名称'),
xaxis_opts=opts.AxisOpts(name='销量'),
)
.set_series_opts(label_opts=opts.LabelOpts(position="right"))
)
# 将图形整体右移
g1 = (
Grid()
.add(b1, grid_opts=opts.GridOpts(pos_left='20%', pos_right='5%'))
)
g1.render_notebook()
这些景点都值得一去,说走就走的旅行这不就来了嘛
3.2假期出行数据贵州地图分布(以销量为例)
guizhou_tmp = guizhou[['城市' , '销量']]
guizhou_counts = guizhou_tmp.groupby('城市').sum()
m1 = (
Map()
.add('贵州假期出行分布', [list(z) for z in zip(guizhou_counts.index.values.tolist(), guizhou_counts.values.tolist())], '贵州')
.set_global_opts(
title_opts=opts.TitleOpts(title='贵州假期出行数据地图分布'),
visualmap_opts=opts.VisualMapOpts(max_=4000, is_piecewise=False,range_color=["white", "#87CEFA", "#00BFFF"]),
)
)
m1.render_notebook()
可以看出在贵州的东南方向的景点,占据大头
3.3多彩贵州的各城市的4A-5A景区数量柱状图
guizhou_tmp2 =guizhou[guizhou['星级'].isin(['4A', '5A'])]
guizhou_counts = guizhou_tmp2.groupby('城市').count()['星级']
b2 = (
Bar()
.add_xaxis(guizhou_counts.index.values.tolist())
.add_yaxis('4A-5A景区数量', #这里的color在3.1中guizhou_counts.values.tolist(),itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color)))
.set_global_opts(
title_opts=opts.TitleOpts(title='贵州省各城市4A-5A景区数量'),
datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(type_='inside')],
)
)
b2.render_notebook()
安顺市、贵阳市和铜仁市在贵州省的4A-5A景点中占据大多数
3.4多彩贵州的4A-5A景区数量玫瑰图
guizhou007 = guizhou_counts.copy()
guizhou007.sort_values(ascending=False, inplace=True)
c1 = (
Pie()
.add('', [list(z) for z in zip(guizhou007.index.values.tolist(), guizhou007.values.tolist())],
radius=['30%', '100%'],
center=['50%', '60%'],
rosetype='area',
)
.set_global_opts(title_opts=opts.TitleOpts(title='有星级的地区景点数量'),
legend_opts=opts.LegendOpts(is_show=False),
toolbox_opts=opts.ToolboxOpts())
.set_series_opts(label_opts=opts.LabelOpts(is_show=True, position='inside', font_size=12,
formatter='{b}: {c}', font_style='italic',
font_weight='bold', font_family='Microsoft YaHei'
))
)
c1.render_notebook()
3.5多彩贵州4A-5A景区地图分布
guizhou_tmp3 = guizhou[guizhou['星级'].isin(['4A', '5A'])]
guizhou_counts = guizhou_tmp3.groupby('城市').count()['星级']
m2 = (
Map()
.add('贵州省4A-5A景区分布', [list(z) for z in zip(guizhou_counts.index.values.tolist(), guizhou_counts.values.tolist())], '贵州')
.set_global_opts(
title_opts=opts.TitleOpts(title='贵州省地图数据分布'),
visualmap_opts=opts.VisualMapOpts(max_=12, is_piecewise=True),
)
)
m2.render_notebook()
3.6多彩贵州门票价格区间和占比玫瑰图
price_level = [0, 50, 100, 150, 200, 250, 300, 350, 400, 500]
label_level = ['0-50', '50-100', '100-150', '150-200', '200-250', '250-300', '300-350', '350-400', '400-500']
jzmj_cut = pd.cut(guizhou['价格'], price_level, labels=label_level)
guizhou_price = jzmj_cut.value_counts()
guizhou_price #门票价格文本统计
可以看出门票价格的性价比还是非常高的
p1 = (
Pie(init_opts=opts.InitOpts(
width='800px', height='600px',
)
)
.add(
'',
[list(z) for z in zip(guizhou_price.index.tolist(), guizhou_price.values.tolist())],
radius=['20%', '60%'],
center=['40%', '50%'],
rosetype='radius',
label_opts=opts.LabelOpts(is_show=True),
)
.set_global_opts(title_opts=opts.TitleOpts(title='门票价格占比',pos_left='33%',pos_top="5%"),
legend_opts=opts.LegendOpts(type_='scroll', pos_left="80%",pos_top="25%",orient="vertical")
)
.set_series_opts(label_opts=opts.LabelOpts(formatter='{b}: {c} ({d}%)'),position='outside')
)
p1.render_notebook()#门票价格占比玫瑰图
3.7多彩贵州景点的词云
contents = "".join('%s' % i for i in guizhou['简介'].values.tolist())
contents_list = jieba.cut(contents)
ac = Counter(contents_list)
stopwords = []
with open('F:\桌面\stopwords.txt', "r",encoding='utf-8') as f:
data = f.read() # 读取文件
stopwords = data.split('\n')
for i in stopwords:
del ac[i]
w1 = (
WordCloud()
.add("",
ac.most_common(150),
word_size_range=[5, 100],
textstyle_opts=opts.TextStyleOpts(font_family="cursive"),
shape='star')
.set_global_opts(title_opts=opts.TitleOpts(title="景点简介词云"))
)
w1.render_notebook()
最后欢迎大家来我们贵州游玩,谢谢!!!