项目背景:
客户是一个电影制作的新公司,他们将制作一部新电影。客户想确保电影能够成功,从而使新公司立足市场。
提出问题:
- 电影类型是如何随着时间的推移发生变化的?
- Universal Pictures 和 Paramount Pictures
之间的对比情况如何? - 改编电影和原创电影的对比情况如何?
- 电影页面查看次数与评分次数的相关关系?
理解数据:
数据来源
数据来源于Kaggle项目数据
TMDB 5000 Movie Dataset
导入数据
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
moviesDf = pd.read_csv("../input/tmdb_5000_movies.csv")
creditsDf = pd.read_csv("../input/tmdb_5000_credits.csv")
moviesDf.head(2)
creditsDf.head()
观察得知,movies中的id列和credits中的movie_id列呈对应关系,因此链接合并两个数据集。
fullDf = pd.merge(moviesDf,creditsDf,right_on='movie_id',left_on='id',how='left')
fullDf.head(2)
查看数据集的行列数,描述统计信息,缺失情况,各列数据类型
# fullDf.shape //查看数据集行列数
# fullDf.describe() //描述统计情况,查看最小值,异常值
fullDf.info() //查看缺失值情况,以及各列的数据类型
经观察,budget、vote_count、 vote_average、revenue最小值为0,列中可能有异常值;homepage、overview、release_date、runtime、tagline列均有数据缺失
数据清洗
数据预处理
- 选择子集
选择需要进行分析的数据列作为数据子集 - 列名重命名
fullDf = fullDf[['id','popularity','budget','revenue','original_language','spoken_languages','cast','crew','title_x','status','keywords','runtime','genres','production_companies','release_date','vote_count','vote_average']]
titleDict={'title_x':'title'}
fullDf.rename(columns=titleDict,inplace=True)
- 缺失数据处理
fullDf.loc[fullDf["release_date"].isnull(),'title']
fullDf['release_date'] = fullDf['release_date'].fillna('2014-06-01') #查询到空白数据的实际上映时间
fullDf['runtime'] = fullDf['runtime'].fillna(fullDf['runtime'].mean()) #均值填充
- 数据类型转换
将json格式的字符串转换为python格式的字符串
在这里遇到了很多问题,如json.load()和json.loads()的区别
json