美文网首页数据分析
数据分析——实战|IMDB-Movie分析案例

数据分析——实战|IMDB-Movie分析案例

作者: python与数据分析 | 来源:发表于2020-07-31 21:56 被阅读0次

    一、项目背景

    本数据报告以IMDB-Movie为数据集,通过相关的指标对电影进行分析,具体指标包括:电影时长和评分分布,评分平均数,导演人数,演员人数等,本例主要围绕pandas在实际中的应用为主(字符串离散化、数据合并、数据分组聚合,数据索引)。

    二、数据来源

    链接:https://pan.baidu.com/s/1P6MF3JEMJdC1I-sg5bCsAw
    提取码:enz7

    三、提出问题

    1.电影时长分布

    2.评分分布

    3.评分平均数

    4.导演人数

    5.演员人数

    四、理解数据

    # coding:utf-8
    import numpy as np
    import pandas as pd
    from matplotlib import pyplot as plt
    pd.set_option('display.max_columns', None)
    pd.set_option('display.max_rows', None)
    file_path = r'.\IMDB-Movie-Data.csv'
    df = pd.read_csv(file_path)
    # 查看数据
    df.head(5)
    
    df.info()
    
    image.png

    五、电影时长分布

    # 查看电影时长
    runtime_data = df["Runtime (Minutes)"]
    # 创建画布
    plt.figure(figsize=(20,8),dpi=80)
    
    # 最大值 最小值
    max_ = runtime_data.max()
    min_ = runtime_data.min()
    num_bin = (max_-min_)//5
    num_bin
    
    # 绘制图像
    plt.hist(runtime_data,num_bin)
    # 添加刻度
    plt.xticks(range(min_,max_+5,5))
    # 添加网格
    plt.grid()
    plt.show()
    
    image.png

    六 、评分分布

    # 1.创建画布
    plt.figure(figsize=(20, 8), dpi=100)
    
    # 2.绘制图像
    plt.hist(df["Rating"].values, bins=20)
    
    # 2.1 添加刻度
    max_ = df["Rating"].max()
    min_ = df["Rating"].min()
    
    t1 = np.linspace(min_, max_, num=21)
    
    plt.xticks(t1)
    
    # 2.2 添加网格
    plt.grid()
    
    # 3.显示
    plt.show()
    
    image.png

    七、评分平均数、导演人数、演员人数

    # 查看评分平均数
    df["Rating"].mean()
    # 查看导演人数
    np.unique(df["Director"]).shape[0]
    len(set(df["Director"].tolist()))
    # 查看演员人数
    num = df["Actors"].str.split(',').tolist()
    actor_nums = [j for i in num for j in i]
    len(set(actor_nums))
    

    结果再次不显示了

    八、统计电影分类情况

    一部电影多个分类,要统计电影分类情况

    df["Genre"]
    
    image.png
    思路:取每一个分类名为列名,行填充为0,当属于分类时,替换成1,如下:
    image.png
    # 统计分类的列表
    temp_list = df["Genre"].str.split(',').tolist()
    temp_list = [j for i in temp_list for j in i]
    genre_list = list(set(temp_list))
    # 构造全为0的数组
    zeros_df = pd.DataFrame(np.zeros((df.shape[0],len(genre_list))),columns=genre_list)
    zeros_df
    
    image.png
    # 给每个电影出现的分类的位置赋值1
    for i in range(df.shape[0]):
        zeros_df.loc[i,temp_lists[i]] = 1
    zeros_df.head(5)
    
    image.png
    # 每个分类电影的和
    new_zeros = zeros_df.sum(axis=0)
    new_zeros 
    
    image.png
    # 每个分类电影的和
    new_zeros = zeros_df.sum(axis=0)
    # 排序 画图
    genre_count = new_zeros.sort_values(ascending=False)
    x_ = genre_count.index
    y_ = genre_count.values
    plt.figure(figsize=(20,8),dpi=80)
    plt.bar(range(len(x_)),y_,width=0.4,color="orange")
    plt.xticks(range(len(x_)),x_)
    plt.show()
    
    image.png

    总结

    image.png

    参考链接:https://mp.weixin.qq.com/s?__biz=MzIyNTg3ODM0Ng==&mid=2247483699&idx=1&sn=67826b5afdfb7cc7d924601edf6a6acb&chksm=e8784916df0fc000769969be83de5f4268f9e49657495b93f417d9b714393c08aeb38eb61925&token=498825246&lang=zh_CN&scene=21#wechat_redirect

    相关文章

      网友评论

        本文标题:数据分析——实战|IMDB-Movie分析案例

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