排序
要对行或列索引进行排序,可使用sort_index方法,它将返回一个已排序的新对象:
Series
1、对Series索引排序

 obj=Series(range(4),index=['d','a','b','c'])

 obj.sort_index()
Out[18]:
a 1
b 2
c 3
d 0
dtype: int64

2、按值对Series进行排序

 obj=Series([4,7,-3,2])

 obj
Out[10]:
0 4
1 7
2 -3
3 2
dtype: int64 obj.sort_values()
Out[11]:
2 -3
3 2
0 4
1 7
dtype: int64

在排序时,任何缺失值默认都会被放到Series的末尾:

 obj=Series([4,np.nan,7,np.nan,-3,2])

 obj
Out[13]:
0 4.0
1 NaN
2 7.0
3 NaN
4 -3.0
5 2.0
dtype: float64 obj.sort_values()
Out[14]:
4 -3.0
5 2.0
0 4.0
2 7.0
1 NaN
3 NaN
dtype: float64
DataFrame
1、对于DataFrame,可以根据任意一个轴上的索引进行排序:
 frame=DataFrame(np.arange(8).reshape((2,4)),index=['three','one'],
columns=['d','a','b','c']) frame
Out[20]:
d a b c
three 0 1 2 3
one 4 5 6 7 frame.sort_index()
Out[21]:
d a b c
one 4 5 6 7
three 0 1 2 3 #指定轴
frame.sort_index(axis=1)
Out[22]:
a b c d
three 1 2 3 0
one 5 6 7 4

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

 frame.sort_index(axis=1,ascending=False)
Out[23]:
d c b a
three 0 3 2 1
one 4 7 6 5

2、在DataFrame上,根据一个或多个列中的值来进行排序

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

 frame
Out[16]:
a b
0 0 4
1 1 7
2 0 -3
3 1 2 frame.sort_values(by='b') Out[17]:
a b
2 0 -3
3 1 2
0 0 4
1 1 7 #根据多个列进行排序,传入名称的列表即可
frame.sort_values(by=['a','b']) Out[18]:
a b
2 0 -3
0 0 4
3 1 2
1 1 7
排名
通过Series和DataFrame的rank方法。
默认情况下,rank是通过“为各组分配一个平均排名”的方式破坏平级关系的。
Series
 obj=Series([7,-5,7,4,2,0,4])

 obj.rank()
Out[20]:
0 6.5
1 1.0
2 6.5
3 4.5
4 3.0
5 2.0
6 4.5
dtype: float64 #将数值进行排序,对于相同数据排名,取排名的平均值

根据值在原数据中出现的顺序给出排名:

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

可以进行降序排名:

 #max使用整个分组的最大排名
obj.rank(ascending=False,method='max')
Out[22]:
0 2.0
1 7.0
2 2.0
3 4.0
4 5.0
5 6.0
6 4.0
dtype: float64
DataFrame
在行或列上计算排名

 frame=DataFrame({'b':[4.3,7,-3,2],'a':[0,1,0,1],
'c':[-2,5,-8,-2.5]}) frame
Out[25]:
a b c
0 0 4.3 -2.0
1 1 7.0 5.0
2 0 -3.0 -8.0
3 1 2.0 -2.5 #指定轴
frame.rank(axis=1)
Out[26]:
a b c
0 2.0 3.0 1.0
1 1.0 3.0 2.0
2 3.0 2.0 1.0
3 2.0 3.0 1.0
排名时用于破坏平级关系的method选项
'average' 默认:在相等分组中,为各值分配平均排名
'min' 使用整个分组的最小排名
'max' 使用整个分组的最大排名
'first' 按值在原数据中的出现顺序分配排名

