对豆瓣电影top250可视化分析及代码实现
时间: 2023-08-30 19:12:38 浏览: 191
好的,以下是对豆瓣电影top250进行可视化分析和代码实现的步骤:
1. 数据获取
首先,需要通过爬虫或者API等方式获取豆瓣电影top250的数据。这里我使用了Python中的requests和BeautifulSoup库来获取数据。具体代码如下:
```python
import requests
from bs4 import BeautifulSoup
url = 'https://movie.douban.com/top250'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
```
2. 数据清洗和整理
获取到数据后,需要进行数据清洗和整理,以便后续的可视化分析。这里我使用了Pandas库来进行数据清洗和整理。具体代码如下:
```python
import pandas as pd
movies = soup.select('.item')
data = []
for movie in movies:
# 提取电影名称、评分、评价人数、导演、主演、年份和类型
name = movie.select_one('.title').text.strip()
score = float(movie.select_one('.rating_num').text)
comments = int(movie.select_one('.star span').text[:-3])
info = movie.select_one('.bd p').text.split('\n')
director = info[1].strip().replace('导演: ', '')
actors = info[2].strip().replace('主演: ', '')
year = info[3].strip().split('/')[0]
genres = info[3].strip().split('/')[1:]
# 将提取到的数据添加到data列表中
data.append({'电影名称': name, '评分': score, '评价人数': comments, '导演': director, '主演': actors, '年份': year, '类型': genres})
# 将data转换为DataFrame格式
df = pd.DataFrame(data)
```
3. 可视化分析
最后,使用Matplotlib和Seaborn等库对数据进行可视化分析。这里我展示了三种可视化方案:条形图、散点图和热力图。具体代码如下:
```python
import matplotlib.pyplot as plt
import seaborn as sns
# 条形图
df = df.sort_values('评分', ascending=False)
plt.figure(figsize=(12, 8))
sns.barplot(x='评分', y='电影名称', data=df, palette='Blues_d')
plt.title('豆瓣电影Top250评分排名', fontsize=16)
plt.xlabel('评分', fontsize=12)
plt.ylabel('电影名称', fontsize=12)
plt.show()
# 散点图
plt.figure(figsize=(12, 8))
sns.scatterplot(x='评价人数', y='评分', data=df, hue='类型', size='年份', sizes=(50, 200))
plt.title('豆瓣电影Top250评分和评价人数关系', fontsize=16)
plt.xlabel('评价人数', fontsize=12)
plt.ylabel('评分', fontsize=12)
plt.show()
# 热力图
df['年份'] = df['年份'].astype(int)
df = df[df['年份'] >= 1990]
pivot = pd.pivot_table(df, index='年份', columns='评分', values='电影名称', aggfunc='count')
plt.figure(figsize=(12, 8))
sns.heatmap(pivot, cmap='YlGnBu')
plt.title('豆瓣电影Top250评分和年份关系', fontsize=16)
plt.xlabel('评分', fontsize=12)
plt.ylabel('年份', fontsize=12)
plt.show()
```
以上就是对豆瓣电影top250进行可视化分析和代码实现的详细步骤。
阅读全文