Numpy 让 Int64 成为 pandas 中默认的整数数据类型而非标准的 int64

Numpy 让 Int64 成为 pandas 中默认的整数数据类型而非标准的 int64

阅读更多:Numpy 教程

背景

PandasPython 中一个非常流行的数据处理库,广泛应用于数据分析和机器学习领域。而 NumpyPandas 的核心库之一,负责数据的存储和运算等基本操作。在 Pandas 中,整数类型的数据默认使用 int64 来存储。但事实上,该类型在不同系统和平台下会出现一些问题。

具体来说,int64 需要 8 个字节来存储,而有些机器或平台并不支持这样的数据类型,例如 ARM 架构的计算机(如树莓派),而同时它们支持其他的数据类型,如 Int64。此外,Int-标准整数 类型能够在较小的形式因子下代表更广泛的数字,并且在使用 Pandas 时更高效。

为此,Numpy 决定将 Int64 作为 Pandas 中默认的整数数据类型,以便更好地满足不同平台和系统的需求。

示例

在之前的版本的 Pandas 中,当对 int 类型的数据进行操作时,会使用 int64 数据类型进行存储。而在新版本中,Int64 将取而代之成为默认的整数数据类型。

首先,创建一个 Pandas 数据帧,其中包含一列 int 类型的数据:

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': [1, 2, 3]})
print(df.dtypes)
Python

该代码将输出以下内容:

A    int64
dtype: object
Python

在新版本的 Pandas 中,当我们进行类似于添 加操作时:

df['B'] = df['A'] + 1
print(df.dtypes)
Python

会发现输出的数据类型变为了 Int64:

A     int64
B    Int64
dtype: object
Python

在这个例子中,Pandas 将 Int64 视为优 秀的数据类型,因此将其作为默认整数数据类型。

应用与影响

Int64 是 Pandas 中新添加的一种数据类型,旨 在为不同平台和系统提供更好的支持。虽然在大多数情况下,在防止运算过程中的内存溢出的情况下仍然需要 int64,但是 Int64 却是一种更加高效和灵活的数据类型,因此在一些特殊场景下可以更好地发挥作用。

此外,随着 Int64 成为 Pandas 中默认的整数数据类型,它也会对很多正在使用 Pandas 的人产生影响。

例如,在旧版 Pandas 中,使用可选参数 downcast 进行类型转换时,Pandas 会自动将 int 类型转换为 int64。而在新版中,由于 default 是 Int64,因此应该更新代码以避免出现错误。

Numpy 对此也给出了一些建议,包括使用类型名称(int 和 float)替代 dtype (如 ‘d’ 代表 float),或使用 Pandas 中提供的方法来执行类型转换。

例如,如果你希望将整数数据类型转换为 int32,可以利用 Pandas 中提供的 astype 方法:

df = pd.DataFrame({'A': [1, 2, 3]})
print(df.dtypes)
# A    int64
# dtype: object

df['A'] = df['A'].astype('int32')
print(df.dtypes)
# A    int32
# dtype: object
Python

总结

Numpy 让 Int64 成为 Pandas 中默认的整数数据类型,以支持更广泛 的平台和系统,并提高 Pandas 的整数类型的效率。这个改变不只是对 Pandas 的单个版本有影响,还会影响正在使用 Pandas 的人,需要注意更新代码和遵守最佳实践。在转换类型时,建议使用类型名称而非 dtype,并且可以使用 Pandas 中封装的 astype 方法。

这个改变证明了 Numpy 和 Pandas 在持续进行改进和优化,以适应不断变化的数据处理和分析需求。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册