目录
一、案例背景
在过去一段时间里,“淄博烧烤” 成为了全国瞩目的旅游和美食热点。从 2023 年初开始,淄博烧烤凭借其独特的烧烤方式、实惠的价格以及热情好客的氛围迅速走红网络。各地游客纷纷前往淄博打卡品尝烧烤,淄博也借此机会大力发展旅游相关产业,包括提升城市基础设施、加强旅游服务管理等。然而,近期数据显示淄博烧烤的热度出现了消退迹象。旅游平台上关于淄博烧烤的搜索量、预订量下降,社交媒体上相关话题的讨论热度也大不如前。这一现象引起了广泛关注,本案例将运用 Python 对相关数据进行分析,探究淄博烧烤热度消退的原因及影响因素。
二、代码实现
import requests
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from wordcloud import WordCloud
import json
2.1 数据收集
从旅游平台、社交媒体等渠道收集数据。这里以模拟从某旅游平台 API 获取数据为例。
# 模拟从旅游平台 API 获取淄博烧烤相关的搜索量和预订量数据
url = 'https://travel_api.com/zibo_barbecue_data'
headers = {
'Authorization': 'Bearer your_api_token'
}
response = requests.get(url, headers=headers)
data = response.json()
# 提取搜索量和预订量数据
search_book_data = []
for item in data['results']:
entry = {
'date': item['date'],
'search_volume': item['search_volume'],
'booking_volume': item['booking_volume']
}
search_book_df = pd.DataFrame(search_book_data)
# 从社交媒体平台获取关于淄博烧烤话题的讨论数据,假设以 JSON 文件形式存储
with open('social_media_zibo_barbecue.json', 'r', encoding='utf-8') as f:
social_data = json.load(f)
social_df = pd.DataFrame(social_data)
2.2 数据探索性分析
# 查看搜索量和预订量数据基本信息
print(search_book_df.info())
# 查看社交媒体讨论数据前几行
print(social_df.head())
# 统计搜索量和预订量数据的缺失值情况
print(search_book_df.isnull().sum())
# 查看搜索量的描述性统计信息
print(search_book_df['search_volume'].describe())
2.3 数据清洗
# 处理搜索量和预订量数据的缺失值,使用前向填充
search_book_df['search_volume'] = search_book_df['search_volume'].ffill()
search_book_df['booking_volume'] = search_book_df['booking_volume'].ffill()
# 处理社交媒体讨论数据的文本,去除特殊字符和停用词
import re
from nltk.corpus import stopwords
import nltk
nltk.download('stopwords')
stop_words = set(stopwords.words('chinese'))
def clean_text(text):
text = re.sub(r'[^\u4e00-\u9fa5]', '', text)
words = text.split()
filtered_words = [word for word in words if word not in stop_words]
return ' '.join(filtered_words)
social_df['clean_text'] = social_df['text'].apply(clean_text)
2.4 数据分析
2.4.1 搜索量和预订量趋势分析
# 将日期列转换为日期时间类型
search_book_df['date'] = pd.to_datetime(search_book_df['date'])
search_book_df.set_index(&#