本文使用 Python 爬取豆瓣电影分类排行榜前 10 个分类的数据,分析每个分类前 20 部电影的平均分、最高分和最低分,并使用柱状图可视化呈现结果。

爬取数据

可以使用 Python 的爬虫库,如 requests 和 BeautifulSoup,通过访问豆瓣电影分类排行榜页面,获取页面 HTML 代码,然后通过 BeautifulSoup 解析 HTML 获取分类名称和电影评分数据。

分析

对每个分类的前 20 部电影,计算它们的平均分、最高分和最低分。

可视化

使用 matplotlib 库生成柱状图,x 轴是分类名称,y 轴是评分,每个分类对应 3 个柱子,分别表示平均分、最高分和最低分。

代码示例

import requests
from bs4 import BeautifulSoup
import matplotlib.pyplot as plt

# 访问豆瓣电影分类排行榜页面
url = 'https://movie.douban.com/chart'
response = requests.get(url)

# 解析 HTML 获取分类名称和电影评分数据
soup = BeautifulSoup(response.text, 'html.parser')
categories = soup.find_all('div', class_='types')[0].find_all('span')
category_names = [category.text for category in categories][:10]
category_ratings = []

for category in soup.find_all('div', class_='indent')[1:11]:
    ratings = []
    for movie in category.find_all('div', class_='pl2'):
        movie_url = movie.a['href']
        movie_response = requests.get(movie_url)
        movie_soup = BeautifulSoup(movie_response.text, 'html.parser')
        rating = float(movie_soup.find('strong', class_='ll rating_num').text)
        ratings.append(rating)
    category_ratings.append(ratings[:20])

# 计算每个分类的平均分、最高分、最低分
category_stats = []
for ratings in category_ratings:
    avg_rating = sum(ratings) / len(ratings)
    max_rating = max(ratings)
    min_rating = min(ratings)
    category_stats.append((avg_rating, max_rating, min_rating))

# 生成柱状图
plt.figure(figsize=(10, 6))
plt.bar(range(len(category_names)), [stat[0] for stat in category_stats], align='center')
plt.xticks(range(len(category_names)), category_names, rotation=45)
plt.xlabel('Category')
plt.ylabel('Rating')
plt.title('Top 10 Movie Categories on Douban')
plt.show()

在这个示例代码中,我们首先访问豆瓣电影分类排行榜页面,然后使用 BeautifulSoup 解析 HTML 获取分类名称和电影评分数据。我们使用了前 10 个分类,即排行榜上显示的前 10 个分类,并且仅选择了每个分类的前 20 部电影进行统计。

对于每个分类,我们计算了其平均分、最高分和最低分,并将结果存储在一个元组中。最后,我们使用 matplotlib 库生成了柱状图,其中 x 轴是分类名称,y 轴是评分,每个分类对应 3 个柱子,分别表示平均分、最高分和最低分。

豆瓣电影分类排行榜前10名:评分数据分析与可视化

原文地址: http://www.cveoy.top/t/topic/oldX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录