Pandas DataFrame の行のフィルタリング
Pandas は、データ操作と分析のための Python の強力なライブラリです。一般的なタスクは、SQL の SELECT * FROM table WHERE column_name = some_value と同様に、列の値に基づいて DataFrame から行を選択することです。
このガイドでは、Pandas でこれを実現するためのさまざまな方法を説明し、データを簡単に効率的にフィルタリングできるようにします。初心者でも経験豊富なユーザーでも、これらのヒントはデータ処理スキルを向上させるのに役立ちます。
指示 | 説明 |
---|---|
pd.DataFrame(data) | データのディクショナリから DataFrame を作成します。 |
df[column_name] | DataFrame 内の列に名前でアクセスします。 |
df[condition] | 列に適用された条件に基づいて DataFrame をフィルターします。 |
print(selected_rows) | DataFrame またはそのサブセットをコンソールに出力します。 |
df[df['Age'] >df[df['Age'] > 25] | 「年齢」列の値が 25 より大きい行を選択します。 |
df[df['City'] == 'Chicago'] | 「City」列の値が「Chicago」と等しい行を選択します。 |
Pandas での DataFrame 行の選択を理解する
提供されているスクリプトは、Python の Pandas ライブラリを使用して列の値に基づいて DataFrame から行を選択する方法を示しています。最初のスクリプトは、Pandas ライブラリをインポートすることから始まります。 import pandas as pd 指示。次に、データのディクショナリを使用してサンプル データフレームを作成します。これは、 pd.DataFrame(data) 指示。次に、スクリプトは行選択のための 2 つの方法を示します。1 つは、「Age」列の値が 25 より大きい行を選択する方法です。 df[df['Age'] > 25]を使用して、「City」列の値が「Chicago」である行を選択します。 df[df['City'] == 'Chicago']。これらのフィルタリングされた DataFrame は、 print() 選択した行を表示する関数。
2 番目のスクリプトは同様の構造に従いますが、異なるデータと選択基準を使用します。 「Product」、「Price」、「Stock」列などの製品情報を含むデータフレームを作成します。 「価格」が 200 以下の行が選択されます。 df[df['Price'] <= 200]、「在庫」が 40 を超えている場合、 df[df['Stock'] > 40]。これらのスクリプトの目的は、SQL クエリを使用して列の値に基づいてテーブルから行を選択する方法と同様に、特定の条件に基づいて DataFrame 行をフィルタリングする方法を示すことです。これらのコマンドを理解して適用することで、DataFrame 内のデータを効率的に操作および分析できます。
Pandas の列値を使用した DataFrame 内の行の選択
Python と Pandas ライブラリ
# Importing the necessary library
import pandas as pd
# Creating a sample DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}
df = pd.DataFrame(data)
# Selecting rows where Age is greater than 25
selected_rows = df[df['Age'] > 25]
print(selected_rows)
# Selecting rows where City is 'Chicago'
chicago_rows = df[df['City'] == 'Chicago']
print(chicago_rows)
列基準に基づいた DataFrame 内のデータのフィルタリング
Python と Pandas ライブラリ
# Importing pandas library
import pandas as pd
# Creating a sample DataFrame
data = {'Product': ['A', 'B', 'C', 'D', 'E'],
'Price': [100, 150, 200, 250, 300],
'Stock': [30, 60, 90, 20, 50]}
df = pd.DataFrame(data)
# Selecting rows where Price is less than or equal to 200
affordable_products = df[df['Price'] <= 200]
print(affordable_products)
# Selecting rows where Stock is more than 40
in_stock = df[df['Stock'] > 40]
print(in_stock)
Pandas で DataFrame 行を選択するための高度なテクニック
ブール インデックスを使用した基本的なフィルタリングに加えて、Pandas は列の値に基づいて行を選択するための高度なテクニックを提供します。強力な方法の 1 つは、 query() この関数を使用すると、クエリ式を使用して行をフィルタリングできるため、構文がより簡潔になり、多くの場合より直感的になります。たとえば、を使用する代わりに、 df[df['Age'] > 25]、 あなたは書ける df.query('Age > 25')。この方法は、より複雑な条件を扱う場合、または列名にスペースが含まれる場合に特に便利です。さらに、 isin() この関数は、値のリストに基づいて行をフィルタリングする場合に便利です。たとえば、「City」列の値が「Chicago」または「New York」のいずれかである行を選択するには、次のように使用できます。 df[df['City'].isin(['Chicago', 'New York'])]。
もう 1 つのテクニックには、 loc そして iloc インデクサー。の loc インデクサーはラベルベースであるため、行ラベルと列名に基づいて行を選択できます。 iloc 整数の位置に基づいており、行番号と列番号による選択が可能です。この柔軟性は、別の列に適用される条件に基づいて行を選択する場合に特に役立ちます。例えば、 df.loc[df['Age'] > 25, 'Name'] これらのメソッドは、Pandas でデータを効率的に処理および分析するためのツールキットを拡張し、より読みやすく保守しやすいコードを提供します。
DataFrame 行の選択に関するよくある質問と回答
- 複数の条件に基づいて行を選択するにはどうすればよいですか?
- 使用できます query() 関数を使用するか、条件を次のような論理演算子と組み合わせます。 & そして |。例えば、 df[(df['Age'] > 25) & (df['City'] == 'Chicago')]。
- 値のリストに基づいて行をフィルターできますか?
- はい、使用してください isin() 関数。例えば、 df[df['City'].isin(['Chicago', 'New York'])]。
- 違いは何ですか loc そして iloc?
- loc はラベルベースですが、 iloc 整数の位置ベースです。使用 loc 行/列ラベル付き iloc 行/列インデックス付き。
- 行をフィルタリングするときに特定の列を選択するにはどうすればよいですか?
- 使用できます loc。例えば、 df.loc[df['Age'] > 25, ['Name', 'City']]。
- 行を選択するときに欠損値を処理するにはどうすればよいですか?
- 使用 dropna() 欠損値のある行を削除する関数、または fillna() それらを指定された値に置き換えます。
- 正規表現を使用して行をフィルタリングできますか?
- はい str.contains() を使用した関数 regex=True パラメータを使用すると、正規表現パターンに基づいて行をフィルタリングできます。例えば、 df[df['Name'].str.contains('^A', regex=True)]。
- インデックスに基づいて行をフィルタリングするにはどうすればよいですか?
- 使用できます loc インデックス名を付けます。例えば、 df.loc[df.index == 'some_index']。
- 列名にスペースまたは特殊文字が含まれている場合はどうなりますか?
- 使用 query() このようなバッククォート付きの列名を処理できる関数。例えば、 df.query('`column name` == value')。
DataFrame の行選択手法に関する最終的な考え方
Pandas の列値に基づいて DataFrame から行を選択することは、データ操作にとって重要なスキルです。ブールインデックス作成など、さまざまな方法について説明しました。 query()、 isin()、ラベルベースおよび整数位置ベースのインデックス作成 loc そして iloc、データを効率的にフィルタリングするための強力なツールを提供します。これらのテクニックを習得すると、より優れたデータ分析と、よりクリーンで保守しやすいコードが可能になります。