Pandas詳解之排序和排名

2021-09-03 08:52:42 字數 3072 閱讀 6865

約定:

import pandas as pd

import numpy as np12

排序和排名

根據條件對series物件或dataframe物件的值排序(sorting)和排名(ranking)是一種重要的內建運算。 

接下來為大家介紹如何使用pandas物件的:sort_index() / sort_values() / rank() 方法。

一、對series排序

對series物件排序是最常用的,可以根據series物件的索引、值排序。

根據索引排序

se1=pd.series(np.arange(10,13),index=[1,3,2])

se1.sort_index()12

**結果:

1    10

2    12

3    11

dtype: int3212

34還能對字元索引排序

se2=pd.series(np.arange(0,3),index=['c','d','a'])

se2.sort_index()12

**結果:

a    2

c    0

d    1

dtype: int32

按降序排序

se2.sort_index(ascending=false)

1**結果:

d    1

c    0

a    2

dtype: int32

按值排序

se3=pd.series([3,-5,7])

se3.sort_values()

**結果:

1   -5

0    3

2    7

dtype: int64

nan值會放在series末尾

se4=pd.series([3,np.nan,-7,np.nan,5])

se4.sort_values()

**結果:

2   -7.0

0    3.0

4    5.0

1    nan

3    nan

dtype: float64

二、對dataframe排序

通過axis引數可以對任意軸排序

df1=pd.dataframe(np.arange(9).reshape(3,3),index=list("bac"),columns=list("yzx"))

df11

2**結果:

y    z    x

b    0    1    2

a    3    4    5

c    6    7    8

df1.sort_index()

1**結果:

y    z    x

a    3    4    5

b    0    1    2

c    6    7    8

df1.sort_index(axis=1)

1**結果:

x    y    z

b    2    0    1

a    5    3    4

c    8    6    7

根據乙個列的值來排序

df2=pd.dataframe()

df2.sort_values(by='b')12

**結果:

a    b

1    3    -6

0    20    1

2    3    18

對多個列來排序

df2.sort_values(by=['a','b'])

1**結果:

a    b

1    3    -6

2    3    18

0    20    1

三、排名

排名是根據series物件或dataframe的某幾列的值進行排名,.rank(method=,ascending=,…)返回對值的排名。但需要十分注意如何處理出現相同的值。

平均排名

為相同的值分配乙個平均排名

se5=pd.series([2,3,7,5,3,7])

se5.rank()12

**結果:

0    1.0

1    2.5

2    5.5

3    4.0

4    2.5

5    5.5

dtype: float64

順序排名

對於相同的值按照出現的順序排名

se5.rank(method="first")

1**結果:

0    1.0

1    2.0

2    5.0

3    4.0

4    3.0

5    6.0

dtype: float64

最小值排名

對於相同的值都取小的排名

se5.rank(method="min",ascending=false)

1**結果:

0    6.0

1    4.0

2    1.0

3    3.0

4    4.0

5    1.0

dtype: float64

最大值排名

對於相同的值都取大的排名

se5.rank(method="max",ascending=false)

1**結果:

0    6.0

1    5.0

2    2.0

3    3.0

4    5.0

5    2.0

dtype: float64

降序排名

se5.rank(method="first",ascending=false)

1**結果:

0    6.0

1    4.0

2    1.0

3    3.0

4    5.0

5    2.0

dtype: float64

Pandas詳解四之MultiIndex物件

約定import pandas as pd from pandas import dataframe import numpy as npmultiindex表示多級索引,它是從index繼承過來的,其中多級標籤用元組物件來表示。m index1 pd.index a x1 a x2 b y1 b ...

詳解Python學習之安裝pandas

一 python pip的安裝與使用 1 pip 是 python 包管理工具,該工具提供了對python 包的查詢 安裝 解除安裝的功能。目前如果你在 python.org 最新版本的安裝包,則是已經自帶了該工具。python 2.7.9 或 python 3.4 以上版本都自帶 pip 工具。p...

Pandas詳解十之Dropna濾除缺失資料

約定 import pandas as pd import numpy as np from numpy import nan as nanpandas的設計目標之一就是使得處理缺失資料的任務更加輕鬆些。pandas使用nan作為缺失資料的標記。使用dropna使得濾除缺失資料更加得心應手。se1 ...