pandas 数组、标量和数据类型#
Objects#
对于大多数数据类型,pandas 使用 NumPy 数组作为包含在 Index
、Series
或 DataFrame
中的具体对象。
对于某些数据类型,pandas 扩展了 NumPy 的类型系统。这些类型的字符串别名可以在 dtypes 找到。
数据类型 |
pandas 数据类型 |
Scalar |
数组 |
---|---|---|---|
TZ-aware datetime |
|||
Timedeltas |
(无) |
||
周期(时间跨度) |
|||
区间 |
|||
可空整数 |
|
(无) |
|
可空浮点数 |
|
(无) |
|
Categorical |
(无) |
||
Sparse |
(无) |
||
字符串 |
|||
可空布尔值 |
|||
PyArrow |
Python 标量或 |
pandas 和第三方库可以扩展 NumPy 的类型系统(参见 扩展类型)。顶层的 array()
方法可以用来创建一个新数组,该数组可以存储在 Series
、Index
或作为 DataFrame
中的一列。
|
创建一个数组。 |
PyArrow#
警告
此功能是实验性的,API 可能在未来的版本中无预警地更改。
arrays.ArrowExtensionArray
由一个 pyarrow.ChunkedArray
和一个 pyarrow.DataType
支持,而不是一个 NumPy 数组和数据类型。arrays.ArrowExtensionArray
的 .dtype
是一个 ArrowDtype
。
Pyarrow 提供了类似于 NumPy 的数组和 数据类型 支持,包括所有数据类型的第一类可空性支持、不可变性等。
下表显示了 pandas 识别的等效 pyarrow-backed (pa
)、pandas 扩展和 numpy (np
) 类型。下面的 Pyarrow-backed 类型需要传递给 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 格式。 |
|
Return the day of the Timestamp. |
|
返回星期几。 |
|
返回星期几。 |
|
返回一年中的某一天。 |
|
返回一年中的某一天。 |
|
返回该月份的天数。 |
|
返回该月份的天数。 |
|
如果年份是闰年,则返回 True。 |
|
检查日期是否是该月的最后一天。 |
|
检查日期是否是月份的第一天。 |
|
检查日期是否为季度的最后一天。 |
|
检查日期是否是季度的第一天。 |
|
如果日期是该年的最后一天,则返回 True。 |
|
如果日期是年份的第一天,则返回 True。 |
|
返回 Timestamp 的年份季度。 |
|
tzinfo 的别名。 |
|
与 self._creso 相关的缩写。 |
|
返回一年中的周数。 |
|
返回一年中的周数。 |
|
方法#
|
将底层的 int64 表示转换为给定的单位。 |
将时区感知的 Timestamp 转换为另一个时区。 |
|
|
返回一个新的 Timestamp,向上舍入到此分辨率。 |
|
将日期和时间合并成一个单一的时间戳对象。 |
返回一个表示时间戳的 ctime() 样式字符串。 |
|
返回具有相同年、月和日的 datetime.date。 |
|
|
返回带有指定区域设置的时间戳的日期名称。 |
返回夏令时(DST)调整。 |
|
|
返回一个新的 Timestamp,向下取整到此分辨率。 |
|
从一个预设的格列高利序数构建一个时间戳。 |
|
从 POSIX 时间戳创建一个 Timestamp 对象。 |
返回一个包含 ISO 年份、周数和工作日的命名元组。 |
|
|
返回根据 ISO 8601 格式化的时间。 |
返回由日期表示的星期几。 |
|
|
返回具有指定区域设置的时间戳的月份名称。 |
将时间戳标准化为午夜,保留时区信息。 |
|
|
返回一个新的 Timestamp 对象,表示当前时间,本地化为 tz。 |
|
实现 datetime.replace,处理纳秒。 |
|
将时间戳四舍五入到指定的分辨率。 |
返回时间戳的格式化字符串。 |
|
|
将字符串参数转换为日期时间。 |
返回一个时间对象,时间相同但 tzinfo=None。 |
|
返回 POSIX 时间戳作为浮点数。 |
|
返回时间元组,兼容 time.localtime()。 |
|
返回具有相同时间和时区信息的时间对象。 |
|
返回一个具有相同精度的 NumPy datetime64 对象。 |
|
|
将时间戳转换为 NumPy datetime64。 |
将时间戳转换为儒略日期。 |
|
|
返回一个时间段,这个时间戳是该时间段的一个观察。 |
|
将一个 Timestamp 对象转换为原生的 Python datetime 对象。 |
|
返回当前时间在本地时区的时间。 |
返回预测的公历序数。 |
|
将时区感知的 Timestamp 转换为另一个时区。 |
|
|
将时间戳本地化为一个时区。 |
返回时区名称。 |
|
从 POSIX 时间戳构造一个时区感知的 UTC 日期时间。 |
|
返回一个新的 Timestamp 表示 UTC 日期和时间。 |
|
返回 utc 偏移量。 |
|
返回UTC时间元组,兼容 time.localtime()。 |
|
返回由日期表示的星期几。 |
时间戳集合可以存储在 arrays.DatetimeArray
中。对于时区感知的数据,arrays.DatetimeArray
的 .dtype
是 DatetimeTZDtype
。对于时区不可知的数据,使用 np.dtype("datetime64[ns]")
。
如果数据是时区感知的,那么数组中的每个值必须具有相同的时区。
|
用于 tz-naive 或 tz-aware 日期时间数据的 Pandas ExtensionArray。 |
|
一个用于时区感知日期时间数据的扩展数据类型。 |
Timedeltas#
NumPy 可以原生表示时间增量。pandas 提供了 Timedelta
以与 Timestamp
对称。NaT
是时间增量数据的缺失值。
|
表示一个时间段,即两个日期或时间之间的差异。 |
属性#
返回一个 numpy timedelta64 数组标量视图。 |
|
返回一个类似命名元组的组件。 |
|
返回 timedelta 的天数。 |
|
返回微秒数(n),其中 0 <= n < 1 毫秒。 |
|
返回纳秒数(n),其中 0 <= n < 1 微秒。 |
|
返回 timedelta 的总小时、分钟和秒数为秒。 |
|
返回 Timedelta 对象的单位。 |
|
返回 Timedelta 对象的纳秒值。 |
|
|
数组视图兼容性。 |
方法#
|
将底层的 int64 表示转换为给定的单位。 |
|
返回一个新的 Timedelta,向上取整到此分辨率。 |
|
返回一个新的 Timedelta,向下取整到此分辨率。 |
将 Timedelta 格式化为 ISO 8601 持续时间。 |
|
|
将 Timedelta 四舍五入到指定的分辨率。 |
将 pandas 的 Timedelta 对象转换为 python 的 |
|
返回一个精度为 'ns' 的 numpy.timedelta64 对象。 |
|
|
将 Timedelta 转换为 NumPy timedelta64。 |
总持续时间中的秒数。 |
一组 Timedelta
可以存储在 TimedeltaArray
中。
|
用于 timedelta 数据的 Pandas ExtensionArray。 |
周期#
pandas 将时间段表示为 Period
对象。
周期#
|
表示一段时间。 |
属性#
获取一个周期所在的月份中的某一天。 |
|
该周期所在的星期几,星期一=0,星期日=6。 |
|
该周期所在的星期几,星期一=0,星期日=6。 |
|
返回一年中的某一天。 |
|
返回一年中的某一天。 |
|
获取此期间所在的月份的总天数。 |
|
获取此期间所在的月份的总天数。 |
|
获取周期结束的时间戳。 |
|
返回频率的字符串表示。 |
|
获取周期的一天组成部分的小时。 |
|
如果该时期的年份是闰年,则返回 True。 |
|
获取周期的小时部分。 |
|
返回此期间所在的月份。 |
|
返回此期间所在的季度。 |
|
财政年度 根据其起始季度确定期间。 |
|
获取Period的第二个组件。 |
|
获取周期的开始时间戳。 |
|
获取给定周期内的周数。 |
|
该周期所在的星期几,星期一=0,星期日=6。 |
|
获取给定周期内的周数。 |
|
返回此时间段所在的年份。 |
方法#
|
将周期转换为所需的频率,在区间的开始或结束。 |
|
返回当前日期的周期。 |
|
返回 |
|
返回 Period 的时间戳表示。 |
一组 Period
可以存储在 arrays.PeriodArray
中。arrays.PeriodArray
中的每个周期必须具有相同的 freq
。
|
用于存储Period数据的Pandas ExtensionArray。 |
|
用于周期数据的 ExtensionDtype。 |
区间#
任意区间可以表示为 区间
对象。
实现间隔(Interval)的不可变对象,一个类似有界切片的间隔。 |
属性#
描述区间包含侧的字符串。 |
|
检查区间是否在左侧闭合。 |
|
检查区间是否在右侧闭合。 |
|
指示一个区间是否为空,即它不包含任何点。 |
|
区间的左边界。 |
|
返回 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()
构造函数:
|
从代码和类别或数据类型创建一个分类类型。 |
dtype 信息可以在 Categorical
上找到
这个实例的 |
|
这个分类的类别。 |
|
类别是否具有有序关系。 |
|
这个分类索引的类别代码。 |
np.asarray(categorical)
通过实现数组接口来工作。请注意,这将把 Categorical
转换回 NumPy 数组,因此类别和顺序信息不会被保留!
|
numpy 数组接口。 |
一个 Categorical
可以存储在一个 Series
或 DataFrame
中。要创建一个 dtype 为 category
的 Series,使用 cat = s.astype(dtype)
或 Series(..., dtype=dtype)
,其中 dtype
是
字符串
'category'
一个
CategoricalDtype
的实例。
如果 Series
是 CategoricalDtype
类型的,可以使用 Series.cat
来更改分类数据。更多信息请参见 Categorical 访问器。
在 Categorical
上有更多方法可用:
设置分类变量为有序。 |
|
将分类设置为无序。 |
|
|
将类别设置为指定的新类别。 |
|
重命名类别。 |
|
按照 new_categories 中的指定重新排序类别。 |
|
添加新类别。 |
移除指定的类别。 |
|
移除未使用的类别。 |
|
|
使用输入映射或函数映射类别。 |
Sparse#
数据中如果一个单一值被重复多次(例如 0
或 NaN
),可以高效地存储为一个 arrays.SparseArray
。
|
用于存储稀疏数据的 ExtensionArray。 |
|
存储在 |
Series.sparse
访问器可以用于访问特定的稀疏属性和方法,如果 Series
包含稀疏值。更多信息请参见 稀疏访问器 和 用户指南。
字符串#
在处理文本数据时,每个有效元素是一个字符串或缺失,我们推荐使用 StringDtype
(使用别名 "string"
)。
|
字符串数据的扩展数组。 |
|
|
|
字符串数据的扩展 dtype。 |
Series.str
访问器适用于由 arrays.StringArray
支持的 Series
。更多信息请参见 字符串处理。
可空布尔值#
布尔数据类型(带有别名 "boolean"
)提供了对存储布尔数据(True
,False
)以及缺失值的支持,这是使用布尔 numpy.ndarray
无法实现的。
|
包含缺失值的布尔(True/False)数据数组。 |
布尔数据的扩展 dtype。 |
实用工具#
构造函数#
|
合并类似列表的分类数据,联合类别。 |
|
返回一个标量或类似列表值的类型的字符串标签。 |
|
将输入转换为仅 pandas 的 dtype 对象或 numpy 的 dtype 对象。 |
数据类型自省#
|
检查提供的数组或dtype是否为实数dtype。 |
|
检查提供的数组或dtype是否为布尔dtype。 |
|
(已弃用)检查数组类或dtype是否为Categorical dtype。 |
|
检查提供的数组或dtype是否为复数dtype。 |
|
检查提供的数组或dtype是否为datetime64 dtype。 |
|
检查一个类数组或dtype是否为datetime64 dtype。 |
|
检查提供的数组或dtype是否为datetime64[ns] dtype。 |
|
(已弃用) 检查一个类似数组或 dtype 是否为 DatetimeTZDtype dtype。 |
|
检查对象是否为 pandas 扩展数组类型。 |
|
检查提供的数组或dtype是否为浮点型dtype。 |
|
(已弃用) 检查提供的数组或 dtype 是否为 int64 dtype。 |
|
检查提供的数组或dtype是否为整数dtype。 |
|
(已弃用)检查数组类或数据类型是否为区间数据类型。 |
|
检查提供的数组或dtype是否为数值型dtype。 |
|
检查一个类似数组或dtype是否是对象dtype。 |
|
(已弃用)检查数组类或数据类型是否为 Period 数据类型。 |
|
检查提供的数组或dtype是否为有符号整数dtype。 |
|
检查提供的数组或dtype是否为字符串dtype。 |
|
检查一个类数组或dtype是否为timedelta64 dtype。 |
|
检查提供的数组或dtype是否为timedelta64[ns] dtype。 |
|
检查提供的数组或dtype是否为无符号整数dtype。 |
|
(已弃用) 检查一个类数组对象是否是1维的pandas稀疏数组。 |
可迭代内省#
检查对象是否为类似字典的类型。 |
|
检查对象是否为类文件对象。 |
|
|
检查对象是否为类列表。 |
检查对象是否为命名元组。 |
|
检查对象是否为迭代器。 |
标量自省#
|
如果给定的对象是布尔值,则返回 True。 |
|
如果给定的对象是复数,则返回 True。 |
|
如果给定的对象是浮点数,则返回 True。 |
如果 hash(obj) 将成功,则返回 True,否则返回 False。 |
|
|
如果给定的对象是整数,则返回 True。 |
|
检查对象是否为数字。 |
|
检查对象是否为正则表达式模式实例。 |
检查对象是否可以编译成正则表达式模式实例。 |
|
|
如果给定的对象是标量,则返回 True。 |