pandas(二)

作者: 红炉点雪hi | 来源:发表于2017-09-13 15:24 被阅读35次

    pandas重索引

    from pandas import DataFrame
    from pandas import Series
    
    obj = Series([1,2,3,4,5], index=['a','b','c','d','e'])
    print obj
    """
    输出结果为:
    a    1
    b    2
    c    3
    d    4
    e    5
    dtype: int64
    """
    
    obj = obj.reindex(['b','a','c','d','e'])
    print obj
    
    """
    输出结果为:
    b    2
    a    1
    c    3
    d    4
    e    5
    dtype: int64
    """
    

    如果重索引传入的索引号原在原索引中并不存在则引入空值

    obj = obj.reindex(['a','b','c','d','e','f'])
    print obj
    """
    输出结果为:
    a    1.0
    b    2.0
    c    3.0
    d    4.0
    e    5.0
    f    NaN
    dtype: float64
    """
    

    我们可以控制这个引入的值是什么,默认是NaN,可以通过fill_value参数更改

    obj = obj.reindex(['a','b','c','d','e','f','1'], fill_value=0)
    print obj
    """
    输出结果为:
    a    1.0
    b    2.0
    c    3.0
    d    4.0
    e    5.0
    f    NaN
    1    0.0
    dtype: float64
    """
    

    函数应用和映射

    frame = DataFrame(np.random.randn(4,3))
    f = lambda x: x.max() - x.min()
    print frame.apply(f)
    """
    输出结果为:
    0    1.134713
    1    1.048039
    2    2.054689
    dtype: float64
    """
    

    元素级的Python函数也是可以用的。

    frame = DataFrame(np.random(4,3))
    print frame
    """
    输出结果为:
        0   1   2   3   4
    0   0   1   2   3   4
    1   5   6   7   8   9
    2  10  11  12  13  14
    """
    format = lambda x: x+x
    print frame.applymap(format)
    """
    输出结果为:
        0   1   2   3   4
    0   0   2   4   6   8
    1  10  12  14  16  18
    2  20  22  24  26  28
    """
    

    以上这些不只是可以使用lambda表达式,还可以使用def函数

    排序和排名将会是我们比较常用的两种操作

    obj = Series(range(4), index=['d', 'a', 'b', 'c'])
    print obj.sort_index()
    """
    a    1
    b    2
    c    3
    d    0
    dtype: int64
    """
    

    面对DataFrame,则可以根据任意一个轴上的索引进行排序:

    frame = DataFrame(np.arange(8).reshape(2,4), index=['three', 'one'],
                      columns = ['d','a','b','c'])
    print frame.sort_index()
    """
    输出结果为:
           d  a  b  c
    one    4  5  6  7
    three  0  1  2  3
    """
    print frame.sort_index(axis=1)
    """
           a  b  c  d
    three  1  2  3  0
    one    5  6  7  4
    """
    

    数据默认是按升序排序的,但也可以降序排序

    print frame.sort_index(axis=1, ascending=False)
    """
    输出结果为:
           d  c  b  a
    three  0  3  2  1
    one    4  7  6  5
    """
    

    sort_values方法可以对Series进行按值排序

    obj = Series([4,7,5,6,2])
    print obj.sort_values()
    """
    输出结果为:
    4    2
    0    4
    2    5
    3    6
    1    7
    dtype: int64
    """
    

    在DataFrame中你可以指定一列使数据根据这一列进行排序

    obj = DataFrame({'a':[1,2,5,4,3],'b':[2,5,4,6,1]})
    print obj
    print obj.sort_index(by='b')
    '''
    输出结果为:
       a  b
    4  3  1
    0  1  2
    2  5  4
    1  2  5
    3  4  6
    '''
    

    你也可以通过sort_values这种方式根据多个列进行排序

    obj = DataFrame({'a':[1,1,5,4,3],'b':[5,1,4,6,1]})
    print obj.sort_values(by=['a','b'])
    '''
    输出结果为:
       a  b
    1  1  1
    0  1  5
    4  3  1
    3  4  6
    2  5  4
    '''
    

    相关文章

      网友评论

        本文标题:pandas(二)

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