• pandas库


          pandas是基于NumPy数组构建的,特别是基于数组的函数和不使用for循环的数据处理。虽然pandas采用了大量的NumPy编码风格,但二者最大的不同是pandas是专门为处理表格和混杂数据设计的。而NumPy更适合处理统一的数值数组数据。

        要使用pandas,你首先就得熟悉它的两个主要数据结构:Series和DataFrame。虽然它们并不能解决所有问题,但它们为大多数应用提供了一种可靠的、易于使用的基础。

    一、Series

        Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据即可产生最简单的Series:

    import pandas as pd
    obj = pd.Series([7,-2,3,4])
    print(obj)
    

    索引  值

      0    7
      1   -2
      2    3
      3    4

    Series默认索引是0至N-1,也可以指定索引值,方法如下:

    obj2 = pd.Series([4, 7, -5, 3], index=['d', 'b', 'a', 'c'])
    

    如果数据被存放在一个Python字典中,也可以直接通过这个字典来创建Series:

    sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
    obj3 = pd.Series(sdata)

    通过Series 的values和index属性获取其数组表示形式和索引对象:

    print(obj.values)
    print(obj.index)
    

    可以通过索引的方式选取Series中的单个或一组值:

    obj2['a']
    obj2[['c', 'a', 'd']]
    

    还可以将Series看成是一个定长的有序字典,因为它是索引值到数据值的一个映射.

    我将使用缺失(missing)或NA表示缺失数据。pandas的isnull和notnull函数可用于检测缺失数据:

    print(pd.isnull(obj))
    print(pd.notnull(obj))
    

     Series也有类似的实例方法:

    obj4.isnull()
    

    Series最重要的一个功能是,它会根据运算的索引标签自动对齐数据,可以认为是类似数据库的join的操作。

    Series对象本身及其索引都有一个name属性,该属性跟pandas其他的关键功能关系非常密切。

     obj4.name = 'population'
    
     obj4.index.name = 'state'
    

    Series的索引可以通过赋值的方式就地修改:

    obj.index = ['Bob', 'Steve', 'Jeff', 'Ryan']
    

    二、DataFrame

           DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)。DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或别的一维数据结构)。

          (1)建DataFrame的办法有很多,最常用的一种是直接传入一个由等长列表或NumPy数组组成的字典:

    #传入字典
    data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'], 
    'year': [2000, 2001, 2002, 2001, 2002, 2003],
    'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
    frame = pd.DataFrame(data)
     
    #传入数组
    frame2 = pd.DataFrame(np.range(18).reshape(3,6), 
    columns=['year', 'state', 'pop', 'debt'],
    index=['one', 'two', 'three', 'four','five', 'six'])#如果传入的列在数据中找不到,就会在结果中产生缺失值:
    
    #嵌套字典创建DataFrame
     pop = {'Nevada': {2001: 2.4, 2002: 2.9}, 'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}
     frame3 = pd.DataFrame(pop)#外层字典的键作为列,内层键则作为行索引。

    参数:

        cloumns:指定列名,并按列名顺序排列。

        index:指定索引 

        dtype:指定数据类型 

    常用函数总结:

     frame.head()#选取前五行

     frame.T#转置

       frame.index.name = 'year'#设置index的name属性

     frame.columns.name = 'state'#设置columns的name属性

     frame.values#选取DataFrame的值,结果为二维数组。

    选取DataFrame数据:

    #两种方式选取state列数据
    frame2['state']
    frame2.state
    frame2['debt'] = 16.5#列可以通过赋值的方式进行修改。
    
    #行数据选取
    frame2.loc['three']
    

      将列表或数组赋值给某个列时,其长度必须跟DataFrame的长度相匹配。如果赋值的是一个Series,就会精确匹配DataFrame的索引,所有的空位都将被填上缺失值。

    val = pd.Series([-1.2, -1.5, -1.7], index=['two', 'four', 'five'])
    frame2['debt'] = val
    print(frame2)
    
    #为不存在的列赋值会创建出一个新列。关键字del用于删除列。
    frame2['eastern'] = frame2.state == 'Ohio'
    del frame2['eastern']
  • 相关阅读:
    多测师杭州拱墅校区肖sir_高级金牌讲师_项目讲解讲解和注意方式
    多测师杭州拱墅校区肖sir_高级金牌讲师_redis(参考)
    多测师杭州拱墅校区肖sir_高级金牌讲师_测试环境搭建问题
    【ArangoDb踩坑】新增Edge类型数据,from和to为document的_id
    firmware file rtl_bt/rtl8761b_fw.bin not found
    非递归前序遍历
    ELK & EFK
    边缘计算 controller提供的功能
    oran code go through
    hugepages configure
  • 原文地址:https://www.cnblogs.com/yuhou/p/11206212.html
Copyright © 2020-2023  润新知