Python可以做的那些事!码农的世界程序员

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

2017-12-23  本文已影响28人  BrainZou

排序和排名

按索引排序

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之间进行算术运算,以及对其函数级操作,这章节我们对其排序排名,以及带过的描述了下有重复索引的时候。总的来说,基本的简单使用在这两节都有描述,可以根据我上面描述的回顾一下。不清楚再翻回去看看~

上一篇下一篇

猜你喜欢

热点阅读