こんにちは,shun(@datasciencemore)です!!
今回はassignについて学習していきます.
assignは,列の追加・更新をするメソッドです.
既存の列を更新したり,新規の列を追加したりすることができます.
今回はdiamondsデータを使用します.
diamondsデータをそのまま使用すると列数が多いので,必要な列のみを抽出しています.
0.準備
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# パッケージ読み込み import numpy as np import polars as pl import seaborn as sns # データフレームの表示行数を指定 pl.Config.set_tbl_rows(8) # データ読み込みと列選択(メソッドチェーン) df = \ pl\ .from_pandas(sns.load_dataset('diamonds'))\ .select("depth", "table", "color") |
pl.litで定数のベクトルを作成することができます。
1 2 3 4 5 6 7 |
# color列を更新,new_1列とnew_2列を追加 # pl.litで定数のベクトルを作成 df.with_columns( color = pl.lit("color"), new_1 = pl.lit(1), new_2 = pl.lit(2) ) |
ベクトルを指定する箇所でスカラを指定していますが,スカラを指定すると自動的にブロードキャストされ,ベクトルになります.
1.with_columnsの基本
with_columnsの基本的な使い方として、
こんな感じで,pl.colでデータフレームの列をベクトルとして抽出し、それを利用して作成した新しいベクトルを新しい列として追加することが出来ます。
1 2 3 4 |
# depth列を2倍したベクトルをnew列に追加 df.with_columns( new = pl.col("depth") * 2 ) |
3.条件による分岐(単数条件)
ここでwith_columnsを使用した応用例について紹介します.
with_columnsとwhenを使用すると条件により処理を切り替えることができます.
例えば,この列の数値が5以上なら処理1で5未満なら処理0でという感じです.
こちらについては,言葉だけだとよくわからないと思うので,実際にコーディングして理解を深めていただければと思います.
1 2 3 4 5 6 7 8 9 |
# color列が"E"⇒"E"をnew列に追加, # それ以外⇒"not_E"をnew列に追加 df.with_columns( new = pl.when(pl.col("color") == "E") .then("E") .otherwise("not_E") ) |
4.条件による分岐(複数条件)
条件が複数ある場合でもwith_columnsとwhenを使用して、条件によって処理を切り替えることができます.
1 2 3 4 5 6 7 8 9 10 11 12 |
# color列が"E"⇒"E"をnew列に追加 # color列が"I"⇒"I"をnew列に追加 # それ以外⇒"not_E_I"をnew列に追加 df.with_columns( new = pl.when(pl.col("color") == "E") .then("E") .when(pl.col("color") == "I") .then("I") .otherwise("not_E_I") ) |
まとめ
今回は,with_columns:列の追加・更新について学習してきました.
with_columnsもfilter, selectと同様,使用頻度がとても高いので,ぜひ使いこなせるようになってください!!
それでは,お疲れさまでした!!