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()メソッドを使えば、特定の文字列を含む行をシンプルなコードで抽出できます。部分一致による絞り込みはデータ分析や前処理の現場で非常によく使われるテクニックなので、caseやnaなどのオプションもあわせて覚えておくと便利です。
-
Python Pandasのeval()関数で行の合計を評価・計算する方法
eval()関数で行の合計を求める Pandasのeval()関数は、文字列で記述した数式をDataFrameに対して直接評価できる便利な機能です。これを利用すると、指定した複数の列の値を足し合わせた行ごとの合計を、新しい列として簡単に追加できます。 まずは、商品の在庫データを含むDataFrameを作成しましょう。 dataFrame = pd.DataFrame({Product: [SmartTV, ChromeCast, Speaker, Earphone], Opening_Stock: [300, 700, 1200, 1500]
-
【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ファイルを読み込みます。ここではデスクトップ上に保存