基于Python的携程网重庆市旅游景点数据可视化分析

0 阅读11分钟

基于Python的携程网重庆市旅游景点数据可视化分析

一、项目背景

重庆,这座被誉为"山城"、"雾都"的城市,以其独特的地形地貌、丰富的旅游资源和深厚的文化底蕴,近年来成为国内炙手可热的旅游目的地。从洪崖洞的璀璨夜景到武隆天生三桥的壮丽奇观,重庆的旅游资源呈现出多元化、高品质的特点。

本项目通过爬取携程网重庆市旅游景点数据,运用Python数据分析技术,从空间分布价格体系标签特征口碑评价四个维度,深入挖掘重庆旅游资源的分布规律与特征,为游客出行规划、景区运营管理提供数据支撑。

二、数据来源与预处理

2.1 数据来源

数据来源于携程网重庆市旅游景点页面,包含以下完整字段

字段名称说明
标题景点名称
等级景区等级(5A/4A等)
碑榜景点上榜情况(如"重庆夜游必打卡景点榜 No.7"等)
标签景点特色标签(如"遛娃宝藏地"、"自然山水"等)
热度景点热度评分
评分游客评分
评论数总评论数
好评数好评数量
消费后评价数消费后评价数量
差评数差评数量
地址大区域地址(如"解放碑/洪崖洞")
详细地址景点具体位置
距离距市中心距离
门票门票价格信息
开放时间景区开放时间
官方电话景区联系电话
封面图片链接景点封面图片URL
详情链接景点详情页URL
相关图片链接(轮播图的4个)轮播图图片链接列表
更多内容景点详细介绍、优待政策、服务设施等

2.2 数据预处理关键技术

(1)行政区提取

由于原始数据中地址格式不统一,需要通过正则表达式从详细地址中提取行政区信息:

def extract_district(addr):
    if pd.isna(addr):
        return '未知'
    addr_str = str(addr)
    pattern = r'重庆市([^市]+?(?:区|县|新区))'
    match = re.search(pattern, addr_str)
    if match:
        district = match.group(1).strip()
        if '两江新区' in district:
            return '两江新区'
        return district
    return '未知'

(2)门票价格提取

门票字段包含文本描述,需提取数值价格:

def extract_price(price_str):
    if pd.isna(price_str):
        return None
    match = re.search(r'门票\s*([\d.]+)元', str(price_str))
    if match:
        return float(match.group(1))
    return None

(3)等级分类判断

def is_5a(grade):
    if pd.isna(grade):
        return False
    return '5A' in str(grade)

(4)好评率计算

df['好评率'] = df.apply(lambda x: x['好评数'] / x['评论数'] if x['评论数'] > 0 else np.nan, axis=1)

三、各行政区景点分布分析

3.1 可视化实现

本模块采用matplotlib绑定三个子图,从不同角度展示景点分布特征:

fig, axes = plt.subplots(1, 3, figsize=(18, 6))

# 图1:景点数量占比饼图
axes[0].pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)
axes[0].set_title('各行政区景点数量占比(前5名)')

# 图2:热度≥7景点数量条形图
axes[1].bar(x, y, color='skyblue')
axes[1].set_title('各行政区热度≥7的景点数量')

# 图3:5A与4A景点堆叠条形图
axes[2].bar(x, y_5a, width, label='5A', color='gold')
axes[2].bar(x, y_4a, width, bottom=y_5a, label='4A', color='lightcoral')

📸 请在此处插入截图:运行第一个代码块生成的三合一图表(饼图+条形图+堆叠条形图)

4fd4678911eb0774817670091ee91bcc.png

3.2 分析结果解读

(1)景点数量空间分布

从饼图可以看出:

  • "未知"行政区占比最高(约63.0%),这主要是因为部分景点地址信息不完整或未能成功提取具体区县
  • 在已知行政区中,渝中区(约5.0%)两江新区(约3.7%)、**武隆区(约2.6%)**位列前三

解读:渝中区作为重庆母城,集中了洪崖洞、解放碑、长江索道等核心地标,景点密度高;武隆区则拥有天生三桥、仙女山等世界级自然景观。

(2)高热度景点分布

热度≥7分的景点数量与景点总量呈正相关:

  • 渝中区、武隆区、两江新区领先
  • 渝中区的高热度景点多集中在网红打卡地
  • 武隆区以自然风光类景点获得高评价
