概要
Polars は完全に Arrow データ型に基づいており、Arrow メモリー配列によってサポートされています。これにより、データ処理がキャッシュ効率的で、プロセス間通信にも適しています。ほとんどのデータ型は Arrow の正確な実装に従っていますが、String
(実際には LargeUtf8
)、Categorical
、Object
(サポートは限定的)は例外です。データ型は以下の通りです:
グループ | 型 | 詳細 |
---|---|---|
数値型 | Int8 |
8 ビット符号付き整数。 |
Int16 |
16 ビット符号付き整数。 | |
Int32 |
32 ビット符号付き整数。 | |
Int64 |
64 ビット符号付き整数。 | |
UInt8 |
8 ビット符号なし整数。 | |
UInt16 |
16 ビット符号なし整数。 | |
UInt32 |
32 ビット符号なし整数。 | |
UInt64 |
64 ビット符号なし整数。 | |
Float32 |
32 ビット浮動小数点。 | |
Float64 |
64 ビット浮動小数点。 | |
ネスト型 | Struct |
Struct 配列は Vec<Series> として表現され、複数の/異種の値を単一のカラムにパックするのに便利です。 |
List |
List 配列には、List 値を含む子配列と、オフセット配列が含まれます(内部的には実際は Arrow の LargeList )。 |
|
時間型 | Date |
日付表現。内部的には UNIX エポックからの日数を 32 ビット符号付き整数でエンコードしています。 |
Datetime |
日時表現。内部的には UNIX エポックからのマイクロ秒を 64 ビット符号付き整数でエンコードしています。 | |
Duration |
タイムデルタ型。内部的にはマイクロ秒で表現されます。Date/Datetime の差分から作成されます。 |
|
Time |
時間表現。内部的には午前 0 時からのナノ秒で表現されます。 | |
その他 | Boolean |
効果的にビットパックされた真偽値型。 |
String |
文字列データ(内部的には実際は Arrow の LargeUtf8 )。 |
|
Binary |
バイトデータを格納します。 | |
Object |
任意の値を格納できる、限定的にサポートされているデータ型。 | |
Categorical |
一連の文字列のカテゴリカルエンコーディング。 | |
Enum |
一連の文字列の固定カテゴリカルエンコーディング。 |
これらのデータ型の内部表現の詳細については、Arrow 列形式を確認してください。
浮動小数点
Polars は一般的に IEEE 754 浮動小数点規格に従いますが、いくつかの例外があります:
- NaNは他のすべてのNaNと等価であるとみなされ、非NaN値よりも大きいと比較されます。
- 演算においては、ゼロの符号やNaNの挙動、NaNのペイロード値について、特定の動作が保証されているわけではありません。これは算術演算だけでなく、ソートやグループ化などの操作にも当てはまります。効率的な等価性チェックを行うために、すべてのゼロは+0に、すべてのNaNは正のNaNに正規化(キャノニカル化)される場合があります。
Polars は常に浮動小数点計算に対して合理的に正確な結果を提供しようとしますが、特に言及がない限り、エラーが発生する可能性があります。一般的に、100% 正確な結果を得るのは非常に高価であり(64 ビットの浮動小数点よりも大きな内部表現が必要)、常にある程度のエラーが発生することが予想されます。