美文网首页Python可以做的那些事!码农的世界程序员
利用Python进行数据分析(六)之pandas基本功能续

利用Python进行数据分析(六)之pandas基本功能续

作者: BrainZou | 来源:发表于2017-12-23 21:00 被阅读28次

    排序和排名

    按索引排序

    obj.sort_index() frame.sort_index()
    DataFrame也可以指明具体的哪个轴frame.sort_index(axis=1)则为按照columns索引排序。

    
    In[170]:obj.sort_index()
    0ut[170]:
    a  1
    b  2
    c  3
    d  0
    
    import numpy as np
    from pandas import Series,DataFrame
    In[171]:frame=DataFrame(np.arange(8).reshape((2,4)),index=['three','one'],columns=['d','a','b','c'])
    #0-7 2行四列 还记得把~
    In [172]:frame.sort_index()        In[173]:frame.sort_index(axis=1)
          d  a  b  c                                            a  b  c  d
    one   4  5  6  7                                     three  1  2  3  0
    three 0  1  2  3                                     one    5  6  7  4
    

    默认为升序,降序则添加参数ascending=False

    按值排序

    缺失值默认放末尾。
    obj.sort_values()
    (作者写的是obj.order()但是最新的pandas已经没有使用了)
    frame.sort_values(by=['a','b'])
    (同样作者写的是frame.sort_index(by=['a','b'])但是最新的pandas已经没有使用了,并且会提示你使用sort_values())

    frame=DataFrame({'b':[4,7,-3,2],'a':[0,1,0,1]})
        a   b
    0   0   4
    1   1   7
    2   0   -3
    3   1   2
    
    frame.sort_values(by=['a','b'])
        a   b
    2   0   -3
    0   0   4
    3   1   2
    1   1   7
    

    排名

    顾名思义 排名嘛,按照值的出现顺序从1开始排名,有相同的时取平均数比如45相同则4.5,678相同则均为7这样的形式。

    In [183]:obj=Series([7,-5,7,4,2,0,4,7])
    In [184]:obj.rank()
    0ut[184]:
    0    7.0
    1    1.0
    2    7.0
    3    4.5
    4    3.0
    5    2.0
    6    4.5
    7    7.0
    dtype: float64
    

    当然,你可能排名的时候只是想显示12345连续的,相同的时候按照他的出现顺序,则可以使用method='first'。可选min,max即分别为相同值的最小顺序或者最大顺序,'average'默认:在相等分组中,为各个值分配平均排名。

    In [185]:obj.rank(method='first')
    out[185]:
    0    6.0
    1    1.0
    2    7.0
    3    4.0
    4    3.0
    5    2.0
    6    5.0
    7    8.0
    dtype: float64
    

    降序只要添加参数ascending=False。

    带有重复值的轴索引

    什么意思呢,就是具有相同的索引,这个也是允许存在的,

    obj=Series(range(5),index=['a','a','b','b','c'])
    #查看索引是否唯一
    obj.index.is_unique
    out:False
    #取值对应多个时,返回一个Series
    obj['a']
    out:a    0
            a    1
    dtype: int32
    #DataFrame 取值也一样
    df=DataFrame(np.random.randn(4,3),index=['a','a','b','b'])
    df.ix['b']
    0ut[197]:
              0                1                2
    b  1.669025  -0.438570  -0.539741
    b  0.476985  3.248944  -1.021228
    

    总结

    pandas的基本功能通过这两节就看完了,主要介绍的是Series和Dataframe两种数据结构的重建索引reindex,通过drop来删除某些索引,obj['b','c']选取时bc索引是都包含的,DataFrame的行上标签索引通过ix来实现,不用时选择出来的是列!不同索引的pandas之间进行算术运算,以及对其函数级操作,这章节我们对其排序排名,以及带过的描述了下有重复索引的时候。总的来说,基本的简单使用在这两节都有描述,可以根据我上面描述的回顾一下。不清楚再翻回去看看~

    相关文章

      网友评论

        本文标题:利用Python进行数据分析(六)之pandas基本功能续

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