(3)高等级景区分布
等级主要分布区域特点
5A武隆区、大足区、奉节县、南川区世界级自然与文化遗产
4A渝中区、沙坪坝区、南岸区人文、城市景观为主

关键发现:武隆区同时拥有多个5A和4A景区,是重庆高等级景区的核心集聚区;渝中区虽无5A景区,但凭借密集的4A景点和超高热度,依然是重庆旅游的绝对中心。


四、门票价格与热度、等级关系分析

4.1 可视化实现

本模块采用散点图+箱线图的组合,揭示价格与热度、等级的关系:

from scipy import stats

# 散点图 + 线性回归趋势线
slope, intercept, r_value, p_value, std_err = stats.linregress(x, y)
line_x = np.array([x.min(), x.max()])
line_y = intercept + slope * line_x
ax1.plot(line_x, line_y, color='red', linestyle='--', 
         label=f'趋势线 (r={r_value:.2f})')

# 箱线图
bp = ax2.boxplot(data_box, labels=['5A', '4A', '其他'], patch_artist=True)
colors = ['gold', 'lightcoral', 'lightgreen']
for patch, color in zip(bp['boxes'], colors):
    patch.set_facecolor(color)

📸 请在此处插入截图:运行第二个代码块生成的双图(散点图+箱线图)

eda27da3ae873d34ece2390b66cd39fe.png

4.2 分析结果解读

(1)价格与热度的关系
指标数值含义
相关系数 r0.06几乎无相关性

核心发现

  • 价格与热度之间几乎不存在线性相关性
  • 无论价格高低(数十元至两百元),热度值均广泛分布在6.5~8.5之间
  • 游客对景区的热度评价不受价格高低的显著影响

业务启示:价格并非决定热度的主要因素,景区的特色、服务质量、品牌效应等软实力可能更为关键。

(2)不同等级景区的价格分层
等级中位数价格价格区间特点
5A130~150元较宽,部分超200元顶级景区定价能力强
4A80~100元相对集中中高端定位
其他40~60元离散程度小低价为主

核心发现:景区等级对门票价格具有明显的分层效应——等级越高,价格普遍越高。


五、景点标签与行政区词云分析

5.1 可视化实现

本模块使用WordCloud库生成词云图,直观展示景点标签和行政区分布:

from wordcloud import WordCloud

# 生成标签词云
wordcloud_tags = WordCloud(
    width=600, height=500,
    background_color='white',
    font_path='C:/Windows/Fonts/simhei.ttf',
    collocations=False
).generate(tags_text)

# 生成行政区词云
wordcloud_district = WordCloud(
    width=600, height=500,
    background_color='white',
    font_path='C:/Windows/Fonts/simhei.ttf',
    collocations=False
).generate_from_frequencies(district_counts)

# 并排显示
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16, 8))
ax1.imshow(wordcloud_tags, interpolation='bilinear')
ax1.set_title('景点标签词云', fontsize=14)
ax2.imshow(wordcloud_district, interpolation='bilinear')
ax2.set_title('行政区词云', fontsize=14)

📸 请在此处插入截图:运行第三个代码块生成的词云双图(标签词云+行政区词云)

700c7d3d69b50bd053caae0b88b3eb01.png

5.2 分析结果解读

(1)景点标签词云分析

核心标签(字体最大)

标签含义代表景点
夜游观景重庆夜景经济核心吸引力洪崖洞、两江游、南山一棵树
遛娃宝藏地亲子游市场需求庞大动物园、欢乐谷、海洋世界
自然山水重庆旅游的"绿色底色"武隆天生三桥、仙女山、金佛山
历史建筑人文景点重要地位磁器口、湖广会馆、大足石刻

次要标签

  • 城市漫步登高爬山:体现重庆"山城"特色
  • 博物馆&展馆公园&植物园古镇古村:文化科普、休闲游憩需求
  • 主题乐园水上乐园演唱会:现代娱乐业态

总结:重庆旅游呈现 "夜间经济 + 亲子游 + 山水观光 + 历史人文" 四轮驱动的特色。

(2)行政区词云分析

字体最大的区域

  • 渝中区:重庆母城和核心商圈,景区密度全市第一
  • 武隆区:世界级自然遗产,远郊旅游标杆

次大字体区域

  • 两江新区沙坪坝区:现代文旅项目+红色文化古镇
  • 南岸区九龙坡区巴南区:休闲度假资源丰富
  • 北碚区万州区奉节县:区域旅游集散中心

