zoukankan      html  css  js  c++  java
  • 第十章、jupyter入门之pandas

    第十章、jupyter入门之pandas

    一、什么是pandas

    • pandas是基于numpy的一种工具,这个工具是为了解决数据分析任务而创建的
    • pandas纳入利润大量库及标准的数据类型,提供了高效的操作的大型的数据集所需要的工具
    • pandas提供了大量能使我们快捷的处理数据的函数与方法
    • 它是python成为强大而高效的数据分析环境的重要因素之一

    导入

    # 三剑客
    import numpy
    import pandas
    from pandas import Series,DataFrame
    

    二、Series

    Series是一种类似于一组的对象
    * values:一组数据(ndarrary)
    *index:相关的数据索引标签 
    
    1. 创建

      • 由列表或numpy数组创建

        s1 = Series([1,2,3,4])
        >>> 0    1
            1    2
            2    3
            3    4
          dtype: int64
        s1 = np.array([1,2,3,4])
        >>> array([1, 2, 3, 4])
        

        注意:由ndarray创建的是引用,不是副本,对Series元素的改变也会原来的ndarrary改变对象的元素(列表没有这种情况)

      • 由字典创建

        dic = {
          'name':'dancer',
          'age':19,
          'address':'hangzhou'
        }
        s3 = Series(data=dic)
        
    2. 索引和切片

      1. 索引和切片
        loc为显示切片(通过键),iloc为隐式切片(通过索引)

      访问单个元素

      s[indexname]
      s.loc[indexname] 推荐
      s[loc]
      s.iloc[loc] 推荐
      

      访问多个元素

      s[[indexname1,indexname2]]
      
      s.loc[[indexname1,indexname2]] 推荐
      
      s[[loc1,loc2]]
      
      s.iloc[[loc1,loc2]] 推荐
      
      

    三、基本概念

    可以把Series看成一个定长的有序字典

    可以通过shape(维度),size(长度),index(键),values(值)等得到series的属性

    4.基本运算
    运算的原则就是索引对齐,如果缺失索引,对应位置补np.nan
    NaN 是np.nan在pandas中的显示形式
    可以使用pd.isnull(),pd.notnull(),或自带isnull(),notnull()函数检测缺失数据
    可以使用isnull和any结合,来查看某一列或一行数据中是否存在缺失值

    四、基本运算

    运算的原则就是索引对齐,如果缺失索引,对应位置补np.nan
    NaN 是np.nan在pandas中的显示形式
    可以使用pd.isnull(),pd.notnull(),或自带isnull(),notnull()函数检测缺失数据
    可以使用isnull和any结合,来查看某一列或一行数据中是否存在缺失值

    # 需求:提取s3对象中的所有非空数据
    s3[s3.notnull()]
    # 提取空值的索引
    s3[s3.isnull()].index
    # Sereis,对象可以使用一个与该对象等长的bool_list列表作为index访问数组元素
    # 碰到True,就把对应位置的值返回
    s3[[True,False,True,True,True,False]]
    # name属性为Series对象添加列索引
    s3.name = 'haha'
    

    pandas会自动处理空值

    add()
    sub()
    mul()
    div()
    

    Series之间的运算

    • 在运算中自动对齐不同索引的数据

    • 如果索引不对应,则补NaN

    • # fill_value设置空值的填充值
      s1.add(s2,fill_value=0)
      

    五、DataFrame

    DataFrame是一个【表格型】的数据结构,可以看做是【由Series组成的字典】(共用同一个索引)。DataFrame由按一定顺序排列的多列数据组成。设计初衷是将Series的使用场景从一维拓展到多维。DataFrame既有行索引,也有列索引。

    行索引:index
    列索引:columns
    值:values(numpy的二维数组)
    
    1. 创建
      最常用的方法是传递一个字典来创建。DataFrame以字典的键作为每一【列】的名称,以字典的值(一个数组)作为每一列。
    dic = {
        '张三':[150,150,150,300],
        '李四':[0,0,0,0]
    }
    DataFrame(data=dic,index=['语文','数学','英语','理综'])
    

    也可以用下面代码实现创建

    data = [[0,150],[0,150],[0,150],[0,300]]
    index = ['语文','数学','英语','理综']
    columns = ['李四','张三']
    df = DataFrame(data=data,index=index,columns=columns)
    >>>
    >>>李四  张三
    >>>语文  0   150
    >>>数学  0   150
    >>>英语  0   150
    >>>理综  0   300
    >>>
    >>>
    

    此外,DataFrame会自动加上每一行的索引(和Series一样)。

    同Series一样,若传入的列与字典的键不匹配,则相应的值为NaN。

    1. 索引
      (1) 对列进行索引
    • 通过类似字典的方式

    • 通过属性的方式

      可以将DataFrame的列获取为一个Series。返回的Series拥有原DataFrame相同的索引,且name属性也已经设置好了,就是相应的列名。

    (2) 对行进行索引

    • 使用.ix[]来进行行索引

    • 使用.loc[]加index来进行行索引

    • 使用.iloc[]加整数来进行行索引

      同样返回一个Series,index为原来的columns。

    (3) 对元素索引的方法

    • 使用列索引
    • 使用行索引(iloc[3,1]相当于两个参数;iloc[[3,3]] 里面的[3,3]看做一个参数)
    • 使用values属性(二维numpy数组)
      索引行
    df.loc[indexname] 推荐
    df.iloc[loc]
    

    索引列

    df[columnname] 推荐
    df.columnname
    

    索引元素

    df.loc[indexname].loc[columnname]
    df[columnname].loc[indexname]
    df.loc[indexname,columnname] 推荐
    
  • 相关阅读:
    史上最全最新java面试题合集二(附答案)
    史上最全最新Java面试题合集一(附答案)
    修改vsftpd的默认根目录/var/ftp/pub到其他目录
    重置密码解决MySQL for Linux错误:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
    虚拟机下的Linux连接校园网上网问题
    CentOS7 安装Chrome
    CentOS7 卸载Firefox
    100个写作高级词
    【二叉搜索树】的详细实现(C++)
    【红黑树】的详细实现(C++)
  • 原文地址:https://www.cnblogs.com/demiao/p/11397389.html
Copyright © 2011-2022 走看看