大家好,我是python222_小锋老师,分享一套优质的基于Python的全国热门旅游景点数据分析可视化(pandas+pyecharts) 。
项目简介
随着国民生活水平的提升和旅游市场的快速发展,国内旅游已成为人们休闲生活的重要组成部分。为了深入了解全国景区门票销售情况和国民出游趋势,本项目通过对全国各地区景点门票的售卖数据进行分析,旨在揭示热门景点的分布和出游情况,为旅游业相关决策提供数据支持。
源码下载
链接: pan.baidu.com/s/1_bV9x3jB…
提取码: 1234
相关截图
核心代码
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"toc": true
},
"source": [
"<h1>Table of Contents<span class=\"tocSkip\"></span></h1>\n",
"<div class=\"toc\"><ul class=\"toc-item\"><li><span><a href=\"#项目介绍\" data-toc-modified-id=\"项目介绍-1\"><span class=\"toc-item-num\">1 </span>项目介绍</a></span></li><li><span><a href=\"#1.-导入模块\" data-toc-modified-id=\"1.-导入模块-2\"><span class=\"toc-item-num\">2 </span>1. 导入模块</a></span></li><li><span><a href=\"#2.Pandas数据处理\" data-toc-modified-id=\"2.Pandas数据处理-3\"><span class=\"toc-item-num\">3 </span>2.Pandas数据处理</a></span><ul class=\"toc-item\"><li><span><a href=\"#2.1-读取数据\" data-toc-modified-id=\"2.1-读取数据-3.1\"><span class=\"toc-item-num\">3.1 </span>2.1 读取数据</a></span></li><li><span><a href=\"#2.2-查看索引、数据类型和内存信息\" data-toc-modified-id=\"2.2-查看索引、数据类型和内存信息-3.2\"><span class=\"toc-item-num\">3.2 </span>2.2 查看索引、数据类型和内存信息</a></span></li><li><span><a href=\"#2.3-查看数值型列汇总统计\" data-toc-modified-id=\"2.3-查看数值型列汇总统计-3.3\"><span class=\"toc-item-num\">3.3 </span>2.3 查看数值型列汇总统计</a></span></li><li><span><a href=\"#2.4-查看销量为0的行\" data-toc-modified-id=\"2.4-查看销量为0的行-3.4\"><span class=\"toc-item-num\">3.4 </span>2.4 查看销量为0的行</a></span></li><li><span><a href=\"#2.5-去除销量为0的行数据\" data-toc-modified-id=\"2.5-去除销量为0的行数据-3.5\"><span class=\"toc-item-num\">3.5 </span>2.5 去除销量为0的行数据</a></span></li><li><span><a href=\"#2.6-统计各列空值\" data-toc-modified-id=\"2.6-统计各列空值-3.6\"><span class=\"toc-item-num\">3.6 </span>2.6 统计各列空值</a></span></li><li><span><a href=\"#2.7-将星级缺失值用‘未知’填充\" data-toc-modified-id=\"2.7-将星级缺失值用‘未知’填充-3.7\"><span class=\"toc-item-num\">3.7 </span>2.7 将星级缺失值用‘未知’填充</a></span></li><li><span><a href=\"#2.8-也可以将所有缺失值都用‘未知’填充\" data-toc-modified-id=\"2.8-也可以将所有缺失值都用‘未知’填充-3.8\"><span class=\"toc-item-num\">3.8 </span>2.8 也可以将所有缺失值都用‘未知’填充</a></span></li><li><span><a href=\"#2.9-按销量排序\" data-toc-modified-id=\"2.9-按销量排序-3.9\"><span class=\"toc-item-num\">3.9 </span>2.9 按销量排序</a></span></li></ul></li><li><span><a href=\"#3.-Pyecharts数据可视化\" data-toc-modified-id=\"3.-Pyecharts数据可视化-4\"><span class=\"toc-item-num\">4 </span>3. Pyecharts数据可视化</a></span><ul class=\"toc-item\"><li><span><a href=\"#3.1-销量前20热门景点数据\" data-toc-modified-id=\"3.1-销量前20热门景点数据-4.1\"><span class=\"toc-item-num\">4.1 </span>3.1 销量前20热门景点数据</a></span></li><li><span><a href=\"#3.2-假期出行数据全国地图分布\" data-toc-modified-id=\"3.2-假期出行数据全国地图分布-4.2\"><span class=\"toc-item-num\">4.2 </span>3.2 假期出行数据全国地图分布</a></span></li><li><span><a href=\"#3.3-各省市4A-5A景区数量柱状图\" data-toc-modified-id=\"3.3-各省市4A-5A景区数量柱状图-4.3\"><span class=\"toc-item-num\">4.3 </span>3.3 各省市4A-5A景区数量柱状图</a></span></li><li><span><a href=\"#3.4-各省市4A-5A景区数量玫瑰图\" data-toc-modified-id=\"3.4-各省市4A-5A景区数量玫瑰图-4.4\"><span class=\"toc-item-num\">4.4 </span>3.4 各省市4A-5A景区数量玫瑰图</a></span></li><li><span><a href=\"#3.5-各省市4A-5A景区数量阴影散点图\" data-toc-modified-id=\"3.5-各省市4A-5A景区数量阴影散点图-4.5\"><span class=\"toc-item-num\">4.5 </span>3.5 各省市4A-5A景区数量阴影散点图</a></span></li><li><span><a href=\"#3.6-各省市4A-5A景区地图分布\" data-toc-modified-id=\"3.6-各省市4A-5A景区地图分布-4.6\"><span class=\"toc-item-num\">4.6 </span>3.6 各省市4A-5A景区地图分布</a></span></li><li><span><a href=\"#3.7-门票价格区间占比玫瑰图\" data-toc-modified-id=\"3.7-门票价格区间占比玫瑰图-4.7\"><span class=\"toc-item-num\">4.7 </span>3.7 门票价格区间占比玫瑰图</a></span></li><li><span><a href=\"#3.8-门票价格区间数量散点图\" data-toc-modified-id=\"3.8-门票价格区间数量散点图-4.8\"><span class=\"toc-item-num\">4.8 </span>3.8 门票价格区间数量散点图</a></span></li><li><span><a href=\"#3.9-景点简介词云\" data-toc-modified-id=\"3.9-景点简介词云-4.9\"><span class=\"toc-item-num\">4.9 </span>3.9 景点简介词云</a></span></li></ul></li><li><span><a href=\"#总结\" data-toc-modified-id=\"总结-5\"><span class=\"toc-item-num\">5 </span>总结</a></span></li></ul></div>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "E8FF169A027449A6AB12585BB252124E",
"jupyter": {},
"mdEditEnable": true,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"# 项目介绍\n",
"\n",
"本期我们通过去全国各地区景点门票的售卖情况,简单分析一下全国比较热门的景点分布和国民出游情况,看看哪些景点比较受欢迎,希望对小伙伴们有所帮助,如有疑问或者需要改进的地方可以在评论区留言。 \n",
"\n",
"- 关键词\n",
"\n",
"pandas数据处理、pyecharts可视化、jieba分词"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "E297C894A9784F55A63141CADE03A899",
"jupyter": {},
"mdEditEnable": false,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"# 1. 导入模块 "
]
},
{
"cell_type": "code",
"execution_count": 161,
"metadata": {
"id": "FA092A6B19024D0F94EE3CF11AB4DB18",
"jupyter": {},
"notebookId": "61bc8d4159c2930017fd1f14",
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": [],
"ExecuteTime": {
"end_time": "2025-10-15T13:26:42.875881Z",
"start_time": "2025-10-15T13:26:42.744158600Z"
}
},
"outputs": [],
"source": [
"import jieba\n",
"import pandas as pd \n",
"from collections import Counter\n",
"from pyecharts.charts import Line,Pie,Scatter,Bar,Map,Grid\n",
"from pyecharts.charts import WordCloud\n",
"from pyecharts import options as opts\n",
"from pyecharts.globals import ThemeType\n",
"from pyecharts.globals import SymbolType\n",
"from pyecharts.commons.utils import JsCode\n",
"\n",
"from pyecharts.globals import CurrentConfig, NotebookType,OnlineHostType\n",
"CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_NOTEBOOK"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "03382FF7E283464A86920CF4E62F41C5",
"jupyter": {},
"mdEditEnable": false,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"# 2.Pandas数据处理"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "91041FC88B7D42C8856DF5E3C113108E",
"jupyter": {},
"mdEditEnable": false,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"## 2.1 读取数据"
]
},
{
"cell_type": "code",
"execution_count": 162,
"metadata": {
"id": "EFED20CBA70F46AE87311AC65E090CE3",
"jupyter": {},
"notebookId": "61bc8d4159c2930017fd1f14",
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": [],
"ExecuteTime": {
"end_time": "2025-10-15T13:26:43.004500800Z",
"start_time": "2025-10-15T13:26:42.751369500Z"
}
},
"outputs": [
{
"data": {
"text/plain": " 城市 名称 星级 评分 价格 销量 省/市/区 坐标 \\\n0 上海 上海迪士尼乐园 NaN 0.0 325.0 19459 上海·上海·浦东新区 121.667917,31.149712 \n1 上海 上海海昌海洋公园 4A 0.0 276.5 19406 上海·上海·浦东新区 121.915647,30.917713 \n2 上海 上海野生动物园 5A 3.6 116.0 6764 上海·上海·浦东新区 121.728112,31.059636 \n3 上海 东方绿舟 4A 3.5 40.0 5353 上海·上海·青浦区 121.015977,31.107866 \n4 上海 东方明珠 5A 3.8 54.0 3966 上海·上海·浦东新区 121.50626,31.245369 \n\n 简介 是否免费 具体地址 \n0 每个女孩都有一场迪士尼梦 False 上海市浦东新区川沙镇黄赵路310号上海迪士尼乐园 \n1 看珍稀海洋生物 | 玩超刺激娱乐项目 False 上海市浦东新区南汇城银飞路166号 \n2 全球动物聚集地 | 零距离和动物做朋友 False 上海市浦东新区南六公路178号 \n3 全国首屈一指的青少年校外教育营地 False 上海市青浦区沪青平公路6888号 \n4 感受云端漫步,品味老上海风情 False 上海市浦东新区世纪大道1号 ",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>城市</th>\n <th>名称</th>\n <th>星级</th>\n <th>评分</th>\n <th>价格</th>\n <th>销量</th>\n <th>省/市/区</th>\n <th>坐标</th>\n <th>简介</th>\n <th>是否免费</th>\n <th>具体地址</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>上海</td>\n <td>上海迪士尼乐园</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>325.0</td>\n <td>19459</td>\n <td>上海·上海·浦东新区</td>\n <td>121.667917,31.149712</td>\n <td>每个女孩都有一场迪士尼梦</td>\n <td>False</td>\n <td>上海市浦东新区川沙镇黄赵路310号上海迪士尼乐园</td>\n </tr>\n <tr>\n <th>1</th>\n <td>上海</td>\n <td>上海海昌海洋公园</td>\n <td>4A</td>\n <td>0.0</td>\n <td>276.5</td>\n <td>19406</td>\n <td>上海·上海·浦东新区</td>\n <td>121.915647,30.917713</td>\n <td>看珍稀海洋生物 | 玩超刺激娱乐项目</td>\n <td>False</td>\n <td>上海市浦东新区南汇城银飞路166号</td>\n </tr>\n <tr>\n <th>2</th>\n <td>上海</td>\n <td>上海野生动物园</td>\n <td>5A</td>\n <td>3.6</td>\n <td>116.0</td>\n <td>6764</td>\n <td>上海·上海·浦东新区</td>\n <td>121.728112,31.059636</td>\n <td>全球动物聚集地 | 零距离和动物做朋友</td>\n <td>False</td>\n <td>上海市浦东新区南六公路178号</td>\n </tr>\n <tr>\n <th>3</th>\n <td>上海</td>\n <td>东方绿舟</td>\n <td>4A</td>\n <td>3.5</td>\n <td>40.0</td>\n <td>5353</td>\n <td>上海·上海·青浦区</td>\n <td>121.015977,31.107866</td>\n <td>全国首屈一指的青少年校外教育营地</td>\n <td>False</td>\n <td>上海市青浦区沪青平公路6888号</td>\n </tr>\n <tr>\n <th>4</th>\n <td>上海</td>\n <td>东方明珠</td>\n <td>5A</td>\n <td>3.8</td>\n <td>54.0</td>\n <td>3966</td>\n <td>上海·上海·浦东新区</td>\n <td>121.50626,31.245369</td>\n <td>感受云端漫步,品味老上海风情</td>\n <td>False</td>\n <td>上海市浦东新区世纪大道1号</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"execution_count": 162,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_excel('./旅游景点.xlsx')\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "F938ED28D0D64C09A8BC371FF95DF6BA",
"jupyter": {},
"mdEditEnable": false,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"## 2.2 查看索引、数据类型和内存信息"
]
},
{
"cell_type": "code",
"execution_count": 163,
"metadata": {
"id": "9A1C77F834EB4581BE4B1BABCF5AADED",
"jupyter": {},
"notebookId": "61bc8d4159c2930017fd1f14",
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": [],
"ExecuteTime": {
"end_time": "2025-10-15T13:26:43.012901200Z",
"start_time": "2025-10-15T13:26:43.006502200Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 2443 entries, 0 to 2442\n",
"Data columns (total 11 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 城市 2443 non-null object \n",
" 1 名称 2443 non-null object \n",
" 2 星级 913 non-null object \n",
" 3 评分 2443 non-null float64\n",
" 4 价格 2443 non-null float64\n",
" 5 销量 2443 non-null int64 \n",
" 6 省/市/区 2443 non-null object \n",
" 7 坐标 2443 non-null object \n",
" 8 简介 2402 non-null object \n",
" 9 是否免费 2443 non-null bool \n",
" 10 具体地址 2440 non-null object \n",
"dtypes: bool(1), float64(2), int64(1), object(7)\n",
"memory usage: 193.4+ KB\n"
]
}
],
"source": [
"df.info()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "5E3FA6570137497C95A7B35E70010E7F",
"jupyter": {},
"mdEditEnable": false,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"## 2.3 查看数值型列汇总统计"
]
},
{
"cell_type": "code",
"execution_count": 164,
"metadata": {
"id": "DE4983C061D0485FAD8A638192265C23",
"jupyter": {},
"notebookId": "61bc8d4159c2930017fd1f14",
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": [],
"ExecuteTime": {
"end_time": "2025-10-15T13:26:43.021303Z",
"start_time": "2025-10-15T13:26:43.009901700Z"
}
},
"outputs": [
{
"data": {
"text/plain": " 评分 价格 销量\ncount 2443.000000 2443.000000 2443.000000\nmean 1.683135 151.780929 360.652886\nstd 2.012527 649.170226 1043.798441\nmin 0.000000 0.000000 0.000000\n25% 0.000000 32.000000 40.000000\n50% 0.000000 62.000000 90.000000\n75% 3.700000 120.000000 270.000000\nmax 5.000000 23888.000000 19459.000000",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>评分</th>\n <th>价格</th>\n <th>销量</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>count</th>\n <td>2443.000000</td>\n <td>2443.000000</td>\n <td>2443.000000</td>\n </tr>\n <tr>\n <th>mean</th>\n <td>1.683135</td>\n <td>151.780929</td>\n <td>360.652886</td>\n </tr>\n <tr>\n <th>std</th>\n <td>2.012527</td>\n <td>649.170226</td>\n <td>1043.798441</td>\n </tr>\n <tr>\n <th>min</th>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n </tr>\n <tr>\n <th>25%</th>\n <td>0.000000</td>\n <td>32.000000</td>\n <td>40.000000</td>\n </tr>\n <tr>\n <th>50%</th>\n <td>0.000000</td>\n <td>62.000000</td>\n <td>90.000000</td>\n </tr>\n <tr>\n <th>75%</th>\n <td>3.700000</td>\n <td>120.000000</td>\n <td>270.000000</td>\n </tr>\n <tr>\n <th>max</th>\n <td>5.000000</td>\n <td>23888.000000</td>\n <td>19459.000000</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"execution_count": 164,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "2A7273A39E6D44889A7943D23DEFF1B5",
"jupyter": {},
"mdEditEnable": false,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"## 2.4 查看销量为0的行"
]
},
{
"cell_type": "code",
"execution_count": 165,
"metadata": {
"id": "FC10C73FB8564E74ADCD386658C60D87",
"jupyter": {},
"notebookId": "61bc8d4159c2930017fd1f14",
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": [],
"ExecuteTime": {
"end_time": "2025-10-15T13:26:43.028382100Z",
"start_time": "2025-10-15T13:26:43.021303Z"
}
},
"outputs": [
{
"data": {
"text/plain": " 城市 名称 星级 评分 价格 销量 省/市/区 坐标 \\\n301 台湾 复兴桥风景区 NaN 0.0 0.0 0 台湾·桃园 121.35037883956,24.815040245504 \n302 台湾 长春祠 NaN 3.5 0.0 0 台湾·花莲 121.60445032684,24.162302549393 \n303 台湾 淡水老街 NaN 0.0 0.0 0 台湾·淡水 121.44124069779,25.171297755773 \n304 台湾 士林官邸 NaN 5.0 0.0 0 台湾·台北 121.53013540214,25.093934468272 \n305 台湾 北安公园 NaN 5.0 0.0 0 台湾·台北 121.52694244942,25.076889096728 \n\n 简介 是否免费 具体地址 \n301 带动了北横碧水青山的另一种欢乐风情 False 桃园县复兴乡中正路15号 \n302 一道飞瀑分流入溪,山水景色绝佳 True 台湾花莲县 \n303 美食汇聚的北台湾老街之一 True 台北县淡水镇中正路 \n304 林木参天、绿树幽深,极富神秘色彩 True 台北市士林区中山北路五段兴福林路口 \n305 满园新绿,温雅如诗,连绵一片绿意盎然 False 台湾台北市中山北路四段北安路旁 ",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>城市</th>\n <th>名称</th>\n <th>星级</th>\n <th>评分</th>\n <th>价格</th>\n <th>销量</th>\n <th>省/市/区</th>\n <th>坐标</th>\n <th>简介</th>\n <th>是否免费</th>\n <th>具体地址</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>301</th>\n <td>台湾</td>\n <td>复兴桥风景区</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0</td>\n <td>台湾·桃园</td>\n <td>121.35037883956,24.815040245504</td>\n <td>带动了北横碧水青山的另一种欢乐风情</td>\n <td>False</td>\n <td>桃园县复兴乡中正路15号</td>\n </tr>\n <tr>\n <th>302</th>\n <td>台湾</td>\n <td>长春祠</td>\n <td>NaN</td>\n <td>3.5</td>\n <td>0.0</td>\n <td>0</td>\n <td>台湾·花莲</td>\n <td>121.60445032684,24.162302549393</td>\n <td>一道飞瀑分流入溪,山水景色绝佳</td>\n <td>True</td>\n <td>台湾花莲县</td>\n </tr>\n <tr>\n <th>303</th>\n <td>台湾</td>\n <td>淡水老街</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0</td>\n <td>台湾·淡水</td>\n <td>121.44124069779,25.171297755773</td>\n <td>美食汇聚的北台湾老街之一</td>\n <td>True</td>\n <td>台北县淡水镇中正路</td>\n </tr>\n <tr>\n <th>304</th>\n <td>台湾</td>\n <td>士林官邸</td>\n <td>NaN</td>\n <td>5.0</td>\n <td>0.0</td>\n <td>0</td>\n <td>台湾·台北</td>\n <td>121.53013540214,25.093934468272</td>\n <td>林木参天、绿树幽深,极富神秘色彩</td>\n <td>True</td>\n <td>台北市士林区中山北路五段兴福林路口</td>\n </tr>\n <tr>\n <th>305</th>\n <td>台湾</td>\n <td>北安公园</td>\n <td>NaN</td>\n <td>5.0</td>\n <td>0.0</td>\n <td>0</td>\n <td>台湾·台北</td>\n <td>121.52694244942,25.076889096728</td>\n <td>满园新绿,温雅如诗,连绵一片绿意盎然</td>\n <td>False</td>\n <td>台湾台北市中山北路四段北安路旁</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"execution_count": 165,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.loc[df['销量']==0,:].head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "5B2C5E4E0A6B4EDD81F4A5463FE557D5",
"jupyter": {},
"mdEditEnable": false,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"一共有123行。"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "CCB1E99F409548CFBC87E3E00D9A900D",
"jupyter": {},
"mdEditEnable": false,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"## 2.5 去除销量为0的行数据"
]
},
{
"cell_type": "code",
"execution_count": 166,
"metadata": {
"id": "34AA1739B5264055A6B35B30168940DD",
"jupyter": {},
"notebookId": "61bc8d4159c2930017fd1f14",
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": [],
"ExecuteTime": {
"end_time": "2025-10-15T13:26:43.064054100Z",
"start_time": "2025-10-15T13:26:43.028382100Z"
}
},
"outputs": [
{
"data": {
"text/plain": "(2320, 11)"
},
"execution_count": 166,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = df[df['销量']!=0] \n",
"df.shape"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "0E009A7038E74B488CBA5928B0452A0F",
"jupyter": {},
"mdEditEnable": false,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"去除后还剩下2320行数据。"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "38B1D5A86828490F8F138E3E37847BE7",
"jupyter": {},
"mdEditEnable": false,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"## 2.6 统计各列空值"
]
},
{
"cell_type": "code",
"execution_count": 167,
"metadata": {
"id": "3AAE68729FB84239803A046E3D475BF3",
"jupyter": {},
"notebookId": "61bc8d4159c2930017fd1f14",
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": [],
"ExecuteTime": {
"end_time": "2025-10-15T13:26:43.082349700Z",
"start_time": "2025-10-15T13:26:43.036143800Z"
}
},
"outputs": [
{
"data": {
"text/plain": "城市 0\n名称 0\n星级 1407\n评分 0\n价格 0\n销量 0\n省/市/区 0\n坐标 0\n简介 37\n是否免费 0\n具体地址 2\ndtype: int64"
},
"execution_count": 167,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.isnull().sum()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "0A13A87BD07B4B688420D8374EFC3F50",
"jupyter": {},
"mdEditEnable": false,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"星级存在1407个空值,简介37个空值,具体地址2个空值,其他列不存在空值,数据还算比较完整。"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "893925C89CD64E9088B80E57165520C5",
"jupyter": {},
"mdEditEnable": false,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"## 2.7 将星级缺失值用‘未知’填充"
]
},
{
"cell_type": "code",
"execution_count": 168,
"metadata": {
"id": "B9557FC5FC764C2C8219C06A166082ED",
"jupyter": {},
"notebookId": "61bc8d4159c2930017fd1f14",
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": [],
"ExecuteTime": {
"end_time": "2025-10-15T13:26:43.144918900Z",
"start_time": "2025-10-15T13:26:43.047230400Z"
}
},
"outputs": [
{
"data": {
"text/plain": "城市 0\n名称 0\n星级 0\n评分 0\n价格 0\n销量 0\n省/市/区 0\n坐标 0\n简介 37\n是否免费 0\n具体地址 2\ndtype: int64"
},
"execution_count": 168,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# df['星级'].fillna('未知', inplace=True)\n",
"df.fillna({'星级': '未知'}, inplace=True)\n",
"df.isnull().sum()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "79EAEE2CC12A46C7951E5D7AA86BDD46",
"jupyter": {},
"mdEditEnable": false,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"## 2.8 也可以将所有缺失值都用‘未知’填充"
]
},
{
"cell_type": "code",
"execution_count": 169,
"metadata": {
"id": "4AF9872713754FF9965D304D93B757F5",
"jupyter": {},
"notebookId": "61bc8d4159c2930017fd1f14",
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": [],
"ExecuteTime": {
"end_time": "2025-10-15T13:26:43.160952Z",
"start_time": "2025-10-15T13:26:43.055637200Z"
}
},
"outputs": [
{
"data": {
"text/plain": "城市 0\n名称 0\n星级 0\n评分 0\n价格 0\n销量 0\n省/市/区 0\n坐标 0\n简介 0\n是否免费 0\n具体地址 0\ndtype: int64"
},
"execution_count": 169,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.fillna('未知', inplace=True)\n",
"df.isnull().sum()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "2B95E79B168F44658FBBFADFC43D65D6",
"jupyter": {},
"mdEditEnable": false,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"## 2.9 按销量排序"
]
},
{
"cell_type": "code",
"execution_count": 170,
"metadata": {
"id": "419C7BAA08DF42C08448C18BAC97D265",
"jupyter": {},
"notebookId": "61bc8d4159c2930017fd1f14",
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": [],
"ExecuteTime": {
"end_time": "2025-10-15T13:26:43.183541Z",
"start_time": "2025-10-15T13:26:43.065059800Z"
}
},
"outputs": [
{
"data": {
"text/plain": " 城市 名称 星级 评分 价格 销量 省/市/区 \\\n0 上海 上海迪士尼乐园 未知 0.0 325.0 19459 上海·上海·浦东新区 \n1 上海 上海海昌海洋公园 4A 0.0 276.5 19406 上海·上海·浦东新区 \n211 北京 故宫 5A 5.0 58.6 15277 北京·北京·东城区 \n2187 陕西 秦始皇帝陵博物院(兵马俑) 5A 4.4 120.0 12714 陕西·西安·临潼区 \n474 四川 成都大熊猫繁育研究基地 4A 4.0 52.0 9731 四川·成都·成华区 \n\n 坐标 简介 是否免费 \\\n0 121.667917,31.149712 每个女孩都有一场迪士尼梦 False \n1 121.915647,30.917713 看珍稀海洋生物 | 玩超刺激娱乐项目 False \n211 116.403347,39.922148 世界五大宫之首,穿越与您近在咫尺 False \n2187 109.266029,34.386024 世界第八大奇迹 False \n474 104.152603,30.738951 无关黑与白, 不分胖与瘦, 可爱而又温暖 False \n\n 具体地址 \n0 上海市浦东新区川沙镇黄赵路310号上海迪士尼乐园 \n1 上海市浦东新区南汇城银飞路166号 \n211 北京市东城区景山前街4号 \n2187 陕西省西安市临潼县秦始皇陵东1.5公里处 \n474 四川省成都市成华区外北熊猫大道1375号 ",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>城市</th>\n <th>名称</th>\n <th>星级</th>\n <th>评分</th>\n <th>价格</th>\n <th>销量</th>\n <th>省/市/区</th>\n <th>坐标</th>\n <th>简介</th>\n <th>是否免费</th>\n <th>具体地址</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>上海</td>\n <td>上海迪士尼乐园</td>\n <td>未知</td>\n <td>0.0</td>\n <td>325.0</td>\n <td>19459</td>\n <td>上海·上海·浦东新区</td>\n <td>121.667917,31.149712</td>\n <td>每个女孩都有一场迪士尼梦</td>\n <td>False</td>\n <td>上海市浦东新区川沙镇黄赵路310号上海迪士尼乐园</td>\n </tr>\n <tr>\n <th>1</th>\n <td>上海</td>\n <td>上海海昌海洋公园</td>\n <td>4A</td>\n <td>0.0</td>\n <td>276.5</td>\n <td>19406</td>\n <td>上海·上海·浦东新区</td>\n <td>121.915647,30.917713</td>\n <td>看珍稀海洋生物 | 玩超刺激娱乐项目</td>\n <td>False</td>\n <td>上海市浦东新区南汇城银飞路166号</td>\n </tr>\n <tr>\n <th>211</th>\n <td>北京</td>\n <td>故宫</td>\n <td>5A</td>\n <td>5.0</td>\n <td>58.6</td>\n <td>15277</td>\n <td>北京·北京·东城区</td>\n <td>116.403347,39.922148</td>\n <td>世界五大宫之首,穿越与您近在咫尺</td>\n <td>False</td>\n <td>北京市东城区景山前街4号</td>\n </tr>\n <tr>\n <th>2187</th>\n <td>陕西</td>\n <td>秦始皇帝陵博物院(兵马俑)</td>\n <td>5A</td>\n <td>4.4</td>\n <td>120.0</td>\n <td>12714</td>\n <td>陕西·西安·临潼区</td>\n <td>109.266029,34.386024</td>\n <td>世界第八大奇迹</td>\n <td>False</td>\n <td>陕西省西安市临潼县秦始皇陵东1.5公里处</td>\n </tr>\n <tr>\n <th>474</th>\n <td>四川</td>\n <td>成都大熊猫繁育研究基地</td>\n <td>4A</td>\n <td>4.0</td>\n <td>52.0</td>\n <td>9731</td>\n <td>四川·成都·成华区</td>\n <td>104.152603,30.738951</td>\n <td>无关黑与白, 不分胖与瘦, 可爱而又温暖</td>\n <td>False</td>\n <td>四川省成都市成华区外北熊猫大道1375号</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"execution_count": 170,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.sort_values('销量', ascending=False).head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "CF493E19BF2F4022A7B9D30963657A1C",
"jupyter": {},
"mdEditEnable": false,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"# 3. Pyecharts数据可视化"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "A53EABB8204D47F38F63ECA8FAAF399C",
"jupyter": {},
"mdEditEnable": false,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"## 3.1 销量前20热门景点数据"
]
},
{
"cell_type": "code",
"execution_count": 171,
"metadata": {
"hide_input": true,
"id": "2234662DFE604FD98FE71DB60F1E056E",
"jupyter": {},
"notebookId": "61bc8d4159c2930017fd1f14",
"scrolled": true,
"slideshow": {
"slide_type": "slide"
},
"tags": [],
"ExecuteTime": {
"end_time": "2025-10-15T13:26:43.184541300Z",
"start_time": "2025-10-15T13:26:43.078271300Z"
}
},
"outputs": [
{
"data": {
"text/plain": "'D:\\\\sys\\\\lvyou\\\\销量前20热门景点数据.html'"
},
"execution_count": 171,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 线性渐变\n",
"color_js = \"\"\"new echarts.graphic.LinearGradient(0, 0, 1, 0,\n",
" [{offset: 0, color: '#009ad6'}, {offset: 1, color: '#ed1941'}], false)\"\"\"\n",
"\n",
"\n",
"sort_info = df.sort_values(by='销量', ascending=True)\n",
"b1 = (\n",
" Bar()\n",
" .add_xaxis(list(sort_info['名称'])[-20:])\n",
" .add_yaxis('热门景点销量', sort_info['销量'].values.tolist()[-20:],itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_js)))\n",
" .reversal_axis()\n",
" .set_global_opts(\n",
" title_opts=opts.TitleOpts(title='热门景点销量数据'),\n",
" yaxis_opts=opts.AxisOpts(name='景点名称'),\n",
" xaxis_opts=opts.AxisOpts(name='销量'),\n",
" )\n",
" .set_series_opts(label_opts=opts.LabelOpts(position=\"right\"))\n",
"\n",
")\n",
"# 将图形整体右移\n",
"g1 = (\n",
" Grid()\n",
" .add(b1, grid_opts=opts.GridOpts(pos_left='20%', pos_right='5%')) \n",
")\n",
"g1.render('销量前20热门景点数据.html')"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "9E79713474E642B8B45B487AAA588B9F",
"jupyter": {},
"mdEditEnable": false,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"## 3.2 假期出行数据全国地图分布"
]
},
{
"cell_type": "code",
"execution_count": 172,
"metadata": {
"scrolled": true,
"ExecuteTime": {
"end_time": "2025-10-15T13:26:43.196797900Z",
"start_time": "2025-10-15T13:26:43.085436900Z"
}
},
"outputs": [],
"source": [
"dictcode = {'北京': '北京市',\n",
" '天津': '天津市',\n",
" '河北': '河北省',\n",
" '山西': '山西省',\n",
" '内蒙古': '内蒙古自治区',\n",
" '辽宁': '辽宁省',\n",
" '吉林': '吉林省',\n",
" '黑龙江': '黑龙江省',\n",
" '上海': '上海市',\n",
" '江苏': '江苏省',\n",
" '浙江': '浙江省',\n",
" '安徽': '安徽省',\n",
" '福建': '福建省',\n",
" '江西': '江西省',\n",
" '山东': '山东省',\n",
" '河南': '河南省',\n",
" '湖北': '湖北省',\n",
" '湖南': '湖南省',\n",
" '广东': '广东省',\n",
" '广西': '广西壮族自治区',\n",
" '海南': '海南省',\n",
" '重庆': '重庆市',\n",
" '四川': '四川省',\n",
" '贵州': '贵州省',\n",
" '云南': '云南省',\n",
" '西藏': '西藏自治区',\n",
" '陕西': '陕西省',\n",
" '甘肃': '甘肃省',\n",
" '青海': '青海省',\n",
" '宁夏': '宁夏回族自治区',\n",
" '新疆': '新疆维吾尔自治区',\n",
"'台湾':'台湾',\n",
" '香港':'香港',\n",
" '澳门':'澳门'}"
]
},
{
"cell_type": "code",
"execution_count": 173,
"metadata": {
"hide_input": true,
"id": "A45D19EE7D7747B585372EAF3F0DFAC4",
"jupyter": {},
"notebookId": "61bc8d4159c2930017fd1f14",
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": [],
"ExecuteTime": {
"end_time": "2025-10-15T13:26:43.243073800Z",
"start_time": "2025-10-15T13:26:43.091306500Z"
}
},
"outputs": [
{
"data": {
"text/plain": "'D:\\\\sys\\\\lvyou\\\\假期出行数据全国地图分布.html'"
},
"execution_count": 173,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_tmp1 = df[['城市','销量']]\n",
"df_counts = df_tmp1.groupby('城市').sum()\n",
"m1 = (\n",
" Map()\n",
" .add('假期出行分布', [list(z) for z in zip([dictcode[x] for x in df_counts.index.values.tolist() ], df_counts.values.tolist())], 'china')\n",
" .set_global_opts(\n",
" title_opts=opts.TitleOpts(title='假期出行数据地图分布'),\n",
" visualmap_opts=opts.VisualMapOpts(max_=100000, is_piecewise=False,range_color=[\"white\", \"#fa8072\", \"#ed1941\"]),\n",
" )\n",
" )\n",
"m1.render('假期出行数据全国地图分布.html')"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "6D2C936FC70948479A50BC99BB9E8FC3",
"jupyter": {},
"mdEditEnable": false,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"**华东、华南、华中**等地区属于国民出游热点地区,尤其是**北京、上海、江苏、广东、四川、陕西**等地区出行比较密集。 \n",
"\n",
"## 3.3 各省市4A-5A景区数量柱状图"
]
},
{
"cell_type": "code",
"execution_count": 174,
"metadata": {
"hide_input": true,
"id": "006C1643C3F84F928FB35A8C581A02C0",
"jupyter": {},
"notebookId": "61bc8d4159c2930017fd1f14",
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": [],
"ExecuteTime": {
"end_time": "2025-10-15T13:26:43.244073900Z",
"start_time": "2025-10-15T13:26:43.101679700Z"
}
},
"outputs": [
{
"data": {
"text/plain": "'D:\\\\sys\\\\lvyou\\\\各省市4A-5A景区数量柱状图.html'"
},
"execution_count": 174,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 线性渐变\n",
"color_js = \"\"\"new echarts.graphic.LinearGradient(0, 1, 0, 0,\n",
" [{offset: 0, color: '#009ad6'}, {offset: 1, color: '#ed1941'}], false)\"\"\" \n",
"\n",
"df_tmp2 = df[df['星级'].isin(['4A', '5A'])]\n",
"df_counts = df_tmp2.groupby('城市').count()['星级']\n",
"b2 = (\n",
" Bar()\n",
" .add_xaxis(df_counts.index.values.tolist())\n",
" .add_yaxis('4A-5A景区数量', df_counts.values.tolist(),itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_js)))\n",
" .set_global_opts(\n",
" title_opts=opts.TitleOpts(title='各省市4A-5A景区数量'),\n",
" datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(type_='inside')],\n",
" )\n",
" )\n",
"b2.render('各省市4A-5A景区数量柱状图.html')"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "8A7747CCF5E944139712945EA05D50A8",
"jupyter": {},
"mdEditEnable": false,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"## 3.4 各省市4A-5A景区数量玫瑰图"
]
},
{
"cell_type": "code",
"execution_count": 175,
"metadata": {
"hide_input": true,
"id": "312D5065C1CD4E2FB5DDEA9D53A39558",
"jupyter": {},
"notebookId": "61bc8d4159c2930017fd1f14",
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": [],
"ExecuteTime": {
"end_time": "2025-10-15T13:26:43.248396Z",
"start_time": "2025-10-15T13:26:43.110091200Z"
}
},
"outputs": [
{
"data": {
"text/plain": "'D:\\\\sys\\\\lvyou\\\\各省市4A-5A景区数量玫瑰图.html'"
},
"execution_count": 175,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df0 = df_counts.copy()\n",
"df0.sort_values(ascending=False, inplace=True)\n",
"c1 = (\n",
" Pie()\n",
" .add('', [list(z) for z in zip(df0.index.values.tolist(), df0.values.tolist())],\n",
" radius=['30%', '100%'],\n",
" center=['50%', '60%'],\n",
" rosetype='area',\n",
" )\n",
" .set_global_opts(title_opts=opts.TitleOpts(title='地区景点数量'),\n",
" legend_opts=opts.LegendOpts(is_show=False),\n",
" toolbox_opts=opts.ToolboxOpts())\n",
" .set_series_opts(label_opts=opts.LabelOpts(is_show=True, position='inside', font_size=12,\n",
" formatter='{b}: {c}', font_style='italic',\n",
" font_weight='bold', font_family='Microsoft YaHei'\n",
" ))\n",
")\n",
"c1.render('各省市4A-5A景区数量玫瑰图.html')"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "DAE41EAF8FDE498E8D5A16248A075EE7",
"jupyter": {},
"mdEditEnable": false,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"## 3.5 各省市4A-5A景区数量阴影散点图"
]
},
{
"cell_type": "code",
"execution_count": 176,
"metadata": {
"hide_input": true,
"id": "30FC8ACECB5E414DAAB0A4279D420E63",
"jupyter": {},
"notebookId": "61bc8d4159c2930017fd1f14",
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": [],
"ExecuteTime": {
"end_time": "2025-10-15T13:26:43.261825900Z",
"start_time": "2025-10-15T13:26:43.120336500Z"
}
},
"outputs": [
{
"data": {
"text/plain": "'D:\\\\sys\\\\lvyou\\\\各省市4A-5A景区数量阴影散点图.html'"
},
"execution_count": 176,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"item_style = {'normal': {'shadowColor': '#000000', \n",
" 'shadowBlur': 20,\n",
" 'shadowOffsetX':5, \n",
" 'shadowOffsetY':15\n",
" }\n",
" }\n",
"s1 = (\n",
" Scatter()\n",
" .add_xaxis(df_counts.index.values.tolist())\n",
" .add_yaxis('4A-5A景区数量', df_counts.values.tolist(),symbol_size=50,itemstyle_opts=item_style)\n",
" .set_global_opts(visualmap_opts=opts.VisualMapOpts(is_show=False, \n",
" type_='size',\n",
" range_size=[5,50]))\n",
")\n",
"s1.render('各省市4A-5A景区数量阴影散点图.html')"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "049552DEB5504E14B0E01767CC42C762",
"jupyter": {},
"mdEditEnable": false,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"## 3.6 各省市4A-5A景区地图分布"
]
},
{
"cell_type": "code",
"execution_count": 177,
"metadata": {
"hide_input": true,
"id": "0FCF25B83EDD41038514CB4F16372300",
"jupyter": {},
"notebookId": "61bc8d4159c2930017fd1f14",
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": [],
"ExecuteTime": {
"end_time": "2025-10-15T13:26:43.262329200Z",
"start_time": "2025-10-15T13:26:43.144918900Z"
}
},
"outputs": [
{
"data": {
"text/plain": "'D:\\\\sys\\\\lvyou\\\\各省市4A-5A景区地图分布.html'"
},
"execution_count": 177,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_tmp3 = df[df['星级'].isin(['4A', '5A'])]\n",
"df_counts = df_tmp3.groupby('城市').count()['星级']\n",
"m2 = (\n",
" Map()\n",
" .add('4A-5A景区分布', [list(z) for z in zip([dictcode[x] for x in df_counts.index.values.tolist() ], df_counts.values.tolist())], 'china')\n",
" .set_global_opts(\n",
" title_opts=opts.TitleOpts(title='地图数据分布'),\n",
" visualmap_opts=opts.VisualMapOpts(max_=50, is_piecewise=True),\n",
" )\n",
")\n",
"m2.render('各省市4A-5A景区地图分布.html')"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "A349E7E012294947B6D8117841172692",
"jupyter": {},
"mdEditEnable": false,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"**江苏、安徽、河南、北京、湖北**等地区4A、5A级景区数量比较多。 \n",
"\n",
"## 3.7 门票价格区间占比玫瑰图"
]
},
{
"cell_type": "code",
"execution_count": 178,
"metadata": {
"id": "F67A8AE64241445D980B5CBB4AC5B2D7",
"jupyter": {},
"notebookId": "61bc8d4159c2930017fd1f14",
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": [],
"ExecuteTime": {
"end_time": "2025-10-15T13:26:43.262329200Z",
"start_time": "2025-10-15T13:26:43.144918900Z"
}
},
"outputs": [
{
"data": {
"text/plain": "价格\n0-50 888\n50-100 725\n100-150 278\n150-200 184\n200-250 62\n250-300 59\n300-350 20\n350-400 19\n400-500 13\nName: count, dtype: int64"
},
"execution_count": 178,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 门票价格占比\n",
"price_level = [0, 50, 100, 150, 200, 250, 300, 350, 400, 500] \n",
"label_level = ['0-50', '50-100', '100-150', '150-200', '200-250', '250-300', '300-350', '350-400', '400-500'] \n",
"jzmj_cut = pd.cut(df['价格'], price_level, labels=label_level) \n",
"df_price = jzmj_cut.value_counts()\n",
"df_price"
]
},
{
"cell_type": "code",
"execution_count": 179,
"metadata": {
"hide_input": true,
"id": "A5BCB37CE0904684BC0D05EC27CFD0B4",
"jupyter": {},
"notebookId": "61bc8d4159c2930017fd1f14",
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": [],
"ExecuteTime": {
"end_time": "2025-10-15T13:26:43.262329200Z",
"start_time": "2025-10-15T13:26:43.147751400Z"
}
},
"outputs": [
{
"data": {
"text/plain": "'D:\\\\sys\\\\lvyou\\\\门票价格区间占比玫瑰图.html'"
},
"execution_count": 179,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p1 = (\n",
" Pie(init_opts=opts.InitOpts(\n",
" width='800px', height='600px',\n",
" )\n",
" )\n",
" .add(\n",
" '',\n",
" [list(z) for z in zip(df_price.index.tolist(), df_price.values.tolist())],\n",
" radius=['20%', '60%'],\n",
" center=['40%', '50%'],\n",
" rosetype='radius',\n",
" label_opts=opts.LabelOpts(is_show=True),\n",
" ) \n",
" .set_global_opts(title_opts=opts.TitleOpts(title='门票价格占比',pos_left='33%',pos_top=\"5%\"),\n",
" legend_opts=opts.LegendOpts(type_='scroll', pos_left=\"80%\",pos_top=\"25%\",orient=\"vertical\")\n",
" )\n",
" .set_series_opts(label_opts=opts.LabelOpts(formatter='{b}: {c} ({d}%)'),position='outside')\n",
" )\n",
"p1.render('门票价格区间占比玫瑰图.html')"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7BBAF122382A48D583FF9D4E598EC2EF",
"jupyter": {},
"mdEditEnable": false,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"## 3.8 门票价格区间数量散点图"
]
},
{
"cell_type": "code",
"execution_count": 180,
"metadata": {
"hide_input": true,
"id": "0F746E7689CE47C482C9438E2162D618",
"jupyter": {},
"notebookId": "61bc8d4159c2930017fd1f14",
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": [],
"ExecuteTime": {
"end_time": "2025-10-15T13:26:43.263333700Z",
"start_time": "2025-10-15T13:26:43.155949600Z"
}
},
"outputs": [
{
"data": {
"text/plain": "'D:\\\\sys\\\\lvyou\\\\门票价格区间数量散点图.html'"
},
"execution_count": 180,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"color_js = \"\"\"new echarts.graphic.RadialGradient(\n",
" 0.5, 0.5, 1,\n",
" [{offset: 0,\n",
" color: '#009ad6'},\n",
" {offset: 1,\n",
" color: '#ed1941'}\n",
" ])\"\"\"\n",
"\n",
"s2 = (\n",
" Scatter()\n",
" .add_xaxis(df_price.index.tolist())\n",
" .add_yaxis('门票价格区间', df_price.values.tolist(),symbol_size=50,itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_js))) \n",
" .set_global_opts(\n",
" yaxis_opts=opts.AxisOpts(name='数量'),\n",
" xaxis_opts=opts.AxisOpts(name='价格区间(元)'))\n",
" .set_global_opts(visualmap_opts=opts.VisualMapOpts(is_show=False, \n",
" # 设置通过图形大小来表现数据\n",
" type_='size',\n",
" # 图形大小映射范围\n",
" range_size=[5,50]))\n",
")\n",
"s2.render('门票价格区间数量散点图.html')"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "3AAD62F9565742E69179EDB55C53FDA2",
"jupyter": {},
"mdEditEnable": false,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"## 3.9 景点简介词云"
]
},
{
"cell_type": "code",
"execution_count": 181,
"metadata": {
"hide_input": true,
"id": "0BC6BC05107645F18AEC81A91AB0E3F1",
"jupyter": {},
"notebookId": "61bc8d4159c2930017fd1f14",
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": [],
"ExecuteTime": {
"end_time": "2025-10-15T13:26:43.285307Z",
"start_time": "2025-10-15T13:26:43.168474Z"
}
},
"outputs": [
{
"data": {
"text/plain": "'D:\\\\sys\\\\lvyou\\\\景点简介词云.html'"
},
"execution_count": 181,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"contents = \"\".join('%s' % i for i in df['简介'].values.tolist())\n",
"contents_list = jieba.cut(contents)\n",
"ac = Counter(contents_list)\n",
"\n",
"stopwords = []\n",
"with open('./stopwords.txt', \"r\",encoding='utf-8') as f: # 打开文件\n",
" data = f.read() # 读取文件\n",
" stopwords = data.split('\\n')\n",
"\n",
"for i in stopwords:\n",
" del ac[i]\n",
" \n",
"w1 = (\n",
" WordCloud()\n",
" .add(\"\", \n",
" ac.most_common(150), \n",
" word_size_range=[5, 100], \n",
" textstyle_opts=opts.TextStyleOpts(font_family=\"cursive\"),\n",
" shape='star')\n",
" .set_global_opts(title_opts=opts.TitleOpts(title=\"景点简介词云\"))\n",
")\n",
"w1.render('景点简介词云.html')"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "9958BE467A004FA18DD0EA008B333B6C",
"jupyter": {},
"mdEditEnable": true,
"notebookId": "61bc8d4159c2930017fd1f14",
"runtime": {
"execution_status": null,
"status": "default"
},
"scrolled": false,
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"# 总结 \n",
"* 华东、华南、华中等地区属于国民出游热点地区,尤其是北京、上海、江苏、广东、四川、陕西等地区出行比较密集。 \n",
"* 江苏、安徽、河南、北京、湖北等地区4A、5A级景区数量比较多。 \n",
"* 门票价格100以内居多,大概占比70%,还是比较实惠的,而且一般景区还存在学生优惠等。 "
]
},
{
"cell_type": "code",
"execution_count": 181,
"metadata": {
"ExecuteTime": {
"end_time": "2025-10-15T13:26:43.302916100Z",
"start_time": "2025-10-15T13:26:43.263333700Z"
}
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.13"
},
"toc": {
"base_numbering": 1,
"nav_menu": {
"height": "423px",
"width": "322px"
},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": true,
"toc_position": {
"height": "calc(100% - 180px)",
"left": "10px",
"top": "150px",
"width": "165px"
},
"toc_section_display": true,
"toc_window_display": true
}
},
"nbformat": 4,
"nbformat_minor": 4
}