こんにちは,shun(@datasciencemore)です!!
今回はfilterについて学習していきます.
filterは,列を抽出するメソッドです.
条件を指定してあげると条件を満たした列を抽出してくれます.
1.filterの使い方
filterは,引数を指定することによって柔軟に列を抽出することができます.
引数は全部で3種類あります.
1つ目の引数は,itemsです.
こちらが一番標準的で単純に抽出したい列の列名をそのまま指定してあげればOKです.
なお,この引数itemsは省略することが出来ます.
続きまして2つ目の引数は,likeです.
こちらは,抽出したい列の列名の一部を指定することで,指定した部分が含まれる列名を抽出します.
続きまして3つ目の引数はregexです.
こちらは,抽出したい列の列名の一部を正規表現で指定することで,指定した部分が含まれる列名を抽出します.
ちなみに参考にfilterではないのですが,
select_dtypesというメソッドを使用すると指定したデータ型に該当する列を抽出します.
2.goodとbadの比較
列の抽出に関するgoodとbadを比較しましょう.
まずgoodは今まで説明してきたとおり,filterを使用する方法です.
次にbadの紹介です.
badはデータフレームの中に大かっこを二つ使って記述する方法です.
これがbadな理由は,シリーズと区別するのが難しいからです.
ちなみにシリーズは,大かっこ1つを使って記述します.
大かっこが1つなのか2つなのかを見分けるのは結構大変なので,
データフレームを抽出するのであれば,filterを使用する.
シリーズを抽出するのであれば,大かっこを使用する
と覚えるのがオススメです.
3.コーディング例
filterを使用して様々な条件で行を抽出しましょう!
今回は,irisデータを利用します.
0.準備
1 2 3 4 5 6 7 8 9 10 |
# パッケージ読み込み import pandas as pd import numpy as np import seaborn as sns # データフレームの表示行数を指定 pd.set_option('display.max_rows', 5) # データ読み込み df = sns.load_dataset("iris") |
一部,badの用法でも例示することがあります.
goodと比較して,どちらがいいか確認してみてください.
badの用法も重要です.
前述のとおり,goodとbadはあくまで僕の感想なので,どちらがいいか,最終的にはご自身で決めていただければと思います.
1.完全指定
1 2 |
# sepal_length列, species列を抽出 (引数itemsは省略可) df.filter(["sepal_length", "species"]) |
1 2 |
# sepal_length列を抽出 df.filter(["sepal_length"]) |
1 2 |
# bad:sepal_length列を抽出 df[["sepal_length"]] |
2.部分指定
1 2 |
# sepalが含まれる列名を抽出 df.filter(like = "sepal") |
3.正規表現指定
正規表現とは,端的に言うと複数の文字列を一つのパターンでマッチングさせるための表現方法のことです.
正規表現は奥が深いので,ここでは詳しく説明しません.
1 2 |
# 前方がseでenが含まれる列名を抽出 df.filter(regex="^se.*en.*") |
参考:データ型指定
1 2 |
# float型の列を抽出する df.select_dtypes(float) |
まとめ
今回は,filter:列の抽出について学習してきました.
列の抽出は,filterを使用する方法と[]を使用する方法がありますが,オススメはfilterになります.
filterにはitems,like,regexの3つの引数があり,それぞれを使い分けることで柔軟に列を抽出することができます.
それでは,お疲れさまでした!!
次回
-
【pandas】assign:列の追加・更新【データフレーム処理】
こんにちは,shun(@datasciencemore)です!! 今回はassignについて学習していきます. assignは,列の追加・更新をするメソッドです. 既存の列を更新したり,新規の列を追加 ...
続きを見る