对只包含导演,演员,评分,上映时间,片名,类型和片长的电影数据进行可视化分析,至少十五个代码分析
时间: 2024-05-04 12:22:29 浏览: 73
1. 导入必要的库和数据集
```python
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 读取数据集
movies = pd.read_csv('movies.csv')
```
2. 观察数据集的基本信息
```python
# 查看数据集前5行
movies.head()
# 查看数据集的基本信息
movies.info()
# 查看数据集中是否存在缺失值
movies.isnull().sum()
```
3. 统计电影类型的数量及比例
```python
# 统计每种电影类型的数量
genre_count = movies['类型'].value_counts()
# 将数量转换为百分比
genre_percent = genre_count / sum(genre_count) * 100
# 绘制饼图
plt.pie(genre_percent, labels=genre_percent.index, autopct='%1.1f%%')
plt.title('电影类型比例')
plt.show()
```
4. 统计每年上映电影数量的变化趋势
```python
# 提取上映年份
movies['year'] = movies['上映时间'].apply(lambda x: int(x.split('-')[0]))
# 统计每年上映电影数量
year_count = movies['year'].value_counts().sort_index()
# 绘制折线图
plt.plot(year_count.index, year_count.values)
plt.title('每年上映电影数量变化趋势')
plt.xlabel('年份')
plt.ylabel('电影数量')
plt.show()
```
5. 统计评分的分布情况
```python
# 绘制评分分布直方图
plt.hist(movies['评分'], bins=20)
plt.title('评分分布')
plt.xlabel('评分')
plt.ylabel('电影数量')
plt.show()
# 绘制评分箱线图
sns.boxplot(movies['评分'])
plt.title('评分箱线图')
plt.xlabel('评分')
plt.show()
```
6. 统计电影时长的分布情况
```python
# 绘制电影时长分布直方图
plt.hist(movies['片长'], bins=20)
plt.title('电影时长分布')
plt.xlabel('电影时长(分钟)')
plt.ylabel('电影数量')
plt.show()
# 绘制电影时长箱线图
sns.boxplot(movies['片长'])
plt.title('电影时长箱线图')
plt.xlabel('电影时长(分钟)')
plt.show()
```
7. 统计每个导演执导电影的数量及比例
```python
# 统计每个导演执导电影的数量
director_count = movies['导演'].value_counts()
# 将数量转换为百分比
director_percent = director_count / sum(director_count) * 100
# 绘制柱状图
plt.bar(director_percent.index, director_percent.values)
plt.xticks(rotation=90)
plt.title('导演执导电影数量比例')
plt.xlabel('导演')
plt.ylabel('电影数量(百分比)')
plt.show()
```
8. 统计演员出演电影的数量及比例
```python
# 将演员名字拆分成列表形式
movies['演员'] = movies['演员'].apply(lambda x: x.split('/'))
# 将演员列表扩展成行,并去重
actor_df = movies.explode('演员').drop_duplicates()
# 统计每个演员出演电影的数量
actor_count = actor_df['演员'].value_counts()
# 将数量转换为百分比
actor_percent = actor_count / sum(actor_count) * 100
# 绘制柱状图
plt.bar(actor_percent.index[:20], actor_percent.values[:20])
plt.xticks(rotation=90)
plt.title('演员出演电影数量比例')
plt.xlabel('演员')
plt.ylabel('电影数量(百分比)')
plt.show()
```
9. 统计每种类型电影的平均评分和电影时长
```python
# 将类型列拆分成列表形式
movies['类型'] = movies['类型'].apply(lambda x: x.split('/'))
# 将类型列表扩展成行,并去重
genre_df = movies.explode('类型').drop_duplicates()
# 统计每种类型电影的平均评分和电影时长
genre_stats = genre_df.groupby('类型')['评分', '片长'].mean()
# 绘制堆叠柱状图
genre_stats.plot(kind='bar', stacked=True)
plt.title('每种类型电影的平均评分和电影时长')
plt.xlabel('电影类型')
plt.ylabel('平均值')
plt.show()
```
10. 统计每个导演执导电影的平均评分和电影时长
```python
# 统计每个导演执导电影的平均评分和电影时长
director_stats = movies.groupby('导演')['评分', '片长'].mean().sort_values(by='评分', ascending=False)[:20]
# 绘制堆叠柱状图
director_stats.plot(kind='bar', stacked=True)
plt.xticks(rotation=90)
plt.title('每个导演执导电影的平均评分和电影时长')
plt.xlabel('导演')
plt.ylabel('平均值')
plt.show()
```
11. 统计每种类型电影的平均评分和上映年份
```python
# 统计每种类型电影的平均评分和上映年份
genre_year_stats = genre_df.groupby(['类型', 'year'])['评分'].mean()
# 绘制热力图
sns.heatmap(genre_year_stats.unstack(), cmap='YlGnBu')
plt.title('每种类型电影的平均评分和上映年份')
plt.show()
```
12. 统计每个导演执导电影的平均评分和上映年份
```python
# 统计每个导演执导电影的平均评分和上映年份
director_year_stats = movies.groupby(['导演', 'year'])['评分'].mean()
# 绘制热力图
sns.heatmap(director_year_stats.unstack(), cmap='YlGnBu')
plt.xticks(rotation=90)
plt.title('每个导演执导电影的平均评分和上映年份')
plt.show()
```
13. 统计每种类型电影的平均评分和电影时长的散点图
```python
# 统计每种类型电影的平均评分和电影时长
genre_stats = genre_df.groupby('类型')['评分', '片长'].mean()
# 绘制散点图
plt.scatter(genre_stats['片长'], genre_stats['评分'])
plt.title('每种类型电影的平均评分和电影时长')
plt.xlabel('电影时长(分钟)')
plt.ylabel('平均评分')
plt.show()
```
14. 统计每个导演执导电影的平均评分和电影时长的散点图
```python
# 统计每个导演执导电影的平均评分和电影时长
director_stats = movies.groupby('导演')['评分', '片长'].mean().sort_values(by='评分', ascending=False)[:20]
# 绘制散点图
plt.scatter(director_stats['片长'], director_stats['评分'])
plt.xticks(rotation=90)
plt.title('每个导演执导电影的平均评分和电影时长')
plt.xlabel('电影时长(分钟)')
plt.ylabel('平均评分')
plt.show()
```
15. 统计每个演员出演电影的平均评分和电影时长的散点图
```python
# 统计每个演员出演电影的平均评分和电影时长
actor_stats = actor_df.groupby('演员')['评分', '片长'].mean().sort_values(by='评分', ascending=False)[:20]
# 绘制散点图
plt.scatter(actor_stats['片长'], actor_stats['评分'])
plt.xticks(rotation=90)
plt.title('每个演员出演电影的平均评分和电影时长')
plt.xlabel('电影时长(分钟)')
plt.ylabel('平均评分')
plt.show()
```
阅读全文