pandas 数组、标量和数据类型#
对象#
对于大多数数据类型,pandas 使用 NumPy 数组作为包含在 Index
、Series
或 DataFrame
中的具体对象。
对于某些数据类型,pandas 扩展了 NumPy 的类型系统。这些类型的字符串别名可以在 dtypes 中找到。
数据类型 |
pandas 数据类型 |
标量 |
数组 |
---|---|---|---|
带时区的日期时间 |
|||
时间差 |
(无) |
||
周期(时间跨度) |
|||
区间 |
|||
可空整数 |
|
(无) |
|
可空浮点数 |
|
(无) |
|
分类 |
(无) |
||
稀疏 |
(无) |
||
字符串 |
|||
可空布尔值 |
|||
PyArrow |
Python 标量或 |
pandas 和第三方库可以扩展 NumPy 的类型系统(参见 扩展类型)。顶级 array()
方法可用于创建新数组,该数组可以存储在 Series
、Index
中,或作为 DataFrame
中的一列。
|
创建数组。 |
PyArrow#
警告
此功能处于实验阶段,API 可能会在未来版本中更改,恕不另行通知。
该 arrays.ArrowExtensionArray
由一个 pyarrow.ChunkedArray
支持,该数组具有 pyarrow.DataType
而不是 NumPy 数组和数据类型。该 .dtype
的 arrays.ArrowExtensionArray
是一个 ArrowDtype
.
Pyarrow 提供类似于 NumPy 的数组和 数据类型 支持,包括对所有数据类型的一流可空性支持、不可变性等等。
下表显示了 pandas 识别的等效 pyarrow 支持(pa
)、pandas 扩展和 numpy(np
)类型。下面的 Pyarrow 支持类型需要传递到 ArrowDtype
以便 pandas 识别,例如 pd.ArrowDtype(pa.bool_())
PyArrow 类型 |
pandas 扩展类型 |
NumPy 类型 |
---|---|---|
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
(无) |
(无) |
|
(无) |
(无) |
|
|
||
(无) |
(无) |
|
(无) |
(无) |
|
(无) |
|
|
(无) |
(无) |
|
|
||
(无) |
(无) |
|
(无) |
(无) |
|
(无) |
(无) |
|
(无) |
注意
Pyarrow 支持的字符串类型可以通过 pd.StringDtype("pyarrow")
和 pd.ArrowDtype(pa.string())
来实现。 pd.StringDtype("pyarrow")
在下面的 字符串部分 中有描述,并且如果指定字符串别名 "string[pyarrow]"
,则会返回该类型。 pd.ArrowDtype(pa.string())
通常与不同类型的 ArrowDtype
具有更好的互操作性。
虽然 arrays.ArrowExtensionArray
中的单个值存储为 PyArrow 对象,但标量将以与数据类型相对应的 Python 标量形式 **返回**,例如,PyArrow int64 将以 Python int 形式返回,或 NA
用于缺失值。
|
由 PyArrow ChunkedArray 支持的 Pandas ExtensionArray。 |
|
PyArrow 数据类型的 ExtensionDtype。 |
有关更多信息,请参阅 PyArrow 用户指南
日期时间#
NumPy 本身不支持表示带时区的日期时间。pandas 通过 arrays.DatetimeArray
扩展数组来支持这一点,该数组可以保存无时区或带时区的日期时间值。
Timestamp
是 datetime.datetime
的子类,是 pandas 用于无时区或带时区日期时间数据的标量类型。 NaT
是日期时间数据的缺失值。
|
Pandas 对 python datetime.datetime 对象的替代。 |
属性#
以纳秒为单位返回 numpy datetime64 格式。 |
|
返回星期几。 |
|
返回星期几。 |
|
返回一年中的第几天。 |
|
返回一年中的第几天。 |
|
返回该月的天数。 |
|
返回该月的天数。 |
|
如果年份是闰年,则返回 True。 |
|
检查日期是否为该月的最后一天。 |
|
检查日期是否为该月的第一天。 |
|
检查日期是否为季度的最后一天。 |
|
检查日期是否为季度的第一天。 |
|
如果日期是该年的最后一天,则返回 True。 |
|
如果日期是该年的第一天,则返回 True。 |
|
返回一年中的季度。 |
|
tzinfo 的别名。 |
|
与 self._creso 关联的缩写。 |
|
返回一年中的周数。 |
|
返回一年中的周数。 |
|
方法#
|
将底层 int64 表示转换为给定的单位。 |
将时区感知 Timestamp 转换为另一个时区。 |
|
|
返回一个新的 Timestamp,向上取整到此分辨率。 |
|
将日期、时间组合成具有相同日期和时间字段的日期时间。 |
返回 ctime() 样式字符串。 |
|
返回具有相同年份、月份和日期的日期对象。 |
|
|
返回 Timestamp 的星期名称,指定语言环境。 |
返回夏令时 (DST) 调整。 |
|
|
返回一个新的 Timestamp,向下取整到此分辨率。 |
|
从儒略日构建一个时间戳。 |
将时间戳[, tz] 转换为 tz 的本地时间,来自 POSIX 时间戳。 |
|
返回一个命名元组,包含 ISO 年份、周数和星期几。 |
|
|
以 ISO 8601 格式返回时间。 |
返回日期所代表的星期几。 |
|
|
返回指定区域设置的 Timestamp 的月份名称。 |
将 Timestamp 规范化为午夜,保留时区信息。 |
|
|
返回表示 tz 本地当前时间的新的 Timestamp 对象。 |
|
实现 datetime.replace,处理纳秒。 |
|
将 Timestamp 四舍五入到指定的精度。 |
|
返回 Timestamp 的格式化字符串。 |
|
函数未实现。 |
返回具有相同时间但 tzinfo=None 的时间对象。 |
|
返回 POSIX 时间戳作为浮点数。 |
|
返回时间元组,与 time.localtime() 兼容。 |
|
返回具有相同时间和 tzinfo 的时间对象。 |
|
返回具有相同精度的 numpy.datetime64 对象。 |
|
|
将 Timestamp 转换为 NumPy datetime64。 |
将 TimeStamp 转换为儒略日。 |
|
|
返回此时间戳的观测值所在的周期。 |
|
将 Timestamp 对象转换为原生 Python datetime 对象。 |
|
返回本地时区的当前时间。 |
返回儒略日。 |
|
将时区感知 Timestamp 转换为另一个时区。 |
|
|
将 Timestamp 本地化到时区。 |
返回时区名称。 |
|
从 POSIX 时间戳构造一个时区感知的 UTC 日期时间。 |
|
返回一个表示 UTC 日期和时间的新的 Timestamp。 |
|
返回 UTC 偏移量。 |
|
返回 UTC 时间元组,与 time.localtime() 兼容。 |
|
返回日期所代表的星期几。 |
一组时间戳可以存储在 arrays.DatetimeArray
中。对于时区感知数据,arrays.DatetimeArray
的 .dtype
是 DatetimeTZDtype
。对于时区无感知数据,使用 np.dtype("datetime64[ns]")
。
如果数据是时区感知的,则数组中的每个值都必须具有相同的时区。
|
用于时区无感知或时区感知日期时间数据的 Pandas 扩展数组。 |
|
用于时区感知日期时间数据的扩展数据类型。 |
时间增量#
NumPy 可以原生表示时间增量。pandas 提供了 Timedelta
以与 Timestamp
对称。 NaT
是时间增量数据的缺失值。
|
表示持续时间,即两个日期或时间之间的差值。 |
属性#
返回一个 numpy timedelta64 数组标量视图。 |
|
返回一个类似于命名元组的组件。 |
|
返回时间增量的日期。 |
|
返回纳秒数 (n),其中 0 <= n < 1 微秒。 |
|
返回时间增量的总小时、分钟和秒数,以秒为单位。 |
|
|
数组视图兼容性。 |
方法#
|
将底层 int64 表示转换为给定的单位。 |
|
返回一个新的 Timedelta,向上取整到此分辨率。 |
|
返回一个新的 Timedelta,向下取整到此分辨率。 |
将 Timedelta 格式化为 ISO 8601 持续时间。 |
|
|
将 Timedelta 四舍五入到指定的分辨率。 |
将 pandas Timedelta 对象转换为 python |
|
返回一个具有 'ns' 精度的 numpy.timedelta64 对象。 |
|
|
将 Timedelta 转换为 NumPy timedelta64。 |
持续时间内的总秒数。 |
一组 Timedelta
可以存储在 TimedeltaArray
中。
|
用于 timedelta 数据的 Pandas 扩展数组。 |
周期#
pandas 将时间跨度表示为 Period
对象。
周期#
|
表示一段时间。 |
属性#
获取周期所在的月份的日期。 |
|
周期所在的星期几,星期一=0,星期日=6。 |
|
周期所在的星期几,星期一=0,星期日=6。 |
|
返回一年中的第几天。 |
|
返回一年中的第几天。 |
|
获取此周期所在的月份的总天数。 |
|
获取此周期所在的月份的总天数。 |
|
获取周期结束的时间戳。 |
|
返回频率的字符串表示。 |
|
获取周期的日时分量。 |
|
如果周期所在的年份是闰年,则返回 True。 |
|
获取周期的时分量。 |
|
返回此周期所在的月份。 |
|
返回此周期所在的季度。 |
|
根据周期的起始季度,返回周期所在的财年。 |
|
获取周期的秒分量。 |
|
获取周期开始的时间戳。 |
|
获取给定周期所在的年份的周数。 |
|
周期所在的星期几,星期一=0,星期日=6。 |
|
获取给定周期所在的年份的周数。 |
|
返回此周期所在的年份。 |
方法#
|
将周期转换为所需的频率,位于时间段的开始或结束。 |
|
返回当前日期的周期。 |
|
返回 |
|
返回周期的 Timestamp 表示。 |
一个 Period
的集合可以存储在 arrays.PeriodArray
中。 arrays.PeriodArray
中的每个周期必须具有相同的 freq
。
|
用于存储 Period 数据的 Pandas 扩展数组。 |
|
用于 Period 数据的扩展数据类型。 |
区间#
任意区间可以表示为 Interval
对象。
实现区间的不可变对象,区间是一个有界切片状区间。 |
属性#
描述区间包含边的字符串。 |
|
检查区间是否在左侧闭合。 |
|
检查区间是否在右侧闭合。 |
|
指示区间是否为空,表示它不包含任何点。 |
|
区间的左边界。 |
|
返回区间的长度。 |
|
返回区间的中点。 |
|
检查区间是否在左侧开放。 |
|
检查区间是否在右侧开放。 |
|
|
检查两个 Interval 对象是否重叠。 |
区间的右边界。 |
一组区间可以存储在 arrays.IntervalArray
中。
|
用于存储在同一侧闭合的区间数据的 Pandas 数组。 |
|
用于存储区间数据的 ExtensionDtype。 |
可空整数#
numpy.ndarray
本身无法表示具有缺失值的整数数据。pandas 通过 arrays.IntegerArray
提供此功能。
|
整数(可选缺失)值的数组。 |
用于 int8 整数数据的 ExtensionDtype。 |
|
用于 int16 整数数据的 ExtensionDtype。 |
|
用于 int32 整数数据的 ExtensionDtype。 |
|
用于 int64 整数数据的 ExtensionDtype。 |
|
用于 uint8 整数数据的 ExtensionDtype。 |
|
用于 uint16 整数数据的 ExtensionDtype。 |
|
用于 uint32 整数数据的 ExtensionDtype。 |
|
用于 uint64 整数数据的 ExtensionDtype。 |
可空浮点数#
|
浮点数(可选缺失)值的数组。 |
用于 float32 数据的 ExtensionDtype。 |
|
用于 float64 数据的 ExtensionDtype。 |
分类数据#
pandas 定义了一种自定义数据类型,用于表示只能取有限固定值集的数据。 Categorical
的 dtype 可以用 CategoricalDtype
描述。
|
用于具有类别和排序关系的分类数据的类型。 |
包含允许的唯一类别的 |
|
类别是否具有排序关系。 |
分类数据可以存储在 pandas.Categorical
中
|
以经典的 R/S-plus 方式表示分类变量。 |
当您已经拥有类别和整数代码时,可以使用备用构造函数 Categorical.from_codes()
。
|
从代码和类别或数据类型创建分类类型。 |
数据类型信息在 Categorical
中可用。
此实例的 |
|
此分类的类别。 |
|
类别是否具有排序关系。 |
|
此分类索引的类别代码。 |
np.asarray(categorical)
通过实现数组接口来工作。请注意,这会将 Categorical
转换回 NumPy 数组,因此类别和顺序信息不会保留!
|
NumPy 数组接口。 |
一个 Categorical
可以存储在 Series
或 DataFrame
中。要创建 dtype 为 category
的 Series,请使用 cat = s.astype(dtype)
或 Series(..., dtype=dtype)
,其中 dtype
可以是:
字符串
'category'
CategoricalDtype
的实例。
如果 Series
的 dtype 为 CategoricalDtype
,则可以使用 Series.cat
来更改分类数据。有关更多信息,请参见 分类访问器。
稀疏#
数据中单个值重复多次(例如 0
或 NaN
)可以有效地存储为 arrays.SparseArray
。
|
用于存储稀疏数据的扩展数组。 |
|
存储在 |
如果 Series
包含稀疏值,则可以使用 Series.sparse
访问器访问稀疏特定属性和方法。有关更多信息,请参阅 稀疏访问器 和 用户指南。
字符串#
在处理文本数据时,其中每个有效元素都是字符串或缺失,我们建议使用 StringDtype
(别名为 "string"
)。
|
用于字符串数据的扩展数组。 |
|
用于 |
|
用于字符串数据的扩展 dtype。 |
对于由 arrays.StringArray
支持的 Series
,可以使用 Series.str
访问器。有关更多信息,请参阅 字符串处理。
可空布尔值#
布尔 dtype(别名为 "boolean"
)支持存储布尔数据(True
、False
)以及缺失值,而这在 bool numpy.ndarray
中是不可能的。
|
包含缺失值的布尔(True/False)数据的数组。 |
布尔数据的扩展 dtype。 |
实用程序#
构造函数#
|
将类似列表的分类数据组合在一起,并联合其类别。 |
|
返回标量或类似列表的值的类型字符串标签。 |
|
将输入转换为 pandas 专用 dtype 对象或 numpy dtype 对象。 |
数据类型内省#
|
检查提供的数组或 dtype 是否为实数 dtype。 |
|
检查提供的数组或 dtype 是否为布尔 dtype。 |
|
(已弃用) 检查数组或数据类型是否为 Categorical 数据类型。 |
|
检查提供的数组或数据类型是否为复数数据类型。 |
|
检查提供的数组或数据类型是否为 datetime64 数据类型。 |
|
检查数组或数据类型是否为 datetime64 数据类型。 |
|
检查提供的数组或数据类型是否为 datetime64[ns] 数据类型。 |
|
(已弃用) 检查数组或数据类型是否为 DatetimeTZDtype 数据类型。 |
|
检查对象是否为 pandas 扩展数组类型。 |
|
检查提供的数组或数据类型是否为浮点数据类型。 |
|
(已弃用) 检查提供的数组或数据类型是否为 int64 数据类型。 |
|
检查提供的数组或数据类型是否为整数数据类型。 |
|
(已弃用) 检查数组或数据类型是否为 Interval 数据类型。 |
|
检查提供的数组或数据类型是否为数值数据类型。 |
|
检查数组或数据类型是否为 object 数据类型。 |
|
(已弃用) 检查数组或数据类型是否为 Period 数据类型。 |
|
检查提供的数组或数据类型是否为有符号整数数据类型。 |
|
检查提供的数组或数据类型是否为字符串数据类型。 |
|
检查数组或数据类型是否为 timedelta64 数据类型。 |
|
检查提供的数组或数据类型是否为 timedelta64[ns] 数据类型。 |
|
检查提供的数组或数据类型是否为无符号整数数据类型。 |
|
(已弃用) 检查类数组对象是否为一维 pandas 稀疏数组。 |
可迭代对象内省#
检查对象是否为字典类对象。 |
|
检查对象是否为文件类对象。 |
|
|
检查对象是否为列表类对象。 |
检查对象是否为命名元组。 |
|
检查对象是否为迭代器。 |
标量内省#
|
如果给定对象为布尔值,则返回 True。 |
|
如果给定对象为复数,则返回 True。 |
|
如果给定对象为浮点数,则返回 True。 |
如果 hash(obj) 成功,则返回 True,否则返回 False。 |
|
|
如果给定对象为整数,则返回 True。 |
|
检查对象是否为数字。 |
|
检查对象是否为正则表达式模式实例。 |
检查对象是否可以编译成正则表达式模式实例。 |
|
|
如果给定对象是标量,则返回 True。 |