Python

Pandasでの条件付き集計:np.whereと条件付き列の生成

データ分析の際、特定の条件に基づいてデータを集計したり、新しい列を生成したりすることがよくあります。PandasとNumPyを使えば、これらの操作を効率的に行うことができます。特に、np.whereを使うと、条件に基づいてデータを簡単に操作することができます。この記事では、Pandasでの条件付き集計と、np.whereを使った条件付き列の生成方法について解説します。

np.whereの基本的な使い方

np.whereは、条件に応じて異なる値を返すことができるNumPyの関数です。Pandasのデータフレームと組み合わせて使用することで、条件に基づいて新しい列を生成する際に非常に便利です。

基本的な構文は以下の通りです:

例えば、次のようにnp.whereを使って、ある数値が正なら1を、負なら-1を返す処理を行うことができます。

このコードでは、Number列の値が正の数であれば1、負の数であれば-1を新しいSign列に格納します。

複雑な条件を使った条件付き列の生成

np.whereを使うと、複数の条件を組み合わせた列の生成も簡単に行えます。例えば、以下の例では、数値が正なら「正」、0なら「ゼロ」、負なら「負」というラベルを付ける条件付き列を生成します。

このコードでは、Number列の値が0より大きい場合は「正」、0より小さい場合は「負」、0の場合は「ゼロ」とラベル付けを行い、新しいCategory列に格納しています。

条件付きの集計

np.whereを使って条件付きの集計を行うこともできます。例えば、データフレームの特定の列が条件を満たす場合のみ、別の列の値を集計するようなケースです。

次の例では、ある商品の売上が100を超える場合に、その売上を集計し、それ以外は集計しないといった操作を行います。

このコードでは、Sales列の値が100以上の商品の売上を合計し、その結果を表示しています。whereを使うことで、条件を満たさないデータはNaNになり、sum()を適用するとこれらのNaNは無視されます。

条件付きの列を集計に活用

また、np.whereで生成した条件付き列を使って、データを集計することも可能です。例えば、商品のカテゴリに応じて売上をグループ化し、集計を行う場合です。

このコードでは、売上が100以上の商品を'High'、それ以外を'Low'としてカテゴリ分けし、それぞれのカテゴリごとに売上を集計しています。groupbyと組み合わせることで、条件に応じた柔軟な集計が可能です。

np.whereとapplyの違いと使い分け

Pandasにはnp.whereの他にも、applyメソッドを使ってカスタム関数を適用する方法もあります。これらは似たような目的で使われますが、それぞれ得意とする状況が異なります。

• np.where: 単純な条件分岐による値の割り当てに適しています。速度が速く、大量のデータに対して効率的に処理が可能です。
• apply: より複雑なロジックを必要とする場合に有効です。任意のPython関数を適用できるため、柔軟な操作が可能ですが、速度はnp.whereよりも遅くなることが多いです。

例えば、次のような複雑なロジックを適用する場合は、applyのほうが適しているかもしれません。

このコードでは、売上に基づいて'High'、'Medium'、'Low'のカテゴリを割り当てる複雑なロジックを実装しています。applyはこのような複雑な条件分岐を伴う場合に非常に便利です。

まとめ

Pandasとnp.whereを使った条件付き集計や列の生成は、データ分析の際に非常に役立つツールです。シンプルな条件分岐から複雑なロジックまで、これらの方法を使い分けることで、データ処理を効率的に行うことができます。この記事を参考に、実際のデータセットでnp.whereやapplyを活用してみてください!

おすすめ記事

1

こんにちわ、サトシです。33歳です。 今回は、データサイエンティストの3年間に3社で働いた僕が、データサイエンティストとしての転職活動についてまとめて書きたいと思います。 これまでSE→博士研究員→ポ ...

2

お疲れさまです! 久しぶりの更新になってしまいましたが、僕が未経験からデータサイエンティストになるまでの転職活動の全記録を書き残しておきたいと思います。 僕は博士号を取得後に研究員として仕事をしていま ...

3

こんにちわ、サトシです。 今回は、企業でデータサイエンティストとして働いていた僕が、フリーランスとしてどのような手順で独立していったかについて書いていきたいと思います。 僕はSIer SE→博士過程→ ...

-Python

Copyright© さとぶろぐ , 2025 All Rights Reserved Powered by AFFINGER5.