9周课后T2 2012-2016年平均评分前十的电影类型

为更好地提供数据支持的电影制作依据,要求大家以TMDB 5000 Movie Dataset数据集为研究对象,完成以下数据可视化任务:2012-2016年平均评分前十的电影类型。

此题与15周课堂小测1、14周作业类似

python 第15周课堂小测 1. 2000-2016年产量前十电影类型的平均利润。-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_73122330/article/details/135129889?spm=1001.2014.3001.550114周 2000-2016年期间产量最高五家电影公司出产电影的平均评分-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_73122330/article/details/135139528?spm=1001.2014.3001.5501

import pandas as pd
import matplotlib.pyplot as plt             # 导入绘图库
import matplotlib as mpl

import warnings
# 忽略警告。pandas很多时候会弹出警告,说某条命令即将在新版本中过期,建议换用新命令。如不想看到警告信息,可用此设置忽略
warnings.filterwarnings('ignore') 
# 读取数据
df = pd.read_excel('预处理后的数据1.xlsx')
df.dropna(inplace=True)
#筛选出2012年到2016年且平均评分大于0的数据  预处理时已完成
df = df[(df['year'] >= 2012)&(df['year'] <= 2016)&df['vote_average'] > 0]
df.reset_index(inplace=True)

#df数据内容显示

# 建立genres列表,提取电影的类型
genres_set = set()
for genre in df['genres'].str.split('|'):
    for item in genre:
        genres_set.add(item)


genres_list = list(genres_set)
genresdf = pd.DataFrame({'genre':[],'average_score':[]})
for genre in genres_list:
    score = 0;n = 0;average_score = 0
    for i in range(0,df.shape[0]):
        if genre in df.loc[i,'genres']:
            score = score + float(df.loc[i,'vote_average'])
            n = n + 1
    average_score = round(score/n,2)
    genresdf = pd.concat([genresdf,pd.DataFrame({'genre':[genre],'average_score':[average_score]})],
                        ignore_index = True)
    print(genre,n)
genresdf.sort_values(by = 'average_score',ascending=False,inplace=True)
genresdf.reset_index(inplace=True)
#genresdf.to_excel('各类型电影平均分_1.xlsx')

#genre 每个电影类型对应的数量

History 34
TV Movie 4
War 20
Foreign 1
Documentary 27
Western 13
Science Fiction 114
Fantasy 79
Thriller 265
Horror 127
Action 235
Crime 123
Comedy 285
Family 86
Mystery 53
Animation 61
Romance 120
Adventure 156
Drama 417
Music 36
colors = ['#FF0000','#ff1493','#00BFFF','#9932CC','#0000CD','#FFD700','#FF4500','#00FA9A',
          '#191970','#006400']
#设置大小 像素
plt.figure(figsize=(12,8),dpi=100)
#设置中文显示
mpl.rcParams['font.family'] = 'SimHei'
plt.style.use('ggplot')
#绘制柱形图 设置柱条的宽度和颜色
plt.barh(genresdf['genre'][9::-1],genresdf['average_score'][9::-1],height=0.6,color=colors[::-1])
plt.xlabel('平均评分',fontsize=12)
plt.ylabel('电影类型',fontsize=12,color='red')

for i in reversed(range(0,10)):
    plt.text(genresdf.loc[i,'average_score']+0.2,genresdf.loc[i,'genre'],
            '{}'.format(genresdf.loc[i,'average_score']),ha='center',fontsize=12)
    
plt.title('2012-2016年平均评分最高的电影类型Top10',fontsize=18,x=0.5,y=1.05)
plt.savefig('9周课后T2_2012-2016平均评分前十电影类型.png')
plt.show()

 #图像效果显示

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值