🐡
Polars チートシート
備忘録的にまとめていきます。随時更新予定です。
データフレームの作成
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