Python での列値に基づいた DataFrame 行の選択

Python での列値に基づいた DataFrame 行の選択
Python

Pandas を使用して列値で DataFrame をフィルタリングする

Python でデータを操作する場合、Pandas ライブラリはデータの操作と分析のための強力なツールを提供します。一般的なタスクの 1 つは、特定の列の値に基づいて DataFrame から行を選択することです。この操作は、SQL クエリ SELECT * FROM table WHERE column_name = some_value に似ています。

この記事では、さまざまな方法を使用して Pandas でこれを実現する方法を検討します。単一の値でフィルタリングする場合でも、複数の基準でフィルタリングする場合でも、Pandas はそのような操作を処理する直感的かつ効率的な方法を提供します。詳細を見ていきましょう。

指示 説明
pd.DataFrame() 辞書または他のデータ構造から DataFrame オブジェクトを作成します。
df[condition] 条件に基づいて DataFrame 行をフィルターし、基準を満たす行のみを返します。
print() 指定されたメッセージまたはデータフレームをコンソールに出力します。
df['column'] == value 列が指定された値と一致する行をフィルタリングするために使用されるブール型 Series を作成します。
df['column'] >df['column'] > value 列の値が指定された値より大きい行をフィルタリングするために使用されるブール型 Series を作成します。
# Comment スクリプトの一部として実行されない、コード内に説明やメモを追加するために使用されます。

Pandas での DataFrame 行選択の実装

提供されているスクリプトの主なタスクは、データ分析における一般的な要件である、特定の列値に基づいて DataFrame から行をフィルター処理することです。最初のスクリプトは、次のように Pandas ライブラリをインポートすることから始まります。 import pandas as pd。 Pandas は Python の強力なデータ操作ライブラリであるため、これは不可欠です。次に、次を使用してサンプル DataFrame を作成します。 pd.DataFrame() 名前、年齢、都市のデータを含む辞書付き。この構造により、表形式のデータを簡単に視覚化し、操作できるようになります。スクリプトの重要な部分は、次を使用して行をフィルタリングする場所です。 df[df['city'] == 'New York']。このコマンドは、都市列の値が「ニューヨーク」であるすべての行を選択します。結果は変数に格納されます ny_rowsこれを印刷して、フィルタリングされた DataFrame を表示します。

2 番目のスクリプトは同様の構造に従いますが、数値条件に基づいて行をフィルタリングすることに重点を置いています。 Pandas をインポートし、製品、価格、数量の列を含むデータフレームを作成した後、スクリプトは次を使用します。 df[df['price'] > 150] 価格が 150 を超える行をフィルタリングします。このコマンドは、指定された条件を満たす行のみを含む元のデータフレームのサブセットを生成します。結果は次の場所に保存されます expensive_products そして確認のために印刷しました。どちらのスクリプトも、データ操作における Pandas の強力さとシンプルさを示しています。一連の true/false 値を渡してデータをフィルター処理する方法であるブール インデックスを使用すると、さまざまな条件に基づいてデータのサブセットを効率的に選択できるため、データ アナリストや科学者にとって非常に貴重なツールになります。

列値に基づいた DataFrame 内の行のフィルタリング

Python - DataFrame 操作に Panda を使用する

import pandas as pd
# Create a sample DataFrame
data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David', 'Edward'],
    'age': [24, 27, 22, 32, 29],
    'city': ['New York', 'Los Angeles', 'New York', 'Chicago', 'Los Angeles']
}
df = pd.DataFrame(data)

# Select rows where city is New York
ny_rows = df[df['city'] == 'New York']
print(ny_rows)

# Output:
#       name  age      city
# 0    Alice   24  New York
# 2  Charlie   22  New York

列値に基づいた DataFrame 行のクエリ

Python - Pandas を使用した高度なフィルタリング

import pandas as pd

# Create a sample DataFrame
data = {
    'product': ['A', 'B', 'C', 'D'],
    'price': [100, 150, 200, 250],
    'quantity': [30, 50, 20, 40]
}
df = pd.DataFrame(data)