总结:重庆景点呈现 "主城核心集聚 + 远郊精品散布" 的格局。


六、评论数与好评率关系分析

6.1 可视化实现

本模块采用散点图+气泡图的组合,分析评论活跃度与口碑质量的关系:

# 图1:评论数 vs 好评率 散点图
ax1.scatter(x, y, alpha=0.5, s=20, c='steelblue')
ax1.set_xscale('log')  # 对数刻度

# 添加趋势线
slope, intercept, r_value, p_value, std_err = stats.linregress(
    valid['log_comments'], valid['好评率']*100)
ax1.plot(10**x_line, y_line, 'r--', label=f'趋势线 (r={r_value:.2f})')

# 图2:各行政区气泡图
sizes = stats['景点数'] * 30  # 气泡大小映射景点数量
scatter = ax2.scatter(stats['平均评论数'], stats['平均热度'], 
                      s=sizes, c=colors, alpha=0.7, cmap='viridis')
ax2.set_xscale('log')

📸 请在此处插入截图:运行第四个代码块生成的双图(散点图+气泡图)

0da5ae2c5c078858dc0cea305552695d.png

6.2 分析结果解读

(1)评论数与好评率的关系

主要行政区表现

行政区平均评论数平均好评率特点
江北区约100万级别约35%高热度、口碑分化
渝中区约100万级别约30%高热度、低好评矛盾
沙坪坝区次高约25%类似趋势
九龙坡区、南岸区10万级别20%~15%中位水平
云阳县、开州区1万以下10%以下低评论、低好评

总体趋势

  • 呈现 "高评论数对应低好评率,低评论数对应更低好评率" 的近似趋势
  • 高评论数区域因游客基数大,评价样本丰富,容易出现两极分化
  • 低评论数区域因样本量小,好评率易受少数评价影响而波动
(2)各行政区评论活跃度与热度关系

气泡图解读

  • 气泡大小代表景点数量
  • 横轴为平均评论数(对数刻度),反映讨论活跃度
  • 纵轴为平均热度,反映景点受欢迎程度

核心发现

  • 渝中区、江北区等核心区域评论活跃度最高
  • 武隆区等远郊区域热度高但评论数相对较低
  • 部分新兴区域评论数和热度均较低,需加强推广

七、综合结论与建议

7.1 空间格局总结

重庆旅游景点呈现 "主城核心集聚 + 远郊精品散布" 的空间格局:

┌─────────────────────────────────────────────────┐
│  主城九区(渝中、沙坪坝、南岸、江北等)          │
│  → 人文、城市休闲类景点为主                      │
│  → 数量多、热度高、评论活跃                      │
├─────────────────────────────────────────────────┤
│  远郊区县(武隆、大足、奉节、南川等)            │
│  → 自然山水、世界遗产类景点为主                  │
│  → 等级高、单价高、口碑好                        │
└─────────────────────────────────────────────────┘

7.2 产品特征总结

重庆旅游呈现 "夜间经济 + 亲子游 + 山水观光 + 历史人文" 四轮驱动的特色:

维度特征代表资源
夜间经济核心吸引力洪崖洞、两江游、南山一棵树
亲子游市场需求大动物园、欢乐谷、海洋世界
山水观光绿色底色武隆天生三桥、仙女山、金佛山
历史人文文化底蕴磁器口、大足石刻、人民大礼堂

7.3 运营建议

对于景区运营方

  1. 提升等级是提高定价上限的有效途径
  2. 需同步优化服务和特色,才能将高价格转化为高热度
  3. 不能单纯依靠价格策略提升热度
  4. 可利用"碑榜"、"标签"等信息进行精准营销
  5. 关注差评原因,针对性改进服务质量

对于游客

  1. 高热度景区并非一定昂贵
  2. 部分4A或无等级景区也能提供高性价比的优质体验
  3. 可根据"标签"和"开放时间"灵活安排行程
  4. 关注评论数与好评率,理性选择景点

7.4 数据质量改进建议

"未知"行政区占比较高(63%),建议:

  1. 优化地址提取正则表达式
  2. 引入地理编码API进行地址解析
  3. 建立地址标准化清洗流程

八、技术栈总结

类别技术/库
数据处理pandas, numpy
可视化matplotlib
词云生成wordcloud
统计分析scipy.stats
文本处理re(正则表达式)
开发环境Jupyter Notebook