pandas 数组、标量和数据类型#

对象#

Index对于大多数数据类型,pandas 使用 NumPy 数组作为、Series或 包含的具体对象DataFrame

对于某些数据类型,pandas 扩展了 NumPy 的类型系统。这些类型的字符串别名可以在dtypes中找到。

数据类型

熊猫数据类型

标量

大批

TZ 感知日期时间

DatetimeTZDtype

Timestamp

日期时间

时间增量

(没有任何)

Timedelta

时间增量

期间(时间跨度)

PeriodDtype

Period

经期

间隔

IntervalDtype

Interval

间隔

可空整数

Int64Dtype, …

(没有任何)

可空整数

可空浮点数

Float64Dtype, …

(没有任何)

可空浮点数

分类的

CategoricalDtype

(没有任何)

分类

SparseDtype

(没有任何)

弦乐

StringDtype

str

弦乐

可空布尔值

BooleanDtype

bool

可空布尔值

pyarrow

ArrowDtype

Python 标量或NA

pyarrow

pandas 和第三方库可以扩展 NumPy 的类型系统(请参阅扩展类型)。顶级array()方法可用于创建一个新数组,该数组可以存储在SeriesIndex或作为 中的列DataFrame

array(数据[,数据类型,副本])

创建一个数组。

PyArrow #

警告

此功能是实验性的,API 可能会在未来版本中更改,恕不另行通知。

arrays.ArrowExtensionArray由 a 支持,pyarrow.ChunkedArraypyarrow.DataType不是 NumPy 数组和数据类型。.dtypea 的是arrays.ArrowExtensionArray 一个ArrowDtype

Pyarrow提供与 NumPy 类似的数组和数据类型 支持,包括对所有数据类型的一流可空性支持、不变性等。

下表显示了pandas 识别的等效 pyarrow-backed ( pa)、pandas 扩展和 numpy ( ) 类型。np下面需要传递 Pyarrow 支持的类型ArrowDtype才能被 pandas 识别,例如pd.ArrowDtype(pa.bool_())

PyArrow 类型

pandas 扩展类型

NumPy 类型

pyarrow.bool_()

BooleanDtype

np.bool_

pyarrow.int8()

Int8Dtype

np.int8

pyarrow.int16()

Int16Dtype

np.int16

pyarrow.int32()

Int32Dtype

np.int32

pyarrow.int64()

Int64Dtype

np.int64

pyarrow.uint8()

UInt8Dtype

np.uint8

pyarrow.uint16()

UInt16Dtype

np.uint16

pyarrow.uint32()

UInt32Dtype

np.uint32

pyarrow.uint64()

UInt64Dtype

np.uint64

pyarrow.float32()

Float32Dtype

np.float32

pyarrow.float64()

Float64Dtype

np.float64

pyarrow.time32()

(没有任何)

(没有任何)

pyarrow.time64()

(没有任何)

(没有任何)

pyarrow.timestamp()

DatetimeTZDtype

np.datetime64

pyarrow.date32()

(没有任何)

(没有任何)

pyarrow.date64()

(没有任何)

(没有任何)

pyarrow.duration()

(没有任何)

np.timedelta64

pyarrow.binary()

(没有任何)

(没有任何)

pyarrow.string()

StringDtype

np.str_

pyarrow.decimal128()

(没有任何)

(没有任何)

pyarrow.list_()

(没有任何)

(没有任何)

pyarrow.map_()

(没有任何)

(没有任何)

pyarrow.dictionary()

CategoricalDtype

(没有任何)

笔记

pd.StringDtype("pyarrow")Pyarrow 支持的字符串支持由和提供pd.ArrowDtype(pa.string())。 下面在字符串部分pd.StringDtype("pyarrow")中进行了描述,如果指定了 字符串别名,则将返回该值。 通常与不同类型具有更好的互操作性。"string[pyarrow]"pd.ArrowDtype(pa.string())ArrowDtype

