14周 2000-2016年期间产量最高五家电影公司出产电影的平均评分

       为更好地提供数据支持的电影制作依据,要求大家以TMDB 5000 Movie Dataset数据集为研究对象,完成以下数据可视化任务:2000-2016年期间产量最高五家电影公司出产电影的平均评分。 
思路分析:
1.提取出年份
2.统计每家公司的电影产量,排序,取出最高的5家公司
3. 算排名最高的那5家公司的电影的 总评分
4.每一家公司的 总评
分/电影总数 = 平均评分 
import pandas as pd
import matplotlib.pyplot as plt 
import matplotlib as mpl
import warnings
warnings.filterwarnings('ignore')

plt.rcParams['font.family']=['simHei']
plt.rcParams['axes.unicode_minus']=False
df = pd.read_excel('第14周课后作业(预处理之后的数据).xlsx')
df.head()

#有个别行数数据处理时不是nan,但为空列表,提取后为nan
df.dropna(inplace=True)
df = df[(2000 <= df['year'])&(df['year'] <= 2016)]
df.reset_index(inplace = True)
df_org_col = df.columns
#查看df_org_col内容
df_org_col
Index(['index', 'Unnamed: 0', 'production_companies', 'title', 'vote_average',
       'year'],
      dtype='object')
#建立companies列表,提取公司名称
companies_set = set()
for company in df['production_companies'].str.split('|'):
    for item in company:
        companies_set.add(item)
companies_list = list(companies_set)

for company in companies_list:
    #判断每行 有这个公司 对应类型的列下添个1
    df[company] = df['production_companies'].str.contains(company).apply(lambda x: 1 if x else 0)

#计算每个公司在2000-2016期间产出电影总数量并排序
companies_count = df.loc[:,companies_list].sum().sort_values(ascending = False,inplace = False)
#查看companies_count内容
companies_count
Universal                                       214
Warner Bros.                                    213
Universal Pictures                              202
Columbia Pictures                               190
Paramount Pictures                              150
                                               ... 
InDigEnt (Independent Digital Entertainment)      0
Parkway Pictures (I)                              0
Silver Bullet Productions (II)                    0
Filmförderungsanstalt (FFA)                       0
Norddeutscher Rundfunk (NDR)                      0
Length: 4220, dtype: int64
df = df.loc[:,df_org_col]
top5_companies = companies_count.index[0:5]
for company in top5_companies:
    for i in range(0,df.shape[0]):
        if company in df.loc[i,'production_companies']:
            df.loc[i,company] = df.loc[i,'vote_average']
df

#计算出平均分
s = round(df.loc[:,top5_companies].mean(),3).sort_values(ascending = False,inplace = False)
s
Warner Bros.          6.295
Universal Pictures    6.194
Universal             6.191
Columbia Pictures     6.066
Paramount Pictures    6.054
dtype: float64
#画图
colors = ['#FF0000','#FF1493','#00BFFF','#9932CC','#0000CD']
#设置大小 像素
plt.figure(figsize=(15,6),dpi=100)
#设置中文显示
mpl.rcParams['font.family'] = 'SimHei'
plt.style.use('ggplot')
#绘制柱形图 设置柱条的宽度和颜色
plt.barh(s.index,s.values,height=0.6,color=colors[::-1])
plt.xlabel('平均评分',fontsize=12)
plt.ylabel('电影公司',fontsize=12,color='red')
for i in range(0,5):
    plt.text(s.values[i]+0.3,s.index[i],
            '{}'.format(s.values[i]),ha='center',fontsize=12)
plt.title('2000-2016年期间产量最高的5家电影公司产出电影的平均评分',fontsize=18,x=0.5,y=1.05)
plt.savefig('14周产量前5公司平均评分.png')
plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值