Python Pandas入門:query()メソッドでDataFrameの列をクエリ(条件抽出)する方法
PandasのDataFrameで列をクエリ(条件による絞り込み)を行うには、query()メソッドを使用します。query()は、文字列形式の条件式を渡すだけで直感的にレコードをフィルタリングできる便利な機能です。
サンプルDataFrameの作成
まず、商品名・期首在庫・期末在庫を持つDataFrameを作成してみましょう。
import pandas as pd
dataFrame = pd.DataFrame({
"Product": ["SmartTV", "PenDrive", "Speaker", "Earphone"],
"Opening_Stock": [300, 700, 1200, 1500],
"Closing_Stock": [200, 500, 1000, 900]
})
query()で列をクエリする
query()メソッドに条件式を渡すことで、複数の列に対して同時に条件を指定できます。以下の例では、「期首在庫が500以上」「期末在庫が1000未満」「商品名がPで始まる」という3つの条件を組み合わせています。
print(dataFrame.query('Opening_Stock >=500 & Closing_Stock < 1000 & Product.str.startswith("P").values'))
各条件の意味は次のとおりです。
- Opening_Stock >= 500:期首在庫が500以上の行を対象とする
- Closing_Stock < 1000:期末在庫が1000未満の行を対象とする
- Product.str.startswith("P"):商品名が「P」で始まる行を対象とする
完全なコード例
ここまでの内容をまとめた完全なコードは以下のとおりです。
import pandas as pd
dataFrame = pd.DataFrame({
"Product": ["SmartTV", "PenDrive", "Speaker", "Earphone"],
"Opening_Stock": [300, 700, 1200, 1500],
"Closing_Stock": [200, 500, 1000, 900]
})
print("DataFrame...\n", dataFrame)
# query()を使って列をクエリし、レコードをフィルタリング
print("\nQuerying columns to filter records...\n")
print(dataFrame.query('Opening_Stock >=500 & Closing_Stock < 1000 & Product.str.startswith("P").values'))
実行結果
上記のコードを実行すると、次のような出力が得られます。
DataFrame...
Closing_Stock Opening_Stock Product
0 200 300 SmartTV
1 500 700 PenDrive
2 1000 1200 Speaker
3 900 1500 Earphone
Querying columns to filter records...
Closing_Stock Opening_Stock Product
1 500 700 PenDrive
出力を見ると、3つの条件をすべて満たすのは「PenDrive」(インデックス1)の行だけであることがわかります。このようにquery()を使えば、数値比較と文字列操作を組み合わせた柔軟なデータ抽出が簡単に行えます。
-
Python・Pandas DataFrameでCSV読み込み時に列名を明示的に指定する方法
PandasでCSVファイルを読み込む際、元のファイルにヘッダー(列名)が含まれていないケースはよくあります。そのような場合、read_csv()メソッドのnamesパラメータを使えば、列名を明示的に指定できます。この記事では、具体的な手順をサンプルコードと実行結果とともに解説します。 namesパラメータによる列名の指定 read_csv()メソッドのnamesパラメータに列名のリストを渡すことで、ヘッダーを持たないCSVファイルに任意の列名を割り当てられます。例として、Microsoft Excelで開いた次のようなヘッダーなしのCSVファイルを想定します。 このファイルを読み込む
-
【Python・pandas】グループ化された水平棒グラフをプロットし、すべての列を表示する方法
pandasのDataFrameからグループ化された水平棒グラフを作成し、すべての列を一度に表示したい場合は、plot.barh()メソッドを使います。x軸・y軸の値を個別に指定しないことで、DataFrame内の数値型の列が自動的に検出され、それぞれがグループ化された状態で描画されます。必要なライブラリのインポートまず、データ操作用のpandasと、グラフ描画用のmatplotlibをインポートします。import pandas as pd import matplotlib.pyplot as pltサンプル用のDataFrameを作成するここでは、「車種名」「排気量」「登録価格」の3つの