pandas 系列 argsort 如何处理 nan 值?

在熊猫系列中,该argmax()方法用于对系列的值进行排序,它将返回一个新的系列对象,其中包含对原始系列值进行排序的索引。如果 Series 对象包含任何空值或缺失值,则该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("输出参数排序:", series.argsort())

解释

在下面的示例中,我们使用带有一些 None 值的 python 列表创建了一个系列。然后我们将该argsort()方法应用于该系列数据。

输出结果

0 NaN

1 5.0

2 2.0

3 NaN

4 7.0

dtype: float64

输出参数排序:

0 -1

1  1

2  0

3 -1

4  2

dtype: int64

在上面的输出块中,我们可以看到 argsort 方法的结果系列对象,因为我们可以观察到 -1 值,它表示原始系列对象的无值索引。

示例 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("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

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 处的元素来自原始系列的第一个索引位置,它是最小的数字。argsort 方法中没有跳过任何值,因此它将 -1 表示为该特定元素的索引。

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

以上是 pandas 系列 argsort 如何处理 nan 值? 的全部内容, 来源链接: utcz.com/z/297320.html

回到顶部