• 大小: 6.03MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-24
  • 语言: 其他
  • 标签: kaggle  movie  

资源简介

TMDB电影数据分析,包括Kaggle上的原始数据集,以及代码,实现电影类型和票房,利润等的关系,对比两个公司的电影类型收入,拍摄集中年份,画出饼图,条形图,折线图,并进行关键词的提取,做出词云图。

资源截图

代码片段和文件信息

import pandas as pd
import numpy as np
import json
#可视化包
import matplotlib.pyplot as plt
import matplotlib
#加载词云图
from wordcloud import WordCloud
#更改字体
plt.rcParams[‘font.sans-serif‘] = [‘SimHei‘]

#读取演员列表信息和电影列表信息数据
credits = pd.read_csv(‘tmdb_5000_credits.csv‘encoding=‘utf-8‘)
movies = pd.read_csv(‘tmdb_5000_movies.csv‘encoding=‘utf-8‘)

json_cols = [‘cast‘‘crew‘]
#json
#编码:把python对象编码转换json字符串   json.dumps
#解码:把json字符串转换成python对象   json.loads
for i in json_cols:
    credits[i] = credits[i].apply(json.loads)
#用json方法汇总所有类型
def get_name(x):
    return ‘‘.join([i[‘name‘] for i in x])

# cast 提取演员

credits[‘cast‘] = credits[‘cast‘].apply(get_name)
# crew 提取导演
def director(x):
    for i in x:
        if i[‘job‘] ==‘Director‘:
            return i[‘name‘]
credits[‘crew‘] = credits[‘crew‘].apply(director)
# print(credits.head())

#将‘crew‘转换为’directo‘
credits.rename(columns = {‘crew‘:‘director‘}inplace=True)
# print(credits.head())

#movies 解析
json_colss = [‘genres‘‘keywords‘‘spoken_languages‘‘production_countries‘‘production_companies‘]
for i in json_colss:
    movies[i]=movies[i].apply(json.loads)

def get_names(x):
    return ‘‘.join([i[‘name‘] for i in x])

movies[‘genres‘]=movies[‘genres‘].apply(get_names)
movies[‘keywords‘]=movies[‘keywords‘].apply(get_names)
movies[‘spoken_languages‘]=movies[‘spoken_languages‘].apply(get_names)
movies[‘production_countries‘]=movies[‘production_countries‘].apply(get_names)
movies[‘production_companies‘]=movies[‘production_companies‘].apply(get_names)

# print((credits[‘title‘]==movies[‘title‘]).describe())

del movies[‘title‘]
#合并两张表
df = credits.merge(right=movieshow=‘inner‘left_on=‘movie_id‘right_on=‘id‘)
# print(df.head())
del df[‘id‘]
del df[‘homepage‘]
del df[‘original_title‘]
del df[‘tagline‘]
df[‘release_date‘]=df[‘release_date‘].fillna(‘2014-06-01‘)#填充缺失值
df[‘runtime‘]=df[‘runtime‘].fillna(df.runtime.mean())#填充平均值
df[df[[‘release_date‘‘runtime‘]].isnull().values==True]
#获取电影类型
df[‘genres‘][1].split(‘‘)

genre = set()#建立一个集合,会去重
for i in df[‘genres‘].str.split(‘‘):
    genre = set().union(igenre)

genre = list(genre)
genre.remove(‘‘)
# print (genre)

#转化日期格式
df[‘release_year‘] = pd.to_datetime(df.release_date format= ‘%Y-%m-%d‘).dt.year
df[‘release_month‘] = pd.to_datetime(df.release_date format=‘%Y-%m-%d‘).dt.month
#判断每部电影属于什么类型,返回1
for genr in genre:
    df[genr] = df[‘genres‘].str.contains(genr).apply(lambda x:1 if x else 0)
        #str.contains 字符串包含

df_gy = df.loc[:genre]
# print(df_gy)

#建立包含电影类型和年份的数据框
# print(df_gy.index)
df_gy.index = df[‘release_year‘]
# print(df_gy.head())
# df_gy.groupby(‘release_year‘).count().Adventure.plot(figsize=(126))
# plt.xticks(range(191520185))
# plt.title(‘电影数量的年度趋势图‘ fontsize = 20)
# plt.xlabel(‘年份‘fontsize = 20)
# plt.ylabel(‘数量‘fontsize = 20)
# plt.show()

df_gy1 = df_gy.sort_index(ascending= False)#sort_index 索引排序,默认升序False 为降序。
# pri

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       8010  2018-12-20 10:58  kaggle电影分析\test.py

     文件   40044293  2017-09-28 09:09  kaggle电影分析\tmdb_5000_credits.csv

     文件    5698602  2017-09-28 09:09  kaggle电影分析\tmdb_5000_movies.csv

     目录          0  2018-12-20 11:02  kaggle电影分析

----------- ---------  ---------- -----  ----

             45750905                    4


评论

共有 条评论