
こんにちは、TAKです。
今回は、pythonのpandasを用いてデータフレームに含まれる「文字列」を抽出する方法を解説していきます。
以前、似たようなタイトルの記事「pandasでデータフレームから値を取得」を書いたのですが、前回はデータフレームから「行や列の値」を取得する方法を解説したのに対して、今回はデータフレームの列(カラム)内に含まれる「文字列」を取得する方法を解説していきます。
あるカラムのデータを丸ごと取得するのではなく、「特定の文字列で始まる(終わる)データや、特定の文字列が含まれるデータを抽出したい」といった疑問に応える記事となっています。
【こんな人に読んで欲しい記事です】
● pandasを使って「データフレームに含まれる文字列」を抽出出来るようになりたい方
● pandasを用いたデータフレーム操作のレベルアップを図りたい方
コンテンツもくじ
必要ライブラリのインポート

いつも通り、必要なライブラリをインポートしておきます。
今回はpandasだけでOKです。
利用データの作成
文字列が含まれているデータセットであれば何でも大丈夫なので、この記事を見ている方はご自分が持っているデータで確認してみてください。僕は手元にタイタニックデータがあるので、これを使っていこうかと思います。
以下のようにしてデータを読み込みデータフレーム化しておきます。

このデータを用いて、特定の文字列を抽出する方法を3つほど見ていきたいと思います。
データフレームからの抽出方法①|○○で始まる文字列を抽出
まずは、「○○で始まる文字列」を抽出する方法です。
データセット内にある「Ticket」カラムは文字列なので、これを使ってみます。
TicketのNoに規則性はなさそうですが、最初のデータのようにTicket Noが「A/5」から始まる乗船者のデータを抽出してみましょう。

出力結果の赤枠部分の「冒頭」を見てもらえれば分かる通り、「A/5」で始まるTicketを抽出出来ました。
ポイントは以下2点となります。
【ポイント①】 「df[column名].str」で文字列にアクセス出来るようになる
【ポイント②】 ○○で始まる文字列の抽出には「startswith(○○)」を使う
データフレームからの抽出方法②|○○で終わる文字列を抽出
次に、「○○で終わる文字列」を抽出する方法を見てみます。
先ほどと同様に、カラム「Ticket」を使いましょう。
今度は、最初のデータのようにTicket Noが「71」で終わっている乗船者のデータを抽出してみます。

すると、出力結果の赤枠部分のように、最後の部分がすべて「71」になっていますね。
(見た目上は)「71」という数字を抽出していますが、この「Ticket」カラムでは文字列として認識されている点だけ注意です。
ここでのポイントは以下2点です。
【ポイント①】 「df[column名].str」で文字列にアクセス出来るようになる
【ポイント②】 ○○で終わる文字列の抽出には「endswith(○○)」を使う
データフレームからの抽出方法③|○○が含まれる文字列を抽出
最後に、「○○が含まれる文字列」を抽出する方法を紹介します。
今度は気分を変えてカラム「Name」を使ってみましょう。
色々な名前がありそうですが、「David」が含まれる乗船者のデータを抽出してみたいと思います。

出力結果の赤枠部分を見ると、すべてのデータに「David」が含まれているのがわかりますね。
「○○が含まれている文字列」を抽出したい場面は結構多いので、是非使えるようにしてください。
ポイントをまとめておきます。
【ポイント①】 「df[column名].str」で文字列にアクセス出来るようになる
【ポイント②】 ○○が含まれる文字列の抽出には「contains(○○)」を使う
さいごに
今回は、pythonのpandasを用いてデータフレームに含まれる文字列を抽出する方法を紹介してきました。
「部分一致」でデータを自由に抽出出来るようになると、データ分析上は非常に便利になるので、是非参考にしてみてください。
またね~。