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值。
廣告