Python PR

【Python】pandas.DataFrame.maskの使い方 -条件を満たす値を任意の値に変換-

pandas.DataFrame.mask
記事内に商品プロモーションを含む場合があります

こんにちは。現役エンジニアの”はやぶさ”@Cpp_Learningです。

今回はデータ分析などに役立つ Pandas の mask() を紹介します。

やりたいこと -条件を満たす値を任意の値に置き換える-

データ分析などでPandasのDataFrameを使う際、以下のように条件を満たす値を任意の値に置き換えたいときがあります。

Before

データフレーム内の偶数にマスクする

A B C
After

負数に置き換える

A B C
-2
-4
-6 -8

この例でいう”条件””任意の値に置き換える処理(以下 変換処理)”は以下の通りです。

  • 条件:データフレーム内の偶数
  • 変換処理:条件を満たす値に”-1”をかける

Pandasの mask() を使えば、このような処理を簡単に実現できます。

pandas.DataFrame.maskを使い方 -基礎編-

いくつかサンプルコードを作成してみます。

サンプル❶ -偶数を負数に変換-

最初に紹介した偶数を負数に変換する処理は以下のコードで実現できます。

改めて、イメージを載せておきます(下記参照)

Before

データフレーム内の偶数にマスクする

A B C
After

負数に置き換える

A B C
-2
-4
-6 -8

以降のサンプルでは”import”のコードを省略します。

サンプル❷ -閾値以上の値を”0”に変換-

閾値以上の値を”0”に変換するコードは以下の通りです。

※閾値を”5”に設定

Before

データフレーム内の5以上にマスクする

A B C
After

”0”に置き換える

A B C

サンプル➌ -欠損データ(NaN)を”-1”に変換-

欠損データ(NaN)を”-1”に変換するコードは以下の通りです。

Before

データフレーム内のNaNにマスクする

A B C
NaN
NaN
After

“-1″に置き換える

A B C
-1
-1
スポンサーリンク

pandas.DataFrame.maskを使い方 -応用編-

ここまでのサンプルはデータフレーム全体に対する処理でしたが、任意の列(カラム)に対して処理することもできます。

サンプル❹ -C列の閾値より小さい値を”0”に変換し、D列に出力-

C列の”3″より小さい値を検索し、”0″に変換したものをD列に出力します。

Before

C列の”3″より小さい値にマスクする

A B C
After

”0”に置き換えて、D列に出力

A B C D

※C列のマスクしてない値については、何もぜずにD列へコピーされます

サンプル➎ -A列とB列の一部の値をコピーして、D列に出力-

最後に、A列とB列の一部の値をコピーしてD列に出力してみます。

Before

M列の”T”にマスクする(B列の一部の値を指定)

A B C M
T
F
T
After

A列をD列にコピーし、かつ一部をB列の値に変換して、D列に出力

A B C M D
T
F
T

※M列の”T”や”F”はラベルなどを想定

まとめ -pandas.DataFrame.maskを使い方-

データ分析などに役立つ Pandas の mask() について紹介し、いくつか実践的なサンプルも作成してみました。

今までfor文使って線形探索していた処理が、スッキリしたコードで実現できました。

本記事が、より良いソースコードを書くときの参考になれば嬉しいです。

はやぶさ
はやぶさ
私も良いコードを書くため、日々精進します!

 

PICK UP BOOKS

  • 数理モデル入門
    数理モデル
  • Jetoson Nano 超入門
    Jetoson Nano
  • 図解速習DEEP LEARNING
    DEEP LEARNING
  • Pythonによる因果分析
    Python