べくとりうむ.py Written by TicTak(※現在ブログ工事中のため、見づらい点があり申し訳ないです)

【Python Coding】pandasでデータフレーム内の文字列を抽出

code python

こんにちは、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を用いてデータフレームに含まれる文字列を抽出する方法を紹介してきました。

「部分一致」でデータを自由に抽出出来るようになると、データ分析上は非常に便利になるので、是非参考にしてみてください。

またね~。