python 第15周课堂小测 1. 2000-2016年产量前十电影类型的平均利润。

第15周课堂小测 1. 2000-2016年产量前十电影类型的平均利润。

import pandas as pd 
import matplotlib.pyplot as plt 
plt.rcParams['font.family']=['simHei']
plt.rcParams['axes.unicode_minus']=False
plt.style.use('ggplot')
df = pd.read_excel('第15周课堂作业(预处理之后的数据).xlsx')
df.head()

df.dropna(inplace=True)
df = df[(2000 <= df['year'])&(df['year'] <= 2016)]
df.reset_index(inplace=True)
#计算出利润 = 收入 - 预算
df['profit'] = df['revenue'] - df['budget']
#建立genres列表,提取电影的类型
genres_set = set()
for genre in df['genres']:
    for item in genre.split('|'):
        genres_set.add(item)
        
genres_list = list(genres_set)

for genre in genres_list:
    #判断每行 有这个类型 对应类型的列下添个1,加在原df的基础上
    df[genre] = df['genres'].str.contains(genre).apply(lambda x:1 if x else 0)

genre_year = df.loc[:,genres_list]
s0 = genre_year.sum().sort_values(ascending = False,inplace = False)
df.drop(genres_list,axis = 1,inplace = True)
n = []
for i in range(0,df.shape[0]):
    n.append(len(df.loc[i,'genres'].split('|')))
#s0.index[0:10]为产量前10的电影类型
for genre in s0.index[0:10]:
    for i in range(0,df.shape[0]):
        if genre in df.loc[i,'genres']:
            df.loc[i,genre] = df.loc[i,'profit']/n[i]   
genre_top10 = df.loc[:,s0.index[0:10]]
s = round(genre_top10.mean()/10000,2).sort_values(ascending = True,inplace = False)
#画图
plt.figure(figsize=(15,6),dpi=100)
plt.barh(s.index,s.values)
plt.xlabel('平均利润(万元)',fontsize=12)
plt.ylabel('电影题材',fontsize=12)
for i in range(0,10):
    plt.text(s.values[i] + 150,s.index[i],
            '{}'.format(s.values[i]),ha = 'center',fontsize = 12)
plt.title('2000-2016年产量前十电影类型的平均利润',fontsize=18,x=0.5,y=1.05)
plt.savefig('产量前十电影类型的平均利润.png')
plt.show()

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值