# Select rows where price is greater than 150
expensive_products = df[df['price'] > 150]
print(expensive_products)

# Output:
#   product  price  quantity
# 2       C    200        20
# 3       D    250        40

DataFrame 行を選択するための高度なテクニック

ブール インデックスによる基本的なフィルタリングに加えて、Pandas は列の値に基づいて行を選択するためのより高度なテクニックを提供します。そのような方法の 1 つが、 query() この関数を使用すると、SQL に似た構文を使用して DataFrame 行をフィルタリングできます。たとえば、次のように使用できます df.query('age > 25 and city == "New York"') をクリックして、年齢が 25 歳を超え、都市がニューヨークである行を選択します。この方法により、特に複雑な条件の場合にコードが読みやすくなります。さらに、Pandas は以下を提供します。 loc[] そして iloc[] より正確な行選択のためのアクセサー。の loc[] アクセサはラベルベースです。つまり、ラベルまたはブール配列によって行をフィルタリングできます。対照的に、 iloc[] アクセサは整数位置ベースであるため、インデックス位置によって行をフィルタリングできます。

Pandas のもう 1 つの強力な機能は、 isin() 方法。このメソッドは、値のリストに基づいて行をフィルタリングする必要がある場合に便利です。例えば、 df[df['city'].isin(['New York', 'Los Angeles'])] 都市列の値がニューヨークまたはロサンゼルスである行を選択します。さらに、 & そして | 演算子を使用して、より複雑なフィルターを作成します。例えば、 df[(df['age'] > 25) & (df['city'] == 'New York')] 年齢が 25 歳以上で都市がニューヨークである行をフィルターします。これらの高度な技術は、データ フィルタリングのための堅牢なフレームワークを提供し、Pandas をデータ分析と操作のための多用途ツールにします。

Pandas での DataFrame 行の選択に関するよくある質問

  1. 複数の列の値に基づいて DataFrame 内の行をフィルターするにはどうすればよいですか?
  2. 次のようにして、複数の条件を組み合わせてブール型インデックスを使用できます。 & そして |。例えば: df[(df['age'] > 25) & (df['city'] == 'New York')]
  3. 違いは何ですか loc[] そして iloc[]?
  4. loc[] はラベルベースですが、 iloc[] 整数の位置ベースです。使用 loc[] ラベルによるフィルタリング用と iloc[] インデックス位置によるフィルタリング用。
  5. どうすれば使えますか query() DataFrame行をフィルタリングする関数?
  6. query() 関数を使用すると、SQL のような構文を使用できます。例えば: df.query('age > 25 and city == "New York"')
  7. 値のリストに基づいて行をフィルターできますか?
  8. はい、使用できます isin() 方法。例えば: df[df['city'].isin(['New York', 'Los Angeles'])]
  9. 文字列の一致に基づいて行をフィルタリングする最良の方法は何ですか?
  10. 使用できます str.contains() 方法。例えば: df[df['city'].str.contains('New')]
  11. 列値が欠落している行を選択するにはどうすればよいですか?
  12. 使用できます isna() 方法。例えば: df[df['age'].isna()]
  13. カスタム関数を使用して行をフィルターするにはどうすればよいですか?
  14. 使用できます apply() ラムダ関数を使用したメソッド。例えば: df[df.apply(lambda row: row['age'] > 25, axis=1)]
  15. インデックス値に基づいて行をフィルタリングできますか?
  16. はい、使用できます index.isin() 方法。例えば: df[df.index.isin([1, 3, 5])]

DataFrame の行選択に関する重要なポイント

列の値に基づいて DataFrame から行を選択することは、Pandas を使用したデータ分析の基本的なスキルです。ブール型インデックスを使用すると、 loc[]iloc[]query()、 そして isin() メソッドを使用すると、効率的なデータ フィルタリングが可能になります。これらのテクニックをマスターすると、データセットを効果的に操作および分析する能力が向上します。