🐡

Polars チートシート

2024/03/29に公開

備忘録的にまとめていきます。随時更新予定です。

データフレームの作成

import polars as pl

# リストからデータフレームを作成
df = pl.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})

# NumPyアレイからデータフレームを作成
import numpy as np
np_array = np.array([[1, 4], [2, 5], [3, 6]])
df = pl.DataFrame(np_array, columns=["A", "B"])

# CSVファイルからデータフレームを作成
df = pl.read_csv("data.csv")

# Parquetファイルからデータフレームを作成
df = pl.read_parquet("data.parquet")

データフレームの操作

# 列の選択
df_selected = df.select(["A", "B"])

# 列の追加
df_with_new_col = df.with_column(pl.lit(0).alias("C"))

# 列名の変更
df_renamed = df.rename({"A": "New_A", "B": "New_B"})

# 行のフィルタリング
df_filtered = df.filter(pl.col("A") > 1)

# 欠損値の削除
df_no_nulls = df.drop_nulls()

# 重複行の削除
df_no_duplicates = df.distinct()

# 行の並べ替え
df_sorted = df.sort("A")

# グループ化と集計
df_grouped = df.groupby("A").agg(pl.sum("B"))

結合とユニオン

# 内部結合
df_joined = df1.join(df2, on="key", how="inner")

# 外部結合
df_joined = df1.join(df2, on="key", how="outer")

# 左結合
df_joined = df1.join(df2, on="key", how="left")

# 右結合
df_joined = df1.join(df2, on="key", how="right")

# 行方向の結合(ユニオン)
df_unioned = df1.vstack(df2)

列の操作

# 列のデータ型変更
df_casted = df.with_column(pl.col("A").cast(pl.Int64))

# 条件に基づく値の置換
df_replaced = df.with_column(pl.when(pl.col("A") > 1).then(10).otherwise(pl.col("A")))

# 文字列による条件に基づく値の置換
df_replaced = df.with_column(
    pl.when(pl.col("A") == "apple")
    .then("fruit")
    .when(pl.col("A") == "banana")
    .then("fruit")
    .otherwise(pl.col("A"))
    .alias("A_category")
)
# 文字列の操作
df_uppercase = df.with_column(pl.col("B").str.to_uppercase())

# 日時データの操作
df_date = df.with_column(pl.col("date").dt.year())

欠損値の扱い

# 欠損値の置換
df_filled = df.fill_null(0)

# 前の行の値で欠損値を埋める
df_forward_filled = df.fill_null(strategy="forward")

# 後の行の値で欠損値を埋める
df_backward_filled = df.fill_null(strategy="backward")

データフレームのエクスポート

# CSVファイルにエクスポート
df.write_csv("output.csv")

# Parquetファイルにエクスポート
df.write_parquet("output.parquet")

参考

Discussion