Pandas “.convert_objects(convert_numeric=True)” 已被弃用

Pandas “.convert_objects(convert_numeric=True)” 已被弃用

在本文中,我们将介绍Pandas中一个重要的函数被弃用的消息:”.convert_objects(convert_numeric=True)”。我们将解释它是什么、为什么它被弃用以及如何正确地更新你的代码。

阅读更多:Pandas 教程

“.convert_objects(convert_numeric=True)” 是什么?

“.convert_objects(convert_numeric=True)” 是 Pandas 中的一个函数,它被用来将数据框中的列转换为数值类型。这个函数在 Pandas 0.17.0 版本中被引入,这时候,它被认为是一个很方便的工具,可以快速地把所有的列转换为需要的类型。它会扫描数据框中的每一列,尝试将其转换为数值类型,如果成功,就返回转换后的值,否则就返回原始值。

以下是一个简单的示例,展示了如何使用 “.convert_objects(convert_numeric=True)” 函数将数据框中的所有列转换为数值类型。

import pandas as pd

df = pd.DataFrame({'a': ['1', '2', '3'], 'b': ['4', '5', '6']})

print(df.dtypes)

df = df.convert_objects(convert_numeric=True)

print(df.dtypes)

上述代码会输出以下内容:

a    object
b    object
dtype: object
a     int64
b     int64
dtype: object

可以看到,当我们使用 “.convert_objects(convert_numeric=True)” 函数后,数据框的类型从 object 类型转换为了 int64 类型。

然而,从 Pandas 0.20.0 版本开始,这个函数被标记为废弃,并在 Pandas 1.0.0 版本中正式被移除。

为什么 “.convert_objects(convert_numeric=True)” 被弃用?

“.convert_objects(convert_numeric=True)” 函数存在一些缺陷,这导致了它被废弃。主要原因有三:

  1. 预期外的行为:如果数据框中的某些列无法被转换为数值类型,该函数会将这些列留在 object 类型中,而不是抛出一个错误。这种行为可能会导致预期外的结果,因为 object 类型的列会导致很多计算问题。

  2. 速度慢:在处理大型数据框时,”.convert_objects(convert_numeric=True)” 函数的速度表现不佳,这会影响数据处理的效率。

  3. 难以维护:由于这个函数是在没有明确类型信息的情况下进行转换的,因此代码维护起来可能会比较困难。

因此,尽管 “.convert_objects(convert_numeric=True)” 函数可以在某些情况下很方便地将列转换为数值类型,但它的一些缺陷使得它被标记为废弃。

如何正确地更新你的代码?

如果你的代码中使用了 “.convert_objects(convert_numeric=True)” 函数,你应该将其替换为 “.to_numeric()” 函数,它是 “.convert_objects(convert_numeric=True)” 的升级版。

“.to_numeric()” 函数的行为与 “.convert_objects(convert_numeric=True)” 函数类似,但它可以处理更多的类型,并且提供了更多的选项来处理非数值字符串。以下是一个简单的示例,展示了如何使用 “.to_numeric()” 函数将数据框中的所有列转换为数值类型。

import pandas as pd

df = pd.DataFrame({'a': ['1', '2', '3'], 'b': ['4', '5', '6']})

print(df.dtypes)

df = df.apply(pd.to_numeric, errors='coerce')

print(df.dtypes)

上述代码会输出以下内容:

a    object
b    object
dtype: object
afloat64
b    float64
dtype: object

可以看到,当我们使用 “.to_numeric()” 函数后,数据框的类型从 object 类型转换为了 float64 类型。

需要注意的是,”.to_numeric()” 函数需要你显式地指定错误处理方式,因为它会在转换失败时抛出一个错误。错误处理方式有三种:

  • ‘raise’(默认):如果转换失败,抛出一个 ValueError 错误。
  • ‘coerce’:将转换失败的值替换为 NaN。
  • ‘ignore’:保留原始值。

在大多数情况下,我们建议使用 “errors=’coerce'” 选项,这样可以将转换失败的值替换为 NaN,避免对计算造成影响。

总结

“.convert_objects(convert_numeric=True)” 函数是 Pandas 中一个被废弃的函数,它可以将数据框中的列转换为数值类型。然而,这个函数存在一些缺陷,导致它被标记为废弃。如果你的代码中使用了 “.convert_objects(convert_numeric=True)” 函数,我们建议你将其替换为 “.to_numeric()” 函数,这是一个更好的选择。”.to_numeric()” 函数提供了更多的选项来处理非数值字符串,并且具有更高的效率。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程