虽然 an 中的各个值arrays.ArrowExtensionArray存储为 PyArrow 对象,但标量将作为与数据类型相对应的 Python 标量返回 ,例如 PyArrow int64 将作为 Python int 返回,或者NA对于缺失值。

arrays.ArrowExtensionArray(数值)

由 PyArrow ChunkedArray 支持的 Pandas ExtensionArray。

ArrowDtype(pyarrow_dtype)

PyArrow 数据类型的 ExtensionDtype。

有关更多信息,请参阅PyArrow 用户指南

日期时间#

NumPy 本身无法表示时区感知的日期时间。 pandas 通过扩展数组支持这一点arrays.DatetimeArray,它可以保存时区原始值或时区感知值。

Timestamp是 的子类datetime.datetime,是 pandas 的标量类型,用于时区朴素或时区感知的日期时间数据。NaT 是日期时间数据的缺失值。

Timestamp([ts_input,年,月,日,...])

Pandas 替换 python datetime.datetime 对象。

特性

Timestamp.asm8

返回 numpy datetime64 格式(以纳秒为单位)。

Timestamp.day

Timestamp.dayofweek

返回星期几。

Timestamp.day_of_week

返回星期几。

Timestamp.dayofyear

返回一年中的第几天。

Timestamp.day_of_year

返回一年中的第几天。

Timestamp.days_in_month

返回该月的天数。

Timestamp.daysinmonth

返回该月的天数。

Timestamp.fold

Timestamp.hour

Timestamp.is_leap_year

如果年份是闰年,则返回 True。

Timestamp.is_month_end

检查日期是否是该月的最后一天。

Timestamp.is_month_start

检查日期是否是该月的第一天。

Timestamp.is_quarter_end

检查日期是否是该季度的最后一天。

Timestamp.is_quarter_start

检查日期是否为季度的第一天。

Timestamp.is_year_end

如果日期是一年中的最后一天,则返回 True。

Timestamp.is_year_start

如果日期是一年中的第一天,则返回 True。

Timestamp.max

Timestamp.microsecond

Timestamp.min

Timestamp.minute

Timestamp.month

Timestamp.nanosecond

Timestamp.quarter

返回一年中的季度。

Timestamp.resolution

Timestamp.second

Timestamp.tz

tzinfo 的别名。

Timestamp.tzinfo

Timestamp.unit

与 self._creso 相关的缩写。

Timestamp.value

Timestamp.week

返回一年中的周数。

Timestamp.weekofyear

返回一年中的周数。

Timestamp.year

方法

Timestamp.as_unit(单位[, round_ok])

将底层 int64 表示形式转换为给定单位。

Timestamp.astimezone(兹)

将时区感知时间戳转换为另一个时区。

Timestamp.ceil(freq[, 不明确, 不存在])

返回此分辨率上限的新时间戳。

Timestamp.combine(约会时间)

将日期、时间合并为具有相同日期和时间字段的日期时间。

Timestamp.ctime()

返回 ctime() 样式字符串。

Timestamp.date()

返回具有相同年、月、日的日期对象。

Timestamp.day_name([语言环境])

返回具有指定区域设置的时间戳的日期名称。

Timestamp.dst()

返回夏令时 (DST) 调整。

Timestamp.floor(freq[, 不明确, 不存在])

返回一个基于此分辨率的新时间戳。

Timestamp.fromordinal(序数[,tz])

从一个预推的格里高利序数构造一个时间戳。

Timestamp.fromtimestamp(TS)

将 timestamp[, tz] 从 POSIX 时间戳转换为 tz 的本地时间。

Timestamp.isocalendar()

返回包含 ISO 年份、周数和工作日的命名元组。

Timestamp.isoformat([九月,时间规范])

返回根据 ISO 8601 格式化的时间。

Timestamp.isoweekday()

返回日期所代表的星期几。

Timestamp.month_name([语言环境])

返回具有指定区域设置的时间戳的月份名称。

Timestamp.normalize()

