提问过程
豆包处理过程
过程步骤:
项目背景
在小红书平台上,搜索词反映了用户的兴趣和需求。通过对关键搜索词数据进行可视化分析,能够帮助商家、博主等了解热门话题,把握市场趋势,从而制定更有效的营销策略。
数据获取
假设我们已经从第三方工具或者小红书 API 中获取了一定时间范围内的关键搜索词数据,存储在一个 CSV 文件中,文件名为 xiaohongshu_search_words.csv
,包含两列:search_word
(搜索词)和 search_count
(搜索次数)。
数据处理与可视化分析
xiaohongshu-search-word-analysis小红书关键搜索词数据可视化分析 Python 代码
V1
生成 xiaohongshu_search_word_analysis.py
代码解释
- 数据读取与查看:使用
pandas
库读取 CSV 文件,并查看数据的基本信息和前几行内容。 - 柱状图:找出搜索次数排名前 10 的搜索词,使用
seaborn
库绘制柱状图,直观展示热门搜索词的搜索次数。 - 词云图:将所有搜索词连接成一个字符串,使用
wordcloud
库生成词云图,突出显示热门搜索词。 - 直方图:使用
seaborn
库绘制搜索次数的直方图,展示搜索次数的分布情况。
分析结论
- 热门搜索词:通过柱状图可以直观地看到哪些搜索词是最热门的,商家和博主可以针对这些热门话题创作内容,提高曝光度。
- 搜索词整体趋势:词云图可以帮助我们快速了解搜索词的整体分布情况,发现潜在的热门趋势。
- 搜索次数分布:直方图可以让我们了解搜索次数的集中程度,判断搜索行为的分布特征。
未来展望
- 可以结合时间维度,分析搜索词的热度随时间的变化趋势。
- 与其他平台的数据进行对比分析,找出小红书平台的独特搜索热点。
- 对搜索词进行分类,进一步分析不同类别搜索词的热度和发展趋势。
代码主体:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from wordcloud import WordCloud
import matplotlib.font_manager as fm
# 设置图片清晰度
plt.rcParams['figure.dpi'] = 300
# 设置中文字体
font_path = fm.findfont(fm.FontProperties(family='SimHei'))
plt.rcParams['font.family'] = 'SimHei'
# 读取数据
data = pd.read_csv('xiaohongshu_search_words.csv')
# 查看数据基本信息
print('数据基本信息:')
data.info()
# 查看数据集行数和列数
rows, columns = data.shape
if rows < 100 and columns < 20:
# 短表数据(行数少于100且列数少于20)查看全量数据信息
print('数据全部内容信息:')
print(data.to_csv(sep='\t', na_rep='nan'))
else:
# 长表数据查看数据前几行信息
print('数据前几行内容信息:')
print(data.head().to_csv(sep='\t', na_rep='nan'))
# 绘制搜索次数排名前 10 的搜索词柱状图
top_10 = data.nlargest(10, 'search_count')
plt.figure(figsize=(10, 6))
sns.barplot(x='search_count', y='search_word', data=top_10)
plt.title('搜索次数排名前 10 的搜索词')
plt.xlabel('搜索次数')
plt.xticks(rotation=45)
plt.show()
# 绘制词云图
text = ' '.join(data['search_word'])
wordcloud = WordCloud(font_path=font_path, background_color='white').generate(text)
plt.figure(figsize=(8, 6))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.title('搜索词词云图')
plt.show()
# 查看搜索次数的分布情况
plt.figure(figsize=(10, 6))
sns.histplot(data['search_count'], kde=True)
plt.title('搜索次数分布情况')
plt.xlabel('搜索次数')
plt.ylabel('频数')
plt.show()