豆瓣短评大数据分析:探索用户观影趋势与情感倾向
在本文中,我们将结合Python编程和大数据分析的技术,对豆瓣短评数据进行探索性分析,以洞察用户的地域分布、评分偏好以及对影片的情感倾向。
1. 评论者IP属地分布分析
我们首先利用Python的Pandas库加载豆瓣短评数据,并统计不同IP属地的评论数量。接下来,我们使用Matplotlib库绘制饼图,展示前十个IP属地的评论数量占比。
import pandas as pd import matplotlib.pyplot as plt # 加载豆瓣短评数据 data = pd.read_csv('豆瓣短评.csv') # 统计不同IP属地的评论数量 ip_counts = data['评论者IP属地'].value_counts() # 选择前10个IP属地进行绘制 top_10_ip = ip_counts.head(10) # 绘制饼图 plt.figure(figsize=(8, 8)) plt.rcParams['font.family'] = 'Arial Unicode MS' plt.pie(top_10_ip, labels=top_10_ip.index, autopct='%1.1f%%', startangle=140) plt.title('评论者IP属地分布(前10)') plt.axis('equal') plt.show() import pandas as pd import matplotlib.pyplot as plt # 加载CSV文件数据到DataFrame data = pd.read_csv('豆瓣短评.csv') # 统计不同IP属地的评论数量 ip_counts = data['评论者IP属地'].value_counts() # 选择前10个IP属地进行绘制,如果数据量大可能需要筛选合适的数据进行可视化 top_10_ip = ip_counts.head(10) # 绘制饼图 plt.figure(figsize=(8, 8)) plt.rcParams['font.family'] = 'Arial Unicode MS' plt.pie(top_10_ip, labels=top_10_ip.index, autopct='%1.1f%%', startangle=140) plt.title('评论者IP属地分布(前10)') plt.axis('equal') plt.show()
2. 评分分布分析
我们利用MapReduce技术对豆瓣短评数据进行评分分布的统计。首先,我们编写Mapper函数和Reducer函数,然后对短评数据执行Map和Reduce操作,最终得到各个评分的评论数量统计并保存为CSV文件。
import csv from collections import defaultdict # Mapper函数 def mapper(record): rating = record[2] # 假设评分在第三列 return [(rating, 1)] # Reducer函数 def reducer(ratings): rating_count = defaultdict(int) for rating, count in ratings: rating_count[rating] += count return rating_count # 执行Map和Reduce操作 def main(): file_path = '豆瓣短评_35556001_前30页.csv' with open(file_path, newline='', encoding='utf-8') as csvfile: reader = csv.reader(csvfile) next(reader) # 跳过标题行 mapped = [item for row in reader for item in mapper(row)] # 执行Reduce操作 result = reducer(mapped) # 将结果保存为CSV文件 with open('rating_distribution.csv', 'w', newline='', encoding='utf-8') as csvfile: fieldnames = ['Rating', 'Count'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() for rating, count in result.items(): writer.writerow({'Rating': rating, 'Count': count}) if __name__ == "__main__": main()
3. 评论文本词云可视化
最后,我们利用词云技术对豆瓣短评中的评论文本进行可视化。通过对评论文本的词频统计,生成词云图展示了用户在评论中提及频率较高的关键词。
from wordcloud import WordCloud import matplotlib.pyplot as plt # 读取文本文件中的数据 file_path = '/Users/shareit/PycharmProjects/movie_ana/move_get/word_freq_top_10.txt' # 替换为你的文件路径 with open(file_path, 'r', encoding='utf-8') as file: data = file.read() # 解析数据为关键词和频次的字典 keywords_dict = {} for line in data.split('\n'): parts = line.split(': ') if len(parts) == 2: keyword, frequency = parts keywords_dict[keyword] = int(frequency) # 生成词云 wordcloud = WordCloud(font_path='/System/Library/Fonts/Supplemental/Arial Unicode.ttf', background_color='white').generate_from_frequencies(keywords_dict) # 显示词云图 plt.figure(figsize=(8, 6)) plt.imshow(wordcloud, interpolation='bilinear') plt.axis('off') # 隐藏坐标轴 plt.title('Word Cloud') # 标题 plt.show()