豆瓣电影飞驰人生数据分析python
时间: 2025-07-04 08:52:11 浏览: 1
### 数据分析流程概述
使用 Python 对豆瓣电影《飞驰人生》进行数据分析,需要完成以下核心任务:数据爬取、数据清洗、情感分析和结果可视化。以下是详细的实现方法。
---
#### 1. 数据爬取
通过 Scrapy 框架爬取豆瓣电影《飞驰人生》的评论数据。首先定义 `items.py` 文件中的字段以存储所需数据,例如评论内容、评分、用户名等。代码示例如下:
```python
import scrapy
class DoubanMovieItem(scrapy.Item):
user_name = scrapy.Field() # 用户名
rating = scrapy.Field() # 用户评分
comment = scrapy.Field() # 评论内容
timestamp = scrapy.Field() # 评论时间
```
接着在爬虫文件中编写规则以提取评论数据。可以参考以下代码片段:
```python
import scrapy
from ..items import DoubanMovieItem
class DoubanSpider(scrapy.Spider):
name = "douban_movie"
allowed_domains = ["movie.douban.com"]
start_urls = ["https://movie.douban.com/subject/30294335/comments"] # 假设这是《飞驰人生》的评论页面
def parse(self, response):
items = DoubanMovieItem()
comments = response.css("div.comment-item") # 提取评论块
for comment in comments:
items['user_name'] = comment.css("span.comment-info a::text").get() # 用户名
items['rating'] = comment.css("span.rating::attr(title)").get() # 评分
items['comment'] = comment.css("span.short::text").get() # 短评内容
items['timestamp'] = comment.css("span.comment-time::text").get().strip() # 评论时间
yield items
```
上述代码实现了对豆瓣电影评论页面的爬取[^1]。
---
#### 2. 数据清洗
从爬虫获取的数据可能包含噪声或不完整信息,因此需要对其进行清洗。以下是一些常见的清洗步骤:
- **去除空值**:删除没有评论内容或评分的记录。
- **统一格式**:将时间戳转换为标准日期格式。
- **去重**:确保每条评论唯一。
示例代码如下:
```python
import pandas as pd
# 加载数据
data = pd.read_csv("douban_comments.csv")
# 数据清洗
data.dropna(subset=['comment', 'rating'], inplace=True) # 删除空值
data['timestamp'] = pd.to_datetime(data['timestamp']) # 格式化时间
data.drop_duplicates(subset=['comment'], inplace=True) # 去重
# 保存清洗后的数据
data.to_csv("cleaned_douban_comments.csv", index=False)
```
---
#### 3. 情感分析
对评论内容进行情感分析,判断每条评论的情感倾向(正面、负面或中性)。可以使用中文情感分析工具如 SnowNLP 或者基于机器学习模型(如 SVM)进行分析。
以下是使用 SnowNLP 的示例代码:
```python
from snownlp import SnowNLP
def analyze_sentiment(comment):
s = SnowNLP(comment)
return s.sentiments # 返回情感分数(0 表示负面,1 表示正面)
# 应用情感分析
data['sentiment_score'] = data['comment'].apply(analyze_sentiment)
# 分类情感
data['sentiment_label'] = data['sentiment_score'].apply(lambda x: 'positive' if x > 0.6 else ('negative' if x < 0.4 else 'neutral'))
```
---
#### 4. 结果可视化
通过可视化展示数据分析结果,常用的图表包括柱状图、饼图和词云图。以下是一个绘制情感分布饼图的示例:
```python
import matplotlib.pyplot as plt
# 统计情感分布
sentiment_counts = data['sentiment_label'].value_counts()
# 绘制饼图
plt.figure(figsize=(8, 6))
plt.pie(sentiment_counts, labels=sentiment_counts.index, autopct='%1.1f%%', startangle=90)
plt.title("Sentiment Distribution of Comments")
plt.show()
```
---
#### 5. 进一步扩展
如果需要更深入的分析,可以结合用户评分数据构建情感词典,并利用支持向量机(SVM)模型对影评进行自动标注和分类[^2]。
---
### 注意事项
- 爬取数据时需遵守目标网站的 `robots.txt` 文件规定,避免违反相关法律或网站政策。
- 数据清洗过程中应特别注意异常值和缺失值的处理。
- 情感分析模型的选择取决于具体需求和数据质量。
---
阅读全文
相关推荐
















