ホームページ >データベース >mysql チュートリアル >SQL の GROUP BY HAVING 句を Pandas に実装するにはどうすればよいですか?

SQL の GROUP BY HAVING 句を Pandas に実装するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-10 17:29:41855ブラウズ

How to Implement SQL's GROUP BY HAVING Clause in Pandas?

Pandas での SQL GROUP BY HAVING 句の実装

SQL では、GROUP BY 操作は、指定された列の値に基づいてデータをサブセットに分割します。 HAVING 句は、これらのサブセットにフィルター制約を適用します。この機能により、選択的なデータの集約とフィルタリングが可能になります。

Pandas では、GROUP BY オブジェクトを返す groupby() メソッドを通じて GROUP BY 機能を利用できます。 Pandas で SQL HAVING 句に相当するのは filter() メソッドで、groupby() によって作成されたサブセットにフィルターを適用します。

構文:

<code>df.groupby(by_column).filter(filter_function)</code>

その中には:

  • df は Pandas データフレームです。
  • by_column はグループ化に使用される列です。
  • filter_function は、各グループのブール値を返す関数です。

使用法:

Pandas でグループ化されたデータセットにフィルターを適用するには、次の手順に従います:

  1. DataFrame で groupby() を呼び出して、GroupBy オブジェクトを作成します。
  2. filter() メソッドを使用して、各グループに filter_function を適用します。
  3. filter_function は、各グループのブール値を返す必要があります。
  4. フィルタリングされたグループは、新しい DataFrame として返されます。

例:

次の Pandas DataFrame があるとします:

<code>df = pd.DataFrame([[1, 2], [1, 3], [5, 6]], columns=['A', 'B'])</code>

列 B の合計が 4 より大きいグループを見つけるには、次のコードを使用できます:

<code>result = df.groupby('A').filter(lambda x: x['B'].sum() > 4)</code>

結果は、フィルター基準を満たすグループの行を含む新しい DataFrame になります:

<code>print(result)</code>

出力:

<code>   A  B
0  1  2
1  1  3</code>

追加メモ:

  • filter_function には、Pandas グループを入力として受け入れ、ブール値を返す任意の有効な Python 関数を指定できます。
  • filter_function はグループ化に使用される列にアクセスできないことに注意することが重要です。これらの列にアクセスする必要がある場合は、フィルターを適用する前に列ごとに手動でグループ化できます。
  • Pandas の GROUP BY HAVING 機能は、複雑なデータの集約とフィルタリング操作を実行する強力な方法を提供します。

以上がSQL の GROUP BY HAVING 句を Pandas に実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。