Pandas序列的argsort方法如何處理NaN值?


在Pandas序列中,argmax()方法用於對序列的值進行排序,它將返回一個新的序列物件,其中包含對原始序列值進行排序的索引。如果序列物件包含任何空值或缺失值,則argsort()方法將其索引值設為-1。

為了對序列物件的值進行排序,argsort方法預設使用快速排序演算法,我們也可以使用kind引數應用其他排序演算法,例如‘mergesort’,‘heapsort’,‘stable’。

argsort方法返回一個序列,其值被替換為已排序的索引。它不會更改原始序列物件的索引標籤。

示例1

import pandas as pd

# creating series
series = pd.Series([None,5,2,None,7])
print(series)

# apply argsort()
print("Output argsort:", series.argsort())

解釋

在下面的示例中,我們使用包含一些None值的Python列表建立了一個序列。然後,我們在該序列資料上應用了argsort()方法。

輸出

0 NaN
1 5.0
2 2.0
3 NaN
4 7.0
dtype: float64

Output argsort:
0 -1
1  1
2  0
3 -1
4  2
dtype: int64

在上面的輸出塊中,我們可以看到argsort方法生成的序列物件,其中我們可以看到-1值,它表示原始序列物件的None值的索引。

示例2

import pandas as pd

# creating dates
date = pd.date_range("2021-07-01", periods=5, freq="M")

# creating pandas Series with date range index
s = pd.Series([9, None, 2, 5, 6], index=date)
print(s)

# apply argsort
print("Output of argsort:",s.argsort())

解釋

讓我們再舉一個Pandas序列物件的例子來應用argsort方法。最初,我們使用整數列表和一個None值建立了一個Pandas序列物件,然後在該資料上應用了argsort方法。序列的索引是日期範圍值。

輸出

2021-07-31 9.0
2021-08-31 NaN
2021-09-30 2.0
2021-10-31 5.0
2021-11-30 6.0
Freq: M, dtype: float64

Output of argsort:
2021-07-31  1
2021-08-31 -1
2021-09-30  2
2021-10-31  3
2021-11-30  0
Freq: M, dtype: int64

輸出序列物件中索引標籤為2021-07-31的元素來自原始序列的第1個索引位置,它是原始序列中最小的數字。None值被argsort方法跳過,因此它將該特定元素的索引表示為-1。

同樣,輸出序列物件中索引標籤為2021-11-30的元素來自原始序列的第0個索引位置,它是原始序列值中最大的數字。這樣,Pandas序列argmax()方法處理了None值。

更新於:2022年3月9日

瀏覽量:205

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告