将时间戳标准化为午夜,保留 tz 信息。

Timestamp.now([兹])

返回表示 tz 本地当前时间的新 Timestamp 对象。

Timestamp.replace([年、月、日、小时...])

实现 datetime.replace,处理纳秒。

Timestamp.round(freq[, 不明确, 不存在])

将时间戳舍入到指定的分辨率。

Timestamp.strftime(格式)

返回时间戳的格式化字符串。

Timestamp.strptime(字符串、格式)

功能未实现。

Timestamp.time()

返回具有相同时间但 tzinfo=None 的时间对象。

Timestamp.timestamp()

以浮点数形式返回 POSIX 时间戳。

Timestamp.timetuple()

返回时间元组,与time.localtime()兼容。

Timestamp.timetz()

返回具有相同时间和tzinfo的时间对象。

Timestamp.to_datetime64()

返回具有相同精度的 numpy.datetime64 对象。

Timestamp.to_numpy([数据类型,复制])

将时间戳转换为 NumPy datetime64。

Timestamp.to_julian_date()

将时间戳转换为儒略日期。

Timestamp.to_period([频率])

返回此时间戳是一个观察值的时间段。

Timestamp.to_pydatetime([警告])

将 Timestamp 对象转换为本机 Python 日期时间对象。

Timestamp.today([兹])

返回本地时区的当前时间。

Timestamp.toordinal()

返回未推算的格里高利序数。

Timestamp.tz_convert(兹)

将时区感知时间戳转换为另一个时区。

Timestamp.tz_localize(tz[, 不明确, ...])

将时间戳本地化为时区。

Timestamp.tzname()

返回时区名称。

Timestamp.utcfromtimestamp(TS)

从 POSIX 时间戳构造一个时区感知的 UTC 日期时间。

Timestamp.utcnow()

返回代表 UTC 日期和时间的新时间戳。

Timestamp.utcoffset()

返回 utc 偏移量。

Timestamp.utctimetuple()

返回UTC时间元组,与time.localtime()兼容。

Timestamp.weekday()

返回日期所代表的星期几。

时间戳的集合可以存储在arrays.DatetimeArray.对于时区感知数据,.dtypeaarrays.DatetimeArray是 a DatetimeTZDtype。对于时区原始数据,np.dtype("datetime64[ns]") 使用。

如果数据是时区感知的,则数组中的每个值都必须具有相同的时区。

arrays.DatetimeArray(值[,数据类型,频率,复制])

Pandas ExtensionArray 用于 tz-naive 或 tz-aware 日期时间数据。

DatetimeTZDtype([单位,tz])

用于时区感知日期时间数据的 ExtensionDtype。

时间增量#

NumPy 本身可以表示时间增量。 pandas 提供Timedelta 了对称性TimestampNaT 是 timedelta 数据的缺失值。

Timedelta([值,单位])

表示持续时间,即两个日期或时间之间的差异。

特性

Timedelta.asm8

返回 numpy timedelta64 数组标量视图。

Timedelta.components

返回一个类似于元组的组件。

Timedelta.days

返回 timedelta 的天数。

Timedelta.max

Timedelta.microseconds

Timedelta.min

Timedelta.nanoseconds

返回纳秒数 (n),其中 0 <= n < 1 微秒。

Timedelta.resolution

Timedelta.seconds

返回 timedelta 的总小时数、分钟数和秒数(以秒为单位)。

Timedelta.unit

Timedelta.value

Timedelta.view(数据类型)

数组视图兼容性。

方法

Timedelta.as_unit(单位[, round_ok])

将底层 int64 表示形式转换为给定单位。

Timedelta.ceil(频率)

返回此分辨率上限的新 Timedelta。

Timedelta.floor(频率)

返回一个以此分辨率为底的新 Timedelta。

Timedelta.isoformat()

将 Timedelta 格式化为 ISO 8601 持续时间。

Timedelta.round(频率)

将 Timedelta 舍入到指定的分辨率。

