基于Python的云南旅游景点分析

作为一名云南人,作为一名数据分析人员,我将在本次用Python来给大家介绍云南的相关景点!

欢迎大家来云南旅游哦!资料含各地景点的数据,希望大家学习之后进行相关的练习,学有所成!

所需的资料我放在这里,自行提取即可:

链接:https://pan.baidu.com/s/16ziypbHZL-ZNNxnVQ2-iXg 
提取码:yunn

使用工具:Jupyter Notebooks 推荐查看链接自主下载和学习:Jupyter Notebooks的安装和使用介绍_LarsCheng的博客-CSDN博客_jupyter

 “彩云之南”旅游景点分析

1.导入需要的包

Pandas — 数据处理

Pyecharts — 数据可视化

jieba — 分词(jupyter做文本分析经常导入的两个包jieba和wordcloud_努力的搬运工的博客-CSDN博客_jupyter怎么安装jieba)

collections — 数据统计

!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

2.数据处理

2.1读取云南旅游景点数据集并进行部分展示

Yunnan= pd.read_excel('云南旅游景点.xlsx')
Yunnan.head()

2.2查看云南旅游景点数据集的索引、数据类型和内存信息

Yunnan.info()Yunnan.shape#处理前总共有75行,11列

 

结论:从info可以看出本次处理的数据集共有11个特征

2.3查看云南旅游景点数据集的数值型列汇总统计

Yunnan.describe()

结论:从 describe可以看出本次分析的数据集共有数值型数据三列,分别为评分、价格和销量

2.4 找出销量为0的行

Yunnan.loc[Yunnan['销量']==0,:].head()

结论:没有找到销量为0的景点 ,云南旅游业正在蓬勃发展

Yunnan.loc[Yunnan['销量']>0,:].head(75)

结论:云南的75个旅游景点均有游客观光,云南省将大力发展旅游业

2.5 统计各特征列空值

Yunnan.isnull().sum()

结论:数据非常完整,只有星级有空值,中华人民共和国旅游景区质量等级划分的景区级别,共分为五级,从高到低依次为AAAAA、AAAA、AAA、AA、A级五级,其中景区暂时达不到国家要求或新建景区等级划分暂时为空。

本次统计的数据集仅为云南最著名的75个景区,其中37个国家级(4A和5A占大部分,并全为3A以上),38个暂未评定但依然在云南景区小有名气,可见云南省是中国的旅游大省。

2.6 将星级缺失值用‘待定’填充

Yunnan['星级'].fillna('待定', inplace=True)
Yunnan.isnull().sum()

结论:处理后数据完整,可靠性高,可以进行数据分析

2.7 按销量排序将数据集重新排序 (从高到底)

Yunnan.sort_values('销量', ascending=False).head(75)

结论:最高为七彩云南欢乐世界,最低为花之城

3.数据分析及可视化¶

3.1 云南销量前20热门景点数据

# 线性渐变
color_js = """new echarts.graphic.LinearGradient(0, 0, 1, 0,[{offset: 0, color: '#009ad6'}, {offset: 1, color: '#ed1941'}], false)"""sort_info = Yunnan.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_js))).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 假期出行数据云南地图分布

Yunnan_tmp1 = Yunnan[['城市','销量']]
Yunnan_counts = Yunnan_tmp1.groupby('城市').sum()
m1 = (Map().add('云南假期出行分布', [list(z) for z in zip(Yunnan_counts.index.values.tolist(), Yunnan_counts.values.tolist())], '云南').set_global_opts(title_opts=opts.TitleOpts(title='云南假期出行数据地图分布'),visualmap_opts=opts.VisualMapOpts(max_=100000, is_piecewise=False,range_color=["white", "#fa8072", "#ed1941"]),))
m1.render_notebook()

结论:昆明市和西双版纳傣族自治州占云南旅游的大头

3.3 云南省各城市4A-5A景区数量柱状图

# 线性渐变
color_js = """new echarts.graphic.LinearGradient(0, 1, 0, 0,[{offset: 0, color: '#009ad6'}, {offset: 1, color: '#ed1941'}], false)""" Yunnan_tmp2 =Yunnan[Yunnan['星级'].isin(['4A', '5A'])]
Yunnan_counts = Yunnan_tmp2.groupby('城市').count()['星级']
b2 = (Bar().add_xaxis(Yunnan_counts.index.values.tolist()).add_yaxis('4A-5A景区数量', Yunnan_counts.values.tolist(),itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_js))).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景区数量玫瑰图

