美文网首页
电影数据分析

电影数据分析

作者: 洋哥_5446 | 来源:发表于2018-11-22 14:54 被阅读0次

    import json

    import numpy as np

    import pandas as pd

    import matplotlib.pyplot as plt

    import warnings

    warnings.filterwarnings('ignore')  #忽略python运行过程中的警告错误

    credits=pd.read_csv(r'C:\Users\lenovo\Desktop\tmdb\tmdb_5000_credits.csv')

    movies=pd.read_csv(r'C:\Users\lenovo\Desktop\tmdb\tmdb_5000_movies.csv')

    fulldf=pd.concat([credits,movies],axis=1) #合并数据集

    moviesdf=fulldf[['original_title','crew','release_date','genres','keywords','production_companies','production_countries','revenue','budget',

                    'runtime','vote_average']]  #选区子集

    moviesdf['profit']=moviesdf['revenue']-moviesdf['budget']#增加一列利润

    #moviesdf.info()

    #moviesdf[moviesdf['runtime'].isnull()]

    moviesdf['release_date']=moviesdf['release_date'].fillna('2004-6-1')  #填充空值

    moviesdf['release_date']=pd.to_datetime(moviesdf['release_date'],format='%Y-%m-%d') #转时间类型

    moviesdf.fillna(value={'runtime':98.0},inplace=True,limit=1)

    moviesdf.fillna(value={'runtime':81.0},inplace=True,limit=1) #字符串索引必须为整数

    moviesdf['genres']=moviesdf['genres'].apply(json.loads) #把json转为dict, apply默认遍历一行或多行

    def decode(column):

        li=[]

        for i in column:

            li.append(i['name'])

        return ' '.join(li)  #将列表中元素用空格连接起来生成一个新的字符串

    moviesdf['genres']=moviesdf['genres'].apply(decode)

    #提取电影类型

    genres_list=set()  #去重

    for i in moviesdf['genres']:

        for j in i.split(' '):

            genres_list.add(j)

    genres_list.remove('')

    for i in genres_list:

        moviesdf[i]=moviesdf['genres'].str.contains(i).apply(lambda x:1 if x else 0) #将序列转换为字符串

    moviesdf['release_date']=pd.to_datetime(moviesdf['release_date']).dt.year #获取时间中的年

    #moviesdf['release_date'].head()

    genres_list=list(genres_list)

    genres_year=moviesdf.loc[:,genres_list]  #获取所有行,列在genres_list列表的列

    genres_year.index=moviesdf['release_date'] #设置时间为索引

    genres_year=genres_year.groupby(['release_date']).sum() #通过时间分组求和

    genres_sum=genres_year.sum(axis=0).sort_values(ascending=True)  #求出所有电影类型的总和 ,其中sum(axis=0)表示矩阵按列相加

    #可视化(各电影类型的数据量) 条形图

    plt.rcParams['font.sans-serif']=['SimHei']

    plt.figure(figsize=(12,8))

    plt.title('各种电影类型数据量统计图',fontsize=15)

    plt.xlabel('电影数量(部)',fontsize=15)

    plt.ylabel('电影类型',fontsize=15)

    plt.tick_params(labelsize=12) #控制刻度字体大小

    plt.barh(genres_sum.index,genres_sum.values)

    相关文章

      网友评论

          本文标题:电影数据分析

          本文链接:https://www.haomeiwen.com/subject/hxyyfqtx.html