• Pandas综合案例


    现在我们有一组从2006年到2016年1000部最流行的电影数据
    数据来源:https://www.kaggle.com/damianpanek/sunday-eda/data

    • 问题1:我们想知道这些电影数据中评分的平均分,导演的人数等信息,我们应该怎么获取?
    • 问题2:对于这一组电影数据,如果我们想rating,runtime的分布情况,应该如何呈现数据?
    • 问题3:对于这一组电影数据,如果我们希望统计电影分类(genre)的情况,应该如何处理数据?

    运行结果



    import matplotlib.pyplot as plt
    import numpy as np
    import pandas as pd
    from pylab import mpl
    # 设置显示中文字体
    mpl.rcParams["font.sans-serif"] = ["SimHei"]
    
    # 问题1:我们想知道这些电影数据中评分的平均分,导演的人数等信息,我们应该怎么获取?
    movie = pd.read_csv("../data/IMDB-Movie-Data.csv")
    # 平均分
    pjf = movie["Rating"].mean()
    print('电影评分的平均分:')
    print(pjf)
    # 导演的人数去重
    # df["Director"].unique().shape[0]
    num = np.unique(movie["Director"]).shape[0]
    print('导演人数:')
    print(num)
    
    
    # 问题2:对于这一组电影数据,如果我们想rating,runtime的分布情况,应该如何呈现数据?
    movie["Rating"].plot(kind='hist', figsize=(20, 8))
    plt.figure(figsize=(20, 8), dpi=80)
    plt.hist(movie["Rating"].values, bins=20)
    # 求出最大最小值
    max_ = movie["Rating"].max()
    min_ = movie["Rating"].min()
    # 生成刻度列表
    t1 = np.linspace(min_, max_, num=21)
    # [ 1.9    2.255  2.61   2.965  3.32   3.675  4.03   4.385  4.74   5.095  5.45   5.805  6.16   6.515  6.87   7.225  7.58   7.935  8.29   8.645  9.   ]
    # 修改刻度
    plt.xticks(t1)
    # 添加网格
    plt.grid()
    plt.savefig("../img/pandas_case_1.png")
    plt.show()
    
    
    plt.figure(figsize=(20,8),dpi=80)
    plt.hist(movie["Runtime (Minutes)"].values, bins=20)
    # 求出最大最小值
    max_ = movie["Runtime (Minutes)"].max()
    min_ = movie["Runtime (Minutes)"].min()
    #  生成刻度列表
    t1 = np.linspace(min_, max_, num=21)
    # 修改刻度
    plt.xticks(np.linspace(min_,max_,num=21))
    # 添加网格
    plt.grid()
    plt.savefig("../img/pandas_case_2.png")
    plt.show()
    
    
    # 问题3:对于这一组电影数据,如果我们希望统计电影分类(genre)的情况,应该如何处理数据?
    # 1、创建一个全为0的dataframe,列索引置为电影的分类,temp_df
    # 进行字符串分割
    temp_list = [i.split(",") for i in movie["Genre"]]
    # 获取电影的分类
    genre_list = np.unique([i for j in temp_list for i in j])
    
    # 增加新的列
    temp_df = pd.DataFrame(np.zeros([movie.shape[0], genre_list.shape[0]]), columns=genre_list)
    # 2、遍历每一部电影,temp_df中把分类出现的列的值置为1
    for i in range(1000):
        #temp_list[i] ['Action','Adventure','Animation']
        temp_df.ix[i, temp_list[i]] = 1
    print(temp_df.sum().sort_values())
    # 3、求和,绘图
    sum = temp_df.sum().sort_values(ascending=False).plot(kind="bar", figsize=(20, 8), fontsize=20, colormap="cool")
    sum.plot()
    plt.savefig("../img/pandas_case_3.png")
    plt.show()
    
    
  • 相关阅读:
    changing a pointer rather than erasing memory cells
    验证码识别 edge enhancement 轮廓增强 region finding 区域查找
    Manipulating Data Structures
    passing parameters by value is inefficient when the parameters represent large blocks of data
    Aliasing 走样
    Artificial Intelligence Research Methodologies 人工智能研究方法
    Thread safety
    include pointers as a primitive data type
    flat file
    functional cohesion
  • 原文地址:https://www.cnblogs.com/yeyueweiliang/p/14300263.html
Copyright © 2020-2023  润新知