1. 使用頻度の高い列選択

データ分析では息を吐くかのように頻繁に列選択します。

この使用頻度の高い列選択ですが、実際に使用する場面では地味に悩みどころが多くて困ります。

locやilocで選択することが多く検索してみても情報が多いのですが、filterによる列選択が便利だったので使い方を整理します。

filterを使用することで列名の部分一致選択や正規表現マッチングを簡単に使用できます

私は今後は.locや.ilocよりも.filterを積極的に使用します。

2. filterの使用例

filterの使用例です。

サンプルデータを作成して列選択を試します。

2.1. サンプルデータの作成

サンプルデータで4変数のデータフレームを作成します。

create_sample_data.py
df = pd.DataFrame(
    dict(
        Value_mean=range(1, 10),
        Value_min=range(11, 20),
        Value_max=range(21, 30),
        Value_sum=range(31, 40),
    )
)

このデータフレームは下記の4変数をもっています。

4変数
  1. Value_mean

  2. Value_min

  3. Value_max

  4. Value_sum

2.2. 列選択

変数名のリストをfilterに渡すことで列を選択できます。

filter.py
df.filter(['Value_min', 'Value_max'])

3. 行選択を指示する:axis=0

filterは列選択だけではなく行選択でも使用できます。

行選択する場合にはaxis=0を指定します。

列選択の場合には指定しなくても大丈夫です。

4. like= : 部分一致

like= を指定することで列名の部分一致で選択することができます。

like.py
df.filter(like='Value_m')

5. regex= : 正規表現マッチング

私が一番有用だと考えているオプションです。

データ分析では列名にprefixやsuffixを付けて整理することが多い。

例えばValueという変数がある場合にmean min maxなど各種統計量を計算して新規の特徴量とする場合に下記のような変数名で整理します。

  • Value_mean

  • Value_min

  • Value_max

  • Value_sum

regexオプションを使用することで"n"で終わる変数を選択することができます

regex.py
df.filter(regex='n$')

6. 使用例のまとめ : jupyter notebook

使用例をjupyter notebookにまとめました。

7. まとめ

filterは便利です。積極的に使用していきましょう。

今回は以上です。