Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python Pandasで特定の文字列を含む行をフィルタリングする方法|str.contains()の使い方

はじめに

PythonのPandasでは、str.contains()メソッドを使うことで、DataFrame内の特定の文字列を含む行を簡単に抽出(フィルタリング)できます。本記事では、CSVファイルを読み込み、「Lamborghini」という文字列を含む行だけを取り出す具体例を通して、その基本的な使い方を解説します。

1. ライブラリのインポート

まず、Pandasを慣例的なエイリアス「pd」でインポートしましょう。

import pandas as pd

2. CSVファイルの読み込み

read_csv()関数を使ってCSVファイルを読み込みます。ここでは、デスクトップ上に保存された「CarRecords.csv」を使用します。

dataFrame = pd.read_csv("C:\Users\amit_\Desktop\CarRecords.csv")

3. 特定の文字列を含む行の抽出

続いて、str.contains()メソッドを使い、「Car」列に「Lamborghini」という文字列を含む行だけをフィルタリングします。

dataFrame = dataFrame[dataFrame['Car'].str.contains('Lamborghini')]

このコードでは、条件式 dataFrame['Car'].str.contains('Lamborghini') がTrue/Falseからなるブール型のSeriesを返し、Trueとなっている行のみが新しいDataFrameとして抽出される仕組みです。

完全なサンプルコード

以下に、ここまでの手順をまとめたコード全体を示します。

import pandas as pd

# CSVファイルの読み込み
dataFrame = pd.read_csv("C:\Users\amit_\Desktop\CarRecords.csv")
print("DataFrame...\n", dataFrame)

# "Lamborghini"という文字列を含む行を選択
dataFrame = dataFrame[dataFrame['Car'].str.contains('Lamborghini')]
print("\nLamborghiniを含む行の取得...\n", dataFrame)

実行結果

上記のコードを実行すると、以下のような出力が得られます。

DataFrame...
           Car       Place   UnitsSold
0         Audi   Bangalore          80
1      Porsche      Mumbai         110
2   RollsRoyce        Pune         100
3          BMW       Delhi          95
4     Mercedes   Hyderabad          80
5  Lamborghini  Chandigarh          80
6         Audi      Mumbai         100
7     Mercedes        Pune         120
8  Lamborghini       Delhi         100

Lamborghiniを含む行の取得...
           Car       Place   UnitsSold
5  Lamborghini  Chandigarh          80
8  Lamborghini       Delhi         100

元のDataFrameには9行のデータがありましたが、フィルタリング後は「Lamborghini」を含む2行(インデックス5と8)だけが残っていることが確認できます。

補足:大文字・小文字の扱いと欠損値への対処

str.contains()はデフォルトで大文字と小文字を区別します。区別せずに検索したい場合は、case=Falseオプションを指定してください。また、対象の列にNaN(欠損値)が含まれている場合はエラーになるため、na=Falseを指定しておくと安全です。

# 大文字小文字を区別せずに検索する例
dataFrame = dataFrame[dataFrame['Car'].str.contains('lamborghini', case=False, na=False)]

まとめ

Pandasのstr.contains()メソッドを使えば、特定の文字列を含む行をシンプルなコードで抽出できます。部分一致による絞り込みはデータ分析や前処理の現場で非常によく使われるテクニックなので、casenaなどのオプションもあわせて覚えておくと便利です。

  1. Python Pandasのeval()関数で行の合計を評価・計算する方法

    eval()関数で行の合計を求める Pandasのeval()関数は、文字列で記述した数式をDataFrameに対して直接評価できる便利な機能です。これを利用すると、指定した複数の列の値を足し合わせた行ごとの合計を、新しい列として簡単に追加できます。 まずは、商品の在庫データを含むDataFrameを作成しましょう。 dataFrame = pd.DataFrame({Product: [SmartTV, ChromeCast, Speaker, Earphone], Opening_Stock: [300, 700, 1200, 1500]

  2. 【Python】Pandas DataFrameからnull(欠損値)行を削除する方法|dropna()の使い方

    PandasのDataFrameからnull(NaN)行を削除するには、dropna()メソッドを使用します。この記事では、NaNを含むCSVファイルを読み込み、dropna()で欠損値を含む行を取り除くまでの手順を、サンプルコードと実行結果とともにわかりやすく解説します。前提:NaNを含むCSVファイル今回の例では、一部にNaN(null値)が含まれる以下のようなCSVファイル(CarRecords.csv)を使用します。手順1:read_csv()でCSVファイルを読み込むまずpandasをインポートし、read_csv()を使ってCSVファイルを読み込みます。ここではデスクトップ上に保存