pandas--排序和排名的更多相关文章

  1. Pandas基本功能之算术运算、排序和排名

    算术运算和数据对齐 Series和DataFrame中行运算和列运算有种特征叫做广播 在将对象相加时,如果存在不同的索引对,则结果的索引就是该索引对的并集.自动的数据对齐操作在不重叠的索引处引入了NA ...

  2. Pandas的排序和排名(Series, DataFrame) + groupby

    根据条件对数据集排序(sorting)也是一种重要的内置运算.要对行或列索引进行排序(按字典顺序), 可使用sort_index 方法, 它将返回一个已排序的新对象: 而DataFrame, 则可以根 ...

  3. Pandas排序

    Pandas有两种排序方式,它们分别是 - 按标签 按实际值 下面来看看一个输出的例子. import pandas as pd import numpy as np unsorted_df=pd.D ...

  4. 第七节:pandas排序

    pandas具有两种排序方式:sort_index()和sort_values().

  5. PAT A1012 The Best Rank (25 分)——多次排序,排名

    To evaluate the performance of our first year CS majored students, we consider their grades of three ...

  6. pandas 排序之 sort_values,reindex,reset_index, sort_index

    如果想按照自己的方式排序ind = 行索引data= data[ind] ind = data.sum(axis=1).sort_values(ascending=False).index data ...

  7. Cognos开发自定义排序规则的报表和自定义排名报表

    场景:有一个简单的销售数据分析,可以按照日期,按照商品类型来分析订单笔数和订单金额. 目的:用户可以自定义查看按照不同指标排序的数据,用户可以查看按照不同指标排名的前N名数据 一:功能及效果展示 效果 ...

  8. pandas 按照某一列进行排序

    pandas排序的方法有很多,sort_values表示根据某一列排序 pd.sort_values("xxx",inplace=True) 表示pd按照xxx这个字段排序,inp ...

  9. 《利用python进行数据分析》读书笔记--第五章 pandas入门

    http://www.cnblogs.com/batteryhp/p/5006274.html pandas是本书后续内容的首选库.pandas可以满足以下需求: 具备按轴自动或显式数据对齐功能的数据 ...

  10. 利用python进行数据分析之pandas库的应用(二)

    本节介绍Series和DataFrame中的数据的基本手段 重新索引 pandas对象的一个重要方法就是reindex,作用是创建一个适应新索引的新对象 >>> from panda ...

随机推荐

  1. HashSet源码解析笔记

    HashSet是基于HashMap实现的.HashSet底层采用HashMap来保存元素,因此HashSet底层其实比较简单. HashSet是Set接口典型实现,它按照Hash算法来存储集合中的元素 ...

  2. CTU OPEN 2017 Pond Cascade /// 思维

    题目大意: 给定N F 给定N个水池的大小 每个水池都以流量F开始注水 当位置较前的水池注满后 水会溢出到下一个水池 求 最后一个水池开始溢出的时间 和 所有水池全部注满的时间 1.最后一个n水池开始 ...

  3. ArcGis 创建含孔洞面要素AO C#

    IGeometryCollection geometryCollection = new PolygonClass(); IPointCollection pointCollection_Exteri ...

  4. Android中使用VideoView 播放视频

    VideoView一般结合MediaController类使用,它会提供一个友好的图形界面,通过该界面可以控制视频的播放 package com.test.videoview; import andr ...

  5. Hooks初探

    一.创建自己的HOOkS,并进行封装 二.创建自己的HOOkS,并进行封装

  6. 【记录】Nginx错误could not build the server_names_hash you should increase server_names_hash_bucket_size: 32

    今天遇到这个错误,现记录下解决方案: 在nginx的配置文件的http段中增加如下配置: server_names_hash_bucket_size 64; 下面是nginx官方文档解释: 如果定义了 ...

  7. javascript与jquery删除元素节点

    今天工作的时候遇到一个删除的问题,研究了下发现是没有很好的区分js和jquery的删除方法,在此澄清一下 工作的代码如下 // 删除图片 $("#js_takePhotoWrap" ...

  8. C++如何阻止一个类被实例化

    (1)定义一个无用的抽象函数,使得类成为抽象类 (2)将构造函数定义为private. 为什么要这样做? 一些工具类,没有被实例化的必要.

  9. Java中的内部类怎么用

    一.为什么需要内部类?java内部类有什么好处?为什么需要内部类? 首先举一个简单的例子,如果你想实现一个接口,但是这个接口中的一个方法和你构想的这个类中的一个方法的名称,参数相同,你应该怎么办?这时 ...

  10. 【leetcode】328. Odd Even Linked List

    题目如下: Given a singly linked list, group all odd nodes together followed by the even nodes. Please no ...