Pandasで複数条件を活用する方法:効果的なデータ分析のためのガイド

Pandasは、Pythonを使用したデータ分析において非常に強力なライブラリです。特に、複数の条件に基づいてデータフレームをフィルタリングする機能は、実務において頻繁に使用されます。本稿では、Pandasの「whereメソッド」を利用した複数条件の指定に関する詳細な解説と、具体的な実務例を通じて、その使い方を紹介します。

1. Pandasの基本的な使い方

Pandasを使う際の基本は、データフレームやシリーズを操作することです。「whereメソッド」は、条件に合ったデータのみを抽出するために用いられます。まずは、シンプルなデータセットを用意します。


import pandas as pd

# データの作成
data = {
    '名前': ['A', 'B', 'C', 'D'],
    '年齢': [25, 30, 22, 35],
    '収入': [50000, 70000, 45000, 80000]
}

df = pd.DataFrame(data)
print(df)

上記のデータフレームでは、名、年齢、収入の情報を持っています。このデータから、「年齢が30以上」の条件でフィルタリングする例を見てみましょう。


# 年齢が30以上の条件を設定
filtered_df = df.where(df['年齢'] >= 30)
print(filtered_df)

この結果、年齢が30以上の行のみが表示されますが、元のインデックスも保持されていることに注意してください。

2. 複数条件を使ったフィルタリング

次に、複数の条件を組み合わせてデータをフィルタリングする方法を見ていきます。Pandasでは、論理演算子(&:AND、|:OR)を使用して複数の条件を組み合わせることが可能です。例えば、「年齢が30以上かつ収入が60000以上」の条件を設定する方法は以下の通りです。


# 複数条件を使用してフィルタリング
filtered_df_multiple = df.where((df['年齢'] >= 30) & (df['収入'] >= 60000))
print(filtered_df_multiple)

この例では、**両方の条件を満たす行のみが抽出されます**。複合的な条件検索を活用することで、データの理解がより深まります。

3. 条件付きの値更新

「whereメソッド」には、条件を満たさない値を別の値に変更する機能もあります。例えば、年齢が25未満のユーザーの収入を0に設定する場合は、以下のようにします。


# 年齢が25未満の収入を0に更新
df['収入'] = df['収入'].where(df['年齢'] >= 25, 0)
print(df)

このテクニックは、データクレンジングや前処理の際に非常に有用です。特定の条件に基づいて値を変更することで、データの整合性を確保できます。

4. 条件によって新しい列を追加する

データフレームに条件に基づいて新しい列を追加することも簡単です。例えば、既存の年齢に基づいて「未成年か成人か」を示す列を追加するケースを考えてみましょう。


# 年齢を基に新しい列を追加
df['ステータス'] = df['年齢'].where(df['年齢'] >= 20, '未成年').fillna('成人')
print(df)

結果として、「未成年」または「成人」の情報を含む新しい列が追加されます。このように、条件に基づく新しい情報を追加することで、分析の幅が広がります。

5. 条件を定義する関数の活用

Pandasでは、カスタム関数を使って条件を定義することも可能です。たとえば、年齢と収入のバランスによって「高収入」と「低収入」を定義する関数を作成します。


def income_category(row):
    if row['年齢'] < 30 and row['収入'] > 50000:
        return '高収入'
    else:
        return '低収入'

df['収入カテゴリ'] = df.apply(income_category, axis=1)
print(df)

このアプローチを利用することで、より複雑な条件を簡潔に表現できます。**カスタム関数は、特定のビジネスルールに基づいた分析において非常に役立ちます**。

以上が、Pandasで複数条件を活用する方法についての詳細な解説です。Pandasの「whereメソッド」を駆使することで、複雑なデータ分析や処理を行う際に、効率的かつ効果的にデータを扱うことができます。次回のデータ分析の場面で、これらのテクニックをぜひ試してみてください。