说明
《Python Polars》 教程正在筹划更新中,敬请期待!Polars 是一个高性能的数据处理库,特别适用于大数据集和需要并行计算的场景。如果你在处理大数据时遇到性能瓶颈,可以考虑尝试 Polars,它的延迟计算和并行化机制可以显著提升处理效率。
Polars 的内部数据类型设计强调高效性和灵活性,其核心由 Rust 提供的强类型系统支持,结合了内存优化和矢量化计算的特点。Polars 使用 Arrow 列式格式 作为其数据组织方式。遵循这一规范使 Polars 能够以几乎没有开销的方式与其他同样使用 Arrow 规范的工具之间传输数据。Polars 的高性能主要来源于以下几个方面:其查询引擎的强大功能,对查询计划所执行的优化,以及在运行表达式时所采用的并行化处理方式。
Polars 支持多种数据类型,大致分为以下几类:
共 18 种 25 个。
所有类型都支持由特殊值 null 表示的缺失值。这不能与浮点数数据类型中的特殊值 NaN 混为一谈;有关更多信息,可学习关浮点数的部分。
以下是根据提供信息整理的 Polars 数据类型表格:
类型 | 介绍 |
---|---|
Boolean | Boolean 类型,高效地进行位打包存储。 |
Int8, Int16, Int32, Int64 | 各种精度的有符号整数类型。 |
UInt8, UInt16, UInt32, UInt64 | 各种精度的无符号整数类型。 |
Float32, Float64 | 各种精度的有符号浮点数。 |
Decimal | 128 位精度的小数类型,可选精度和非负标度。适用于需要精确控制浮点数精度及操作的场景。参考 Python 的 decimal.Decimal 以了解更多关于小数数据类型的文档。 |
String | 可变长度的 UTF-8 编码字符串数据,通常是人类可读的文本。 |
Binary | 存储任意的、可变长度的原始二进制数据。 |
Date | 表示日历日期。 |
Time | 表示一天中的时间。 |
Datetime | 表示日历日期和一天中的时间。 |
Duration | 表示时间持续的长度。 |
Array | 每个 Series 都具有已知固定形状的数组,类似于 numpy 数组。可以进一步了解数组和列表的区别及如何使用两者。 |
List | 同质的一维容器,长度可变。可以进一步了解数组和列表的区别及如何使用两者。 |
Object | 封装任意的 Python 对象。 |
Categorical | 高效编码字符串数据,类别在运行时推断。可以进一步了解分类变量和枚举的区别及如何使用两者。 |
Enum | 高效有序编码一组预定义的字符串类别。可以进一步了解分类变量和枚举的区别及如何使用两者。 |
Struct | 复合类型,可存储多个字段。可以在专门的文档部分中了解 Struct 数据类型的更多信息。 |
Null | 表示空值。 |
注:Int128 为 1.18.0 版本新增的类型,目前不是很稳定。
Polars 的内部数据类型设计强调高效性和灵活性,其核心由 Rust 提供的强类型系统支持,结合了内存优化和矢量化计算的特点。以下是 Polars 内部数据类型的关键要点:
Polars 提供的基础类型直接映射到底层高性能实现,涵盖常见的数据分析需求:
Int8
、Int16
、Int32
、Int64
。UInt8
、UInt16
、UInt32
、UInt64
。Float32
、Float64
。Decimal
):适合精确的金融计算。Boolean
,用于逻辑运算。Utf8
,支持高效的字符串存储和操作。Polars 提供了丰富的时间类型,便于处理时序数据:
Date
:仅表示日期(年、月、日)。Datetime
:支持纳秒精度,带时区信息。Time
:仅表示一天中的时间。Duration
:表示时间差,适合计算时间间隔。为了处理复杂数据结构,Polars 提供以下嵌套类型:
List
:表示一列嵌套的列表,支持存储动态长度的数据。Struct
:支持多列的嵌套结构,类似于嵌套的字典或 JSON。null
表示。NaN
(Not a Number),与 null
语义不同。null
表示未知值,NaN
表示无效计算结果(如 0/0
)。cast
方法)。Utf8
或 Int64
)。Polars 的数据类型设计核心是高性能、灵活性和扩展性,适用于现代数据处理任务,无论是大规模数据的批处理,还是动态和复杂数据的实时分析。
更新时间:2024-12-29 20:24:03 标签:polars python 数据类型