Timedelta.to_pytimedelta()

将 pandas Timedelta 对象转换为 pythondatetime.timedelta对象。

Timedelta.to_timedelta64()

返回精度为 'ns' 的 numpy.timedelta64 对象。

Timedelta.to_numpy([数据类型,复制])

将 Timedelta 转换为 NumPy timedelta64。

Timedelta.total_seconds()

持续时间的总秒数。

的集合Timedelta可以存储在TimedeltaArray.

arrays.TimedeltaArray(值[,数据类型,频率,...])

用于时间增量数据的 Pandas ExtensionArray。

期间#

pandas 将时间跨度表示为Period对象。

时期

Period([值、频率、序数、年、月...])

代表一段时间。

特性

Period.day

获取一个期间所在月份的日期。

Period.dayofweek

该期间所在的星期几,星期一=0,星期日=6。

Period.day_of_week

该期间所在的星期几,星期一=0,星期日=6。

Period.dayofyear

返回一年中的第几天。

Period.day_of_year

返回一年中的第几天。

Period.days_in_month

获取该期间所在月份的总天数。

Period.daysinmonth

获取该期间所在月份的总天数。

Period.end_time

获取该期间结束的时间戳。

Period.freq

Period.freqstr

返回频率的字符串表示形式。

Period.hour

获取期间的一天中的小时部分。

Period.is_leap_year

如果该期间的年份是闰年,则返回 True。

Period.minute

获取期间的小时部分的分钟。

Period.month

返回此期间所在的月份。

Period.ordinal

Period.quarter

返回该期间所属的季度。

Period.qyear

该期间所在的会计年度根据其起始季度而定。

Period.second

获取周期的第二个组成部分。

Period.start_time

获取该期间开始的时间戳。

Period.week

获取给定期间的一年中的第几周。

Period.weekday

该期间所在的星期几,星期一=0,星期日=6。

Period.weekofyear

获取给定期间的一年中的第几周。

Period.year

返回此期间所在的年份。

方法

Period.asfreq(频率[,如何])

在间隔的开始或结束处将周期转换为所需的频率。

Period.now(频率)

返回当前日期的时间段。

Period.strftime(FMMT)

返回 的格式化字符串表示形式Period

Period.to_timestamp([频率,方式])

返回周期的时间戳表示形式。

的集合Period可以存储在arrays.PeriodArray. a中的每个时期都arrays.PeriodArray必须有相同的freq

arrays.PeriodArray(值[,数据类型,频率,复制])

Pandas ExtensionArray 用于存储周期数据。

PeriodDtype(频率)

周期数据的 ExtensionDtype。

间隔#

任意间隔可以表示为Interval对象。

Interval

实现 Interval 的不可变对象,一个有界的切片状间隔。

特性

Interval.closed

描述间隔包含端的字符串。

Interval.closed_left

检查左侧区间是否闭合。

Interval.closed_right

检查区间右侧是否闭合。

Interval.is_empty

指示区间是否为空,即不包含点。

Interval.left

区间的左边界。

Interval.length

返回间隔的长度。

Interval.mid

返回间隔的中点。

Interval.open_left

检查左侧间隔是否打开。

Interval.open_right

检查右侧间隔是否打开。

Interval.overlaps(其他)

检查两个 Interval 对象是否重叠。

Interval.right

区间的右界。

间隔的集合可以存储在arrays.IntervalArray.

arrays.IntervalArray(数据[,关闭,数据类型,...])

Pandas 数组用于在同一侧闭合的区间数据。

IntervalDtype([子类型,关闭])

间隔数据的 ExtensionDtype。

可为空整数#

numpy.ndarray无法本机表示缺失值的整数数据。 pandas 通过arrays.IntegerArray.

arrays.IntegerArray(值,掩码[,复制])

整数(可选缺失)值数组。

Int8Dtype()

int8 整数数据的 ExtensionDtype。

Int16Dtype()

