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

Python Pandas入門 – データフレームから条件に合う行のサブセットを抽出する方法

Pandasのデータフレームから行のサブセット(一部の行)を取得するには、条件式を使ってデータを絞り込みます。この手法は「ブールインデックス参照」と呼ばれ、データ分析で最もよく使われる操作のひとつです。

使用するCSVファイル

ここでは、Microsoft Excelで開いた次のようなCSVファイル(SalesData.csv)を例にします。車種名(Car)、登録価格(Reg_Price)、販売台数(Units)の3つの列を持つデータです。

Python Pandas入門 – データフレームから条件に合う行のサブセットを抽出する方法

CSVファイルをデータフレームとして読み込む

まず、read_csv()メソッドを使って、CSVファイルのデータをPandasのデータフレームに読み込みます。

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

条件を指定して行を抽出する

たとえば「Units(販売台数)が100より大きい」車のレコードだけを取り出したい場合は、次のように記述します。

dataFrame[dataFrame["Units"] > 100]

角括弧の中に条件式を直接書くだけで、条件を満たす行だけが抽出されます。非常にシンプルですね。

同様に、「Reg_Price(登録価格)が3000未満」のレコードを抽出したい場合は、以下のようにします。

dataFrame[dataFrame["Reg_Price"] < 3000]

なお、複数の条件を組み合わせたい場合は、&(AND)や|(OR)を使って
dataFrame[(dataFrame["Units"] > 100) & (dataFrame["Reg_Price"] < 3000)]
のように書くこともできます。

サンプルコード(完全な例)

以下が実際のコード全体です。

import pandas as pd

# CSVファイルからデータフレームへデータを読み込む
dataFrame = pd.read_csv("C:\Users\amit_\Desktop\SalesData.csv")
print("\nReading the CSV file...\n", dataFrame)

# 2つの列(Reg_PriceとUnits)を表示
res2 = dataFrame[['Reg_Price', 'Units']]
print("\nDisplaying two columns : \n", res2)

# 行のサブセットを選択:Unitsが100より大きい車
print("\nSelect cars with Units more than 100: \n", dataFrame[dataFrame["Units"] > 100])

# 行のサブセットを選択:Reg_Priceが3000未満の車
print("\nSelect cars with Reg_Price less than 3000: \n", dataFrame[dataFrame["Reg_Price"] < 3000])

実行結果

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

Reading the CSV file...
        Car   Reg_Price   Units
0       BMW        2500     100
1     Lexus        3500      80
2      Audi        2500     120
3    Jaguar        2000      70
4   Mustang        2500     110

Displaying two columns :
    Reg_Price   Units
0        2500     100
1        3500      80
2        2500     120
3        2000      70
4        2500     110

Select cars with Units more than 100:
        Car   Reg_Price   Units
2      Audi        2500     120
4   Mustang        2500     110

Select cars with Reg_Price less than 3000:
        Car   Reg_Price   Units
0       BMW        2500     100
2      Audi        2500     120
3    Jaguar        2000      70
4   Mustang        2500     110

まとめ

このように、dataFrame[条件式]という形式を使えば、比較演算子(><==など)を組み合わせて、目的の行だけを簡単に抽出できます。また、より高度な条件指定を行いたい場合はquery()メソッドを利用するのも便利です。

  1. 【Python】Pandas DataFrameからサブセット(列の一部)を選択する方法

    Pandas DataFrameのサブセット選択とは? Pandasでは、DataFrameから必要な列や行だけを取り出す操作を「サブセットの選択」と呼びます。大きなデータセットから目的のデータだけを抽出できれば、分析や前処理の効率が大幅に向上します。 この記事では、CSVファイルを読み込んだDataFrameから、1つの列、および複数の列を選択する基本的な方法を解説します。 使用するCSVファイルの内容 今回使用する「SalesData.csv」は、Microsoft Excelで開くと以下のような内容になっています。 CSVファイルからDataFrameを作成する まず、pd.rea

  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ファイルを読み込みます。ここではデスクトップ上に保存