美文网首页
Pandas常用功能

Pandas常用功能

作者: 学人工智能的菜菜 | 来源:发表于2020-04-13 23:35 被阅读0次

    Pandas重新索引 reindex

    import pandas as pd
    from pandas import Series,DataFrame
    import numpy as np
    
    obj = Series([1.2,5.6,9.8,-1.5],index=['a','b','c','d'])
    print(obj)
    obj_1 = obj.reindex(['a','b','c','d','e','f'])
    #如果索引的值多于原来的,则默认该索引的值为NaN
    print(obj_1)
    #如果不想为空值,可以设置成自己想设置的值
    obj_2 = obj.reindex(['a','b','c','d','e','f'],fill_value = 'aaa')
    print(obj_2)
    out:
    a    1.2
    b    5.6
    c    9.8
    d   -1.5
    dtype: float64
    a    1.2
    b    5.6
    c    9.8
    d   -1.5
    e    NaN
    f    NaN
    dtype: float64
    a    1.2
    b    5.6
    c    9.8
    d   -1.5
    e    aaa
    f    aaa
    dtype: object
    
    # reindex方法有很多参数
    #下面看看向前后填充
    obj = pd.Series([4.5,9.8,-1.2],index = [0,2,4])
    obj_1 = obj.reindex(np.arange(6),method='ffill')#bfill 向后填充
    print(obj_1)
    obj_2 = obj.reindex(np.arange(6),method='bfill')#bfill 向后填充
    print(obj_2)
    out:
    0    4.5
    1    4.5
    2    9.8
    3    9.8
    4   -1.2
    5   -1.2
    dtype: float64
    0    4.5
    1    9.8
    2    9.8
    3   -1.2
    4   -1.2
    5    NaN
    dtype: float64
    

    算数运算和数据对齐

    pandas的一个重要功能,就是可以对不同索引的对象进行算数运算,再将对象相加时,如果不存在的索引对,则结果的索引就是该索引的并集
    d1 = Series([1.2,5.6,9.8,-1.5],index=['a','b','c','d'])
    d2 = Series([-3,-7,-6.9,-1.9,3.3],index=['a','b','c','d','e'])
    d1+d2
    #有相同索引的值直接进行相加,没有的并集后值为空值5
    out:
    a   -1.8
    b   -1.4
    c    2.9
    d   -3.4
    e    NaN
    dtype: float64
    
    #### 再看一个多维的并集
    df1 = DataFrame(np.arange(9).reshape(3,3),columns=list('abc'),index = [1,2,3])
    df1
    out:
        a   b   c
    1   0   1   2
    2   3   4   5
    3   6   7   8
    
    df2 = DataFrame(np.arange(12).reshape(4,3),columns=list('cde'),index = [1,2,3,4])
    df2
    out:
        c   d   e
    1   0   1   2
    2   3   4   5
    3   6   7   8
    4   9   10  11
    
    #可以看出,如果直接相加,则只是把相同列和行的加起来,行列时并集,但是值是求交集,其实不是很好
    df1+df2
    a   b   c   d   e
    1   NaN NaN 2.0 NaN NaN
    2   NaN NaN 8.0 NaN NaN
    3   NaN NaN 14.0    NaN NaN
    4   NaN NaN NaN NaN NaN
    
    df1.add(df2,fill_value=11111)#用1111来填充不重叠的值,注意,如果本身位置为空,那么还是空的。好像只是针对列而言的
    
    a   b   c   d   e
    1   11111.0 11112.0 2.0 11112.0 11113.0
    2   11114.0 11115.0 8.0 11115.0 11116.0
    3   11117.0 11118.0 14.0    11118.0 11119.0
    4   NaN NaN 11120.0 11121.0 11122.0
    

    dataframe和series之间的运算

    frame = DataFrame(np.arange(12).reshape(4,3),columns = list('bde'),index = [1,2,3,4])
    print(frame)
    series = frame.loc[1]
    print(series)
    out:
     b   d   e
    1  0   1   2
    2  3   4   5
    3  6   7   8
    4  9  10  11
    b    0
    d    1
    e    2
    Name: 1, dtype: int32
    
    #相减
    frame-series #一直向下广播相减
    out:
    b   d   e
    1   0   0   0
    2   3   3   3
    3   6   6   6
    4   9   9   9
    
    #相加
    series = Series(range(3),index =list('def'))
    frame+series #相加时,没有就合并
    out:
    b   d   e   f
    1   NaN 1.0 3.0 NaN
    2   NaN 4.0 6.0 NaN
    3   NaN 7.0 9.0 NaN
    4   NaN 10.0    12.0    NaN
    

    排序

    根据条件对数据集进行排序
    obj = Series(range(4),index =list('cdab'))
    print(obj)
    out:
    c    0
    d    1
    a    2
    b    3
    dtype: int32
    
    obj.sort_index() #根据index进行排序
    out:
    a    2
    b    3
    c    0
    d    1
    dtype: int32
    
    obj.sort_values() #根据value值进行排序
    out:
    c    0
    d    1
    a    2
    b    3
    dtype: int32
    

    针对dataframe,根据任意一个轴上的索引进行排序

    frame = DataFrame(np.arange(8).reshape(2,4),index = ['two','one'],columns =list('fedc'))
    print(frame)
    out:
      f  e  d  c
    two  0  1  2  3
    one  4  5  6  7
    
    frame.sort_index()#默认的是行排序,axis=0
    out:
        f   e   d   c
    one 4   5   6   7
    two 0   1   2   3
    
    #如果想要指定列,则需要指定axis的值为1
    frame.sort_index(axis=1) #这就叫做指定轴来排序
    out:
    c   d   e   f
    two 3   2   1   0
    one 7   6   5   4
    
    frame = DataFrame({'a':[1,2,3,4],'b':[4,5,6,7]})
    print(frame) #多维的字典组成key就是列属性,如果是一维的则是行属性
    out:
    a  b
    0  1  4
    1  2  5
    2  3  6
    3  4  7
    

    相关文章

      网友评论

          本文标题:Pandas常用功能

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