对电影题材分析的案例-电影类型与电影利润之间的关系(2021/07/24)

该博客介绍了如何处理电影题材数据,以分析其与电影利润之间的关系。通过读取电影元数据,对每个电影的多种题材进行拆分,并为每种题材创建单独的记录,每个记录包含对应的利润信息。然后,使用数据可视化展示各题材电影的数量和总利润,帮助理解不同题材的盈利能力。
摘要由CSDN通过智能技术生成

如题,分析内容是电影题材和电影利润之间的关系。

其中电影题材的数据格式比较特殊,那么就用这个案例体现怎么处理此类数据格式。

从数据中看,每个电影对应好几种题材(genres)。

那么,我们的大概思路是,将数据处理成(一个电影对应)一个题材,对应一个利润。

话不多说我们先放代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

#读取数据
df = pd.read_csv('movie_metadata.csv',
                 usecols=[0,1,2,3,4,5,6,7,8,9,10,11,13,15,27])
data = df.dropna(how='any')

#处理数据
genres_data = pd.DataFrame(columns=['genres','gross'])
for i,row_data in data.iterrows():
    genres = row_data['genres'].split('|')
    n_geners = len(genres)
    dict_obj={}
    dict_obj['genres'] = genres
    dict_obj['gross'] = [row_data['gross']] * n_geners
    genres_df = pd.DataFrame(dict_obj)
    genres_data = genres_data.append(genres_df)
# genres_data.to_csv('genres_data.csv',index=None)
genres_data

#绘制图片1
genres_count = genres_data.groupby('genres').size()
plt.figure(figsize=(15.0,10.0))
genres_count.plot(kind='barh')
plt.savefig('genres_count.png')
plt.show()
#绘制图片2
genres_gross = genres_data.groupby('genres')['gross'].sum()
plt.figure(figsize=(15.0,10.0))
genres_gross.plot(kind='barh')
plt.savefig('genres_gross.png')
plt.show()

 其中处理数据的部分是特点。

1.新建一个空白的df用于存放结果,我们对于结果的设计如下图:

每一行的标识可以理解为 movie1+genres1,movie1+genres2.......movieN+genresN

genres_data = pd.DataFrame(columns=['genres','gross'])

 

 一开始对迭代器不太了解,可以通过下面一段代码测试查看迭代器取数的结果。

for i,row_data in data.iterrows():
    print(i)
    print(row_data)
    print('*'*20)

打印出来的row_data我理解上是一个series。

取出每行的genres,用split()拆分

for i,row_data in data.iterrows():
    genres = row_data['genres']
    print(genres)

拆分后

for i,row_data in data.iterrows():
    genres = row_data['genres'].split('|')
    print(genres)

 

准备新建一个空字典,后期通过字典将数据转换成dataframe,再将dataframe拼接就可以。 字典的预期效果如图

字典中‘gross’的数据

for i,row_data in data.iterrows():
    genres = row_data['genres'].split('|')
    n_genres = len(genres)
    dict_obj={}
    dict_obj['gross']=[row_data['gross']]*n_genres
    print(dict_obj['gross'])
    # print([row_data['gross']])

 用将字典转换成一个个的dataframe。

for i,row_data in data.iterrows():
    genres = row_data['genres'].split('|')
    n_genres = len(genres)
    dict_obj={}
    dict_obj['gross']=[row_data['gross']]*n_genres
    dict_obj['genres']=genres
    genres_df=pd.DataFrame(dict_obj)
    print(genres_df)

最终画出来的图的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值