Pandas で特定の文字列を含む行をフィルター処理する

Fariba Laiq 2024年2月15日
  1. 前提ライブラリのインストール
  2. Pandas データフレームを作成する
  3. str.contains() を使用して、特定の文字列を含む行をフィルタリングする
  4. str.contains() を使用して、リストに文字列を含む行をフィルタリングする
Pandas で特定の文字列を含む行をフィルター処理する

Pandas ライブラリは、数値に加えてテキスト データを処理するための完全なツールです。 多くのデータ分析アプリケーションと機械学習の探索/前処理からテキスト入力を除外する必要があります。

Python のデータフレームは、Pandas モジュールに存在する主要なデータ構造です。 これらのデータ構造は、データを表形式で格納および処理するために使用されます。

表形式で保存されたデータに対して実行されるそのようなプロセスの 1つは、データフレームを部分文字列基準でフィルタリングして、そこから関連情報を抽出できるようにすることです。 この記事では、これと同じ操作を実行する手順を順を追って説明します。

前提ライブラリのインストール

Pandas データフレームのフィルタリングを開始するには、まず Pandas ライブラリをインストールする必要があります。 選択したターミナルで次のコマンドを実行することで、これをすばやく実現できます。

pip install pandas

また、正しい Python バージョンで作業することも不可欠です。 この記事では、バージョン 3.10.4 を使用しています。

ターミナルで次のコマンドを実行すると、現在インストールされている Python のバージョンを確認できます。

python --version

Pandas データフレームを作成する

データフレーム フィルタリング操作を実行するには、サンプル データフレームが必要です。 したがって、以下のコードを使用して記事のデータフレームを生成します。 生物と化学の 2 科目で 100 人中 5 人の生徒の名前が採点されています。

コード例:

import pandas as pd

data = {
    "Student_Name": ["Anil", "Suharwardy", "Fatina", "John", "Karen"],
    "Biology": [68, 73, 87, 58, 78],
    "Chemistry": [78, 98, 89, 73, 87],
}
data_frame = pd.DataFrame(data)
print(data_frame)

したがって、上記のコードは非常に簡単です。 Pandas ライブラリをインポートすることから始めて、結果のデータフレームに挿入する情報を含む辞書として data 変数を初期化します。

次に、Pandas モジュールの DataFrame() メソッドを使用して、data ディクショナリを上記の手法に渡すことでデータフレームを生成します。

コードを実行すると、次のデータフレームが生成されます。

出力:

Pandas DataFrame の例

str.contains() を使用して、特定の文字列を含む行をフィルタリングする

データフレームを作成したので、フィルタリングのステップに進むことができます。 Suharwardy という生徒のデータを除外したいとしましょう。 結果は、Suharwardy に対して保存されたすべての情報になります。

str.contains() メソッドを使用してこの操作を実行できます。 以下のスニペットでは、データフレーム列 Student_Name にアクセスし、str.contains() メソッドを使用して、Suharwardy という名前に対して保存されている情報にアクセスしています。

コード例:

import pandas as pd

data = {
    "Student_Name": ["Anil", "Suharwardy", "Fatina", "John", "Karen"],
    "Biology": [68, 73, 87, 58, 78],
    "Chemistry": [78, 98, 89, 73, 87],
}
data_frame = pd.DataFrame(data=data)
df = data_frame[data_frame["Student_Name"].str.contains("Suharwardy")]
print(df)

出力:

str.contains を使用して文字列を含む行をフィルタリングするパンダ

この操作を実行するさらに簡単で直感的な方法は、ドット演算子を使用して Student_Name 列にアクセスすることです。 同じ結果が得られます。

コード例:

import pandas as pd

data = {
    "Student_Name": ["Anil", "Suharwardy", "Fatina", "John", "Karen"],
    "Biology": [68, 73, 87, 58, 78],
    "Chemistry": [78, 98, 89, 73, 87],
}
data_frame = pd.DataFrame(data=data)
df = data_frame[data_frame.Student_Name.str.contains("Suharwardy")]
print(df)

出力:

Pandas は、str.contains とドット演算子を使用して文字列を含む行をフィルター処理します

str.contains() メソッドには regex パラメータもあり、これを False に設定することでより高速な結果を得ることができます。

コード例:

import pandas as pd
import regex as regex

data = {
    "Student_Name": ["Anil", "Suharwardy", "Fatina", "John", "Karen"],
    "Biology": [68, 73, 87, 58, 78],
    "Chemistry": [78, 98, 89, 73, 87],
}
data_frame = pd.DataFrame(data=data)
df = data_frame[data_frame.Student_Name.str.contains("Suharwardy", regex=False)]
print(df)

出力:

str.contains と regex を使用して文字列を含む行を Pandas でフィルター処理する

これは、str.contains() メソッドを使用して Pandas データフレームをフィルタリングし、抽出する情報の詳細を指定する方法です。

str.contains() を使用して、リストに文字列を含む行をフィルタリングする

以下のコードは、ID 列に ID1 または ID2 を含むデータフレーム行をフィルタリングする方法を示しています。

コード例:

import pandas as pd

d1 = {
    "ID": [
        "ID1",
        "ID1",
        "ID2",
        "ID2",
        "ID3",
        "ID3",
    ],
    "Names": ["Harry", "Petter", "Daniel", "Ron", "Sofia", "Kelvin"],
    "marks": [70, 80, 90, 70, 60, 90],
}
df = pd.DataFrame(d1)
print(df)
s = df[df["ID"].str.contains("ID1|ID2")]
print("use of str.contains() : ")
print(s)

出力:

str.contains を使用してリスト内の文字列を含む行を Pandas でフィルター処理

著者: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

関連記事 - Pandas String