pandas 最初是基于NumPy构建的,NumPy 是一个主要用于处理数值数据的数组计算库。许多 pandas 概念(例如缺失数据)是使用 NumPy 中可用的内容实现的,同时试图最大限度地提高同时使用 NumPy 和 pandas 的库之间的兼容性。
在 NumPy 上构建pandas也导致了许多缺点,例如:
1.某些数值数据类型 (如整数和布尔值) 的缺失数据处理不完整。因此,当缺失数据被引入此类数据时,pandas 将数据类型转换为 float64 并使用 np.nan 表示 null 值。这在许多 pandas 算法中引入了微妙的问题,从而产生了复合效应。
2.具有大量字符串数据的数据集计算成本高昂,并且使用大量内存。
3.如果不使用计算成本高昂的 Python 对象数组,则无法有效地支持某些数据类型,例如时间间隔、时间增量和带时区的时间戳。
pandas 开发了一个扩展类型系统,允许添加新的数据类型,即使 NumPy 本身不支持它们。这些新数据类型可以与来自 NumPy 数组的数据一起被视为同等。我们创建一个具有缺失值的 Series 整数数组:
import numpy as np
import pandas as pd
s = pd.Series([1, 2, 3, None])
print(s)
print(s.dtype)