Pandas 如何处理series中的nan值的argsort方法

Pandas 如何处理series中的nan值的argsort方法

在pandas series中,argmax()方法用于对系列的值进行排序,并返回一个新的系列对象,其中包含按照原始系列值进行排序的索引。如果Series对象包含任何null值或缺失值,则argsort()方法将给出-1作为其索引值。

为了对系列对象的值进行排序,argsort方法默认采用quicksort算法,我们可以使用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())

解释

在下面的示例中,我们使用python列表创建了一个系列,其中包含一些None值。然后我们对该系列数据应用了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())

解释

让我们再举一个示例,使用argsort方法来操作一个pandas系列对象。最初,我们创建了一个带有整数值和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个索引位置,并且它是最小的数字。argsort方法跳过了空值,因此它将该特定元素的索引表示为-1。

同样地,输出系列对象的标签索引2021-11-30处的元素来自原始系列的第0个索引位置,并且它是原始系列值中的最大数字。通过这种方式,pandas系列的argmax()方法处理了空值。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

Pandas 精选笔记