Yunnan0 = Yunnan_counts.copy()
Yunnan0.sort_values(ascending=False, inplace=True)
c1 = (Pie().add('', [list(z) for z in zip(Yunnan0.index.values.tolist(), Yunnan0.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景区数量阴影散点图

item_style = {'normal': {'shadowColor': '#000000', 'shadowBlur': 20,'shadowOffsetX':5, 'shadowOffsetY':15}}
s1 = (Scatter().add_xaxis(Yunnan_counts.index.values.tolist()).add_yaxis('4A-5A景区数量', Yunnan_counts.values.tolist(),symbol_size=50,itemstyle_opts=item_style).set_global_opts(visualmap_opts=opts.VisualMapOpts(is_show=False, type_='size',range_size=[5,50]))
)
s1.render_notebook()

3.6 云南省4A-5A景区地图分布

Yunnan_tmp3 = Yunnan[Yunnan['星级'].isin(['4A', '5A'])]
Yunnan_counts = Yunnan_tmp3.groupby('城市').count()['星级']
m2 = (Map().add('云南省4A-5A景区分布', [list(z) for z in zip(Yunnan_counts.index.values.tolist(), Yunnan_counts.values.tolist())], '云南').set_global_opts(title_opts=opts.TitleOpts(title='云南省地图数据分布'),visualmap_opts=opts.VisualMapOpts(max_=12, is_piecewise=True),)
)
m2.render_notebook()

3.7 云南省门票价格区间占比玫瑰图

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(Yunnan['价格'], price_level, labels=label_level)        
Yunnan_price = jzmj_cut.value_counts()
Yunnan_price  #门票价格文本统计

结论:云南旅游景点的性价比也是很高的,景点星级很高,价格也十分实惠

p1 = (Pie(init_opts=opts.InitOpts(width='800px', height='600px',)).add('',[list(z) for z in zip(Yunnan_price.index.tolist(), Yunnan_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.8 云南门票价格区间数量散点图

color_js = """new echarts.graphic.RadialGradient(0.5, 0.5, 1,[{offset: 0,color: '#009ad6'},{offset: 1,color: '#ed1941'}])"""s2 = (Scatter().add_xaxis(Yunnan_price.index.tolist()).add_yaxis('门票价格区间', Yunnan_price.values.tolist(),symbol_size=50,itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_js))) .set_global_opts(yaxis_opts=opts.AxisOpts(name='数量'),xaxis_opts=opts.AxisOpts(name='价格区间(元)')).set_global_opts(visualmap_opts=opts.VisualMapOpts(is_show=False, # 设置通过图形大小来表现数据type_='size',# 图形大小映射范围range_size=[5,50]))
)
s2.render_notebook()

3.9 彩云之南景点简介词云

contents = "".join('%s' % i for i in Yunnan['简介'].values.tolist())
contents_list = jieba.cut(contents)
ac = Counter(contents_list)stopwords = []
with open('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()

 欢迎大家学代码的同时来云南参观旅游!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/35279.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android程序员面试5分钟自我介绍法

有简历,为何还要自我介绍? 要回答这个问题,首先搞清楚为什么面试官要请你做自我介绍?面试官通过自我介绍想考察被面试者什么?只有了解面试官的目的,被面试者才能做好自我介绍。 面试官通过被面试者自我介绍…

刷完这份2023年Android中高级最全面试真题答案解析,拿到offer几率提升50%

前言 今年以来,经济回暖,但行业岗位缺口紧缩的趋势恢复还需一段时间。尤其对于Android开发而言,想要跳槽到一个高薪岗位更是难上加难。 因此,想要杀出重围,必然要有万全的准备。除了一份美观的简历,刷一刷…

靠这份35w字Java面试题,终于收到字节Java开发岗满意Offer了!

靠这份35w字Java面试题,终于收到字节Java开发岗满意Offer了! 前天面Java PDD一面挂 美团一面挂 寄 美团全程Java八股文 字节40分钟八股文10分钟算法题,算法题是个普通的middle,没啥问题。 但是,八股跨度大且精细,寄。…

7个实用的Python自动化代码

关于Python有一句名言:不要重复造轮子 但是问题有三个: 1、你不知道已经有哪些轮子已经造好了,哪个适合你用。有名有姓的的著名轮子就400多个,更别说没名没姓自己在制造中的轮子 2、确实没重复造轮子,但是在重复制造…

创建用户账户

这一节内容我们来一起学习Linux中有关于用户身份及文件权限的内容。在windows中,我们可以通过图形化界面去创建及管理用户,但在Linux系统中,我们习惯用命令的方式去创建以及管理用户。 以上两图是windows系统中,如何创建用户以及管…

跨境电商卖家应该知道的3个社交媒体营销策略

关键词:跨境电商卖家、社交媒体营销 社交媒体是获取、吸引和留住客户的强大营销渠道。普通人拥有超过八个社交媒体帐户,使用每个平台参与社区,发现新产品并与朋友和家人保持联系。 社交媒体最强大的方面是,您的目标受众只需点击几…

人工智能时代,职场中的你是否真不可替代?用Python玩转ChatGPT

最近一段时间,ChatGPT在网络上很火。小伙伴们在感叹这款神奇的聊天机器人强大功能的同时。不知不觉会发现,我们已经被莫名其妙地带入到一个人工智能时代。 不管你愿不愿意承认,实事就是如此。相信很多小伙伴都很想体验一把这个智能应用&#…

2023年,总要干点不一样的事情

2020年——不寻常的一年,但我还是启动了两个新项目: 开设 “高效敏捷测试49讲” 专栏 (文字语音),后来形成了图书《敏捷测试:以持续测试促进持续交付》。 发起并成功举办了 全球软件质量效能大会&#xff0…

AIGC最近很火,给大家推荐一个已经有1000位开发者使用的中文aigc开源模型,包括ai画图、ai聊天

AIGC最近火得一塌糊涂! 12月16日,Science发布2022年度科学十大突破,其中AIGC作为人工智能领域的重要突破也赫然在列。 作为2022年以来AI圈最大的趋势,AIGC意味着,AI进军到了此前被视为“人类独占”的领域,如…

笔记本就能运行的ChatGPT平替来了,附完整版技术报告(附github代码)

关注并星标 从此不迷路 计算机视觉研究院 公众号ID|ComputerVisionGzq 学习群|扫码在主页获取加入方式 计算机视觉研究院专栏 作者:Edison_G GPT4All 是基于大量干净的助手数据(包括代码、故事和对话)训练而成的聊天机…

开源的短视频生成和编辑工具 Open Chat Video Editor

GitHub - SCUTlihaoyu/open-chat-video-editor: Open source short video automatic generation tool

Android 实现图文混排

Android 实现图文混排 需求: 在文字中间添加图片或者在文字后面添加图片;文字换行后,图片在第二行的后面;图片加点击事件,文字没有点击事件。 实现方案: 使用TextView Imageview实现,第1点…

IDEA2020 安装教程,图文教程

1、下载IDEA 首先在官网下载IDEA,官网下载地址为:IDEA下载地址 我这里选择的是Ultimate版本 IDEA各版本的区别: Community 社区版,免费,但是功能有限制,Android Studio就是基于这个版本定制的。 Ultimate …

手机剪映app图文成片功能怎么用

剪映作为一款简易的剪辑工具。很多小伙伴都在使用。近期软件更是为了让大家方便剪辑推出了图文成片功能。想知道怎么使用吗?那就千万不要错过本期内容哦~ 剪映新功能图文成片介绍 通过该功能。用户们只要输入一段文字。软件就能智能为大家匹配图片素材、添加字幕、…

剪映AI图文成片快速剪辑

NO.1点击图文成片 剪映AI,你可以拿头条和悟空问答的文章链接过来,它就能识别文字,生成视频。当然你也可以自创文案,然后生成视频,字幕都给你加好了。AI的剪辑点还是舒服的,自己只需要替换素材。

iTab浏览器插件安装教程

iTab浏览器插件 iTab是一个好看好用的自定义卡片式浏览器新标签页扩展。 安装iTab标签页扩展后,您将告别呆板无趣的原生标签页,享受iTab标签页为您带来的个性化新体验: 离线资源下载: iTab资源 安装教程 IE 浏览器 1.打开浏览器 点击 右上…

朋友四面阿里Java岗的详细流程和面试问题。

最近一个朋友跟我说,现在面试太难了,再也不是以前那种随便背几个面试题然后就能拿到offer的时候了。最近准备换工作面试了阿里,和我交流了下他遇到的一些面试题,然后我整理了一下,就分享给有需要的朋友们顺便也查漏补缺…

腾讯,百度,阿里的面试经验

小白看了此同仁的面试经久久不能平复,感叹自己菜鸟的同时,痛恶自己对于时间的浪费,大学时期的小白真的很潇洒,工作到现在的小白也是偷得浮生半日闲的小潇洒,想练就下面的同仁的水平,小白不吃不喝还需要2年&…

参加春招的小tips!字节/腾讯/华为/美团/shopee/阿里 服务端开发面经

前言 写在最前面:目前接了字节的offer,校招想来字节的可以私信我 以下面经均是以时间线排列,最好每次面试完都自我总结一下 有些问题比较少的或者没列出来的基本都是在聊项目 腾讯一面(未知部门) mysql varchar和charchar是固定长&#x…

【阿里三面】好险!本以为是场普通的阿里面试,没想到二面就迎来了P9大佬

前言 阿里,我是在BOSS上投的简历,之前也投过一次,简历都没通过筛选,后来让前辈帮我改了一下简历,重新投另一个部门,获得了面试机会。5月15日,中午HR打电话过来预约了下午4点半面试,…