zoukankan      html  css  js  c++  java
  • 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()
    
    
  • 相关阅读:
    关于 platform的文章
    S3C2440驱动篇—Linux平台设备驱动
    class_create(),class_device_create()或device_create()自动创建设备文件结点
    耳机接线图
    GNOME图形界面
    ssh登录过程中 出现 unsupport gssapiauthentication及pscp传输文件出现 ssh_init: Network error: Cannot assign requested address错误
    du和df 的使用及区别
    bash中的set指令使用说明
    qemuimg dd使用
    linux lvm卷的总结,在proxmox 5下测试验证
  • 原文地址:https://www.cnblogs.com/yeyueweiliang/p/14300263.html
Copyright © 2011-2022 走看看