int16 整数数据的 ExtensionDtype。

Int32Dtype()

int32 整数数据的 ExtensionDtype。

Int64Dtype()

int64 整数数据的 ExtensionDtype。

UInt8Dtype()

uint8 整数数据的 ExtensionDtype。

UInt16Dtype()

uint16 整数数据的 ExtensionDtype。

UInt32Dtype()

uint32 整数数据的 ExtensionDtype。

UInt64Dtype()

uint64 整数数据的 ExtensionDtype。

可空浮点数#

arrays.FloatingArray(值,掩码[,复制])

浮动(可选缺失)值数组。

Float32Dtype()

float32 数据的 ExtensionDtype。

Float64Dtype()

float64 数据的 ExtensionDtype。

分类#

pandas 定义了一种自定义数据类型,用于表示只能采用有限的、固定的值集的数据。 a 的 dtypeCategorical可以用 a 来描述CategoricalDtype

CategoricalDtype([类别,已排序])

输入具有类别和顺序的分类数据。

CategoricalDtype.categories

包含Index允许的唯一类别。

CategoricalDtype.ordered

类别是否具有有序关系。

分类数据可以存储在pandas.Categorical

Categorical(值[、类别、有序、...])

以经典 R/S-plus 方式表示分类变量。

Categorical.from_codes()当您已经拥有类别和整数代码时,可以使用替代构造函数:

Categorical.from_codes(代码[、类别、...])

从代码和类别或 dtype 中创建分类类型。

dtype 信息可在Categorical

Categorical.dtype

对于CategoricalDtype这个例子。

Categorical.categories

此分类的类别。

Categorical.ordered

类别是否具有有序关系。

Categorical.codes

该分类索引的类别代码。

np.asarray(categorical)通过实现数组接口来工作。请注意,这会将其转换Categorical回 NumPy 数组,因此不会保留类别和顺序信息!

Categorical.__array__([数据类型,复制])

numpy 数组接口。

ACategorical可以存储在 aSeries或中DataFrame。要创建一系列 dtype category,请使用或 其中是cat = s.astype(dtype)Series(..., dtype=dtype)dtype

如果Series是 dtype CategoricalDtypeSeries.cat则可用于更改分类数据。有关更多信息,请参阅分类访问器

稀疏#

单个值重复多次(例如0NaN)的数据可以有效地存储为arrays.SparseArray.

arrays.SparseArray(数据[,稀疏索引,...])

用于存储稀疏数据的 ExtensionArray。

SparseDtype([数据类型,填充值])

存储在SparseArray.

如果包含稀疏值,则访问Series.sparse器可用于访问稀疏特定的属性和方法Series。有关更多信息,请参阅 稀疏访问器用户指南

字符串#

处理文本数据时,每个有效元素都是字符串或缺失,我们建议使用StringDtype(与别名"string")。

arrays.StringArray(值[,复制])

字符串数据的扩展数组。

arrays.ArrowStringArray(数值)

pyarrow.ChunkedArray.a中字符串数据的扩展数组

StringDtype([贮存])

字符串数据的扩展数据类型。

该访问器Series.str可由Series.有关更多信息,arrays.StringArray请参阅字符串处理

可空布尔值#

boolean 数据类型(带有别名"boolean")支持存储带有缺失值的布尔数据(True, False),而 bool 则无法做到这一点numpy.ndarray

arrays.BooleanArray(值,掩码[,复制])

具有缺失值的布尔(True/False)数据数组。

BooleanDtype()

布尔数据的扩展数据类型。

实用程序#

构造函数#

api.types.union_categoricals(to_union[, ...])

将类列表的类联合类别组合起来。

api.types.infer_dtype(值[,跳过])

返回标量或类似列表的值类型的字符串标签。

api.types.pandas_dtype(数据类型)

将输入转换为 pandas only dtype 对象或 numpy dtype 对象。

数据类型自省#

api.types.is_any_real_numeric_dtype(arr_or_dtype)

检查提供的数组或数据类型是否为实数数据类型。

api.types.is_bool_dtype(arr_or_dtype)

检查提供的数组或数据类型是否为布尔数据类型。

api.types.is_categorical_dtype(arr_or_dtype)

(已弃用)检查类似数组或数据类型是否属于分类数据类型。

api.types.is_complex_dtype(arr_or_dtype)

检查提供的数组或数据类型是否为复杂数据类型。

api.types.is_datetime64_any_dtype(arr_or_dtype)

检查提供的数组或数据类型是否为 datetime64 数据类型。

api.types.is_datetime64_dtype(arr_or_dtype)

检查类似数组或数据类型是否属于 datetime64 数据类型。

api.types.is_datetime64_ns_dtype(arr_or_dtype)

检查提供的数组或数据类型是否为 datetime64[ns] 数据类型。

api.types.is_datetime64tz_dtype(arr_or_dtype)

(已弃用)检查类似数组或数据类型是否属于 DatetimeTZDtype 数据类型。

api.types.is_extension_array_dtype(arr_or_dtype)

检查一个对象是否是 pandas 扩展数组类型。

api.types.is_float_dtype(arr_or_dtype)

检查提供的数组或数据类型是否为浮点数据类型。

api.types.is_int64_dtype(arr_or_dtype)

(已弃用)检查提供的数组或数据类型是否为 int64 数据类型。

api.types.is_integer_dtype(arr_or_dtype)

检查提供的数组或数据类型是否为整数数据类型。

api.types.is_interval_dtype(arr_or_dtype)

(已弃用)检查类似数组或 dtype 是否属于 Interval dtype。

api.types.is_numeric_dtype(arr_or_dtype)

检查提供的数组或数据类型是否为数字数据类型。

api.types.is_object_dtype(arr_or_dtype)

检查类似数组或数据类型是否属于对象数据类型。

api.types.is_period_dtype(arr_or_dtype)

(已弃用)检查类似数组或数据类型是否属于周期数据类型。

api.types.is_signed_integer_dtype(arr_or_dtype)

检查提供的数组或数据类型是否为有符号整数数据类型。

api.types.is_string_dtype(arr_or_dtype)

检查提供的数组或数据类型是否为字符串数据类型。

api.types.is_timedelta64_dtype(arr_or_dtype)

检查类似数组或数据类型是否属于 timedelta64 数据类型。

api.types.is_timedelta64_ns_dtype(arr_or_dtype)

检查提供的数组或数据类型是否为 timedelta64[ns] 数据类型。

api.types.is_unsigned_integer_dtype(arr_or_dtype)

检查提供的数组或数据类型是否为无符号整数数据类型。

api.types.is_sparse(编)

(已弃用)检查类似数组是否是一维 pandas 稀疏数组。

可迭代的内省#

api.types.is_dict_like(对象)

检查对象是否类似于字典。

api.types.is_file_like(对象)

检查该对象是否是类文件对象。

api.types.is_list_like(obj[, 允许集])

检查对象是否类似于列表。

api.types.is_named_tuple(对象)

检查对象是否是命名元组。

api.types.is_iterator(对象)

检查该对象是否是迭代器。

标量内省#

api.types.is_bool(对象)

如果给定对象是布尔值,则返回 True。

api.types.is_complex(对象)

如果给定对象很复杂,则返回 True。

api.types.is_float(对象)

如果给定对象是浮点数,则返回 True。

api.types.is_hashable(对象)

如果 hash(obj) 成功则返回 True,否则返回 False。

api.types.is_integer(对象)

如果给定对象是整数,则返回 True。

api.types.is_interval(对象)

api.types.is_number(对象)

检查对象是否是数字。

api.types.is_re(对象)

检查对象是否是正则表达式模式实例。

api.types.is_re_compilable(对象)

检查该对象是否可以编译为正则表达式模式实例。

api.types.is_scalar(值)

如果给定对象是标量,则返回 True。