Polars
支持多种数据类型, 大致分为以下几类
import polars as pl
pl.Int8
, pl.Int16
, pl.Int32
, pl.Int64
,pl.UInt8
, pl.UInt16
, pl.UInt32
, pl.UInt64
pl.Float32
, pl.Float64
pl.List
pl.Struct
pl.Array
pl.Date
, pl.Datetime
, pl.Time
, pl.Duration
pl.String
, pl.Binary
, pl.Boolean
, pl.Enum
, pl.Object
所有类型都支持由特殊值 null
表示的缺失值, 不能与NaN
混淆
Polars提供两个核心的数据结构: Series
和 DataFrame
Series
包含一列相同类型的数据, 下面展示其基础用法, 可以在jupyter notebook
中运行
更详细的信息可以阅读Polars文档, IDE中查看很方便
name
: Series的名称
values
: Series的值, 支持pandas的Series, polars的Series, numpy的ndarray等
dtype
: Series中元素的数据类型.
strict
: 如果为True
(默认), 则推断的数据类型为第一个非null
值.
nan_to_null
: 如果使用numpy
数组创建此系列, 请指示如何处理np.nan
值. (此参数对非numpy
数据无作用)
def head(self, n: int = 10) -> Series
: 返回Series的前n行def tail(self, n: int = 10) -> Series
: 返回Series的最后n行def rename(self, name: str) -> Series
: 重命名Seriesdef arg_max(self) -> int | None
: 返回最大值的索引def arg_min(self) -> int | None
: 获取最小值的索引def max(self) -> int | float | Decimal | date | time | datetime | timedelta | str | bool | bytes | list | None
: 获取最大值def min(self) -> int | float | Decimal | date | time | datetime | timedelta | str | bool | bytes | list | None
: 获取最小值def abs(self) -> Series
: 每个元素的绝对值
DataFrame
是一个2维异构数据类型, 看成是一个表格, 要求每列名称唯一
以下是结果, 输出结果中会打印两部分 第一部分是DataFrame的元数据, 包含列名和数据类型(会自动推导) 第二部分是DataFrame的数据(数据量过多会自动截断)
def head(self, n: int = 5) -> DataFrame
: 返回DataFrame的前n行def tail(self, n: int = 5) -> DataFrame
: 返回DataFrame的最后n行df.schema
: Schema({'name': String, 'birthdate': Date, 'weight': Float64, 'height': Float64})
Schema
创建DataFrame时可以指定Schema, 描述每一列的数据类型
Polars
会默认推导每一列的数据类型
注意使用schema时如果不想指定某一列的数据类型, 可以使用None, 比如下面schema中
name
的值是None
注意age的数据类型被指定为UInt8
, 上面的例子中是Int64
使用
schema
时, 可以覆盖默认推导的数据类型, 而不是指定所有(比如列比较多的时候)
Polars 通常遵循 Float32 和 Float64 的 IEEE 754 浮点标准, 但有一些例外:
我对NaN还没有更多的理解, 等待日后更新