Pandasはデータ分析において非常に強力なライブラリです。特に、多くの条件に基づいてデータを効率的に操作する技術は、データサイエンティストや分析担当者にとって欠かせません。本記事では、複数の条件を用いたデータの置換について、実用的な方法と具体例を交えて詳しく解説します。
1. Pandasの基本的な置換機能を理解する
まず、Pandasにおける基本的な置換機能から始めましょう。DataFrameの特定の値を変えるために、replaceメソッドが使われます。このメソッドは、単純な置換から複雑な条件指定まで対応可能です。
例えば、以下のようなDataFrameがあるとします。
“`python
import pandas as pd
data = {
‘Name’: [‘Alice’, ‘Bob’, ‘Charlie’, ‘David’, ‘Eve’],
‘Age’: [25, 30, 35, 40, 30],
‘Salary’: [50000, 60000, 75000, 80000, 62000]
}
df = pd.DataFrame(data)
“`
このDataFrameにおいて、Ageが30歳の人のSalaryを65000に置換してみましょう。
“`python
df.loc[df[‘Age’] == 30, ‘Salary’] = 65000
“`
このコードによって、BobとEveの給与が変更されます。
2. 複数条件での置換を実行する
Pandasで複数の条件を指定して異なる値への置換を行うことも可能です。ここで活用するのが、条件式を組み合わせた方法です。例えば、年齢が30歳以上である人の給与を70000に変更したいとします。
“`python
df.loc[df[‘Age’] >= 30, ‘Salary’] = 70000
“`
この場合、Bob、Charlie、Davidの給与が70000に更新されます。複数の条件を使うことで、より柔軟なデータ操作が実現できます。
3. Map関数を使った置換の活用
条件に応じた置換を行う際、map関数を使うのも非常に便利です。これは、特定の条件に基づいて新しい値に置き換える方法です。
以下のように、年齢によって給与を異なる倍率で変更する例です。
“`python
salary_multiplier = {
25: 1.1,
30: 1.2,
35: 1.3,
40: 1.4
}
df[‘Salary’] = df[‘Age’].map(salary_multiplier) * df[‘Salary’]
“`
これにより、各年齢ごとの倍率に沿った給与変化が得られます。
4. apply関数の利用による複雑な置換
さらに複雑な条件設定や計算が必要な場合、apply関数を使用することが有効です。このメソッドは、データフレームの特定の列にユーザー定義の関数を適用できるため、非常に柔軟です。
以下の例では、年齢に応じて給与を_adjust給与とする関数を定義しました。
“`python
def adjust_salary(row):
if row[‘Age’] < 30:
return row[‘Salary’] * 1.1
elif row[‘Age’] < 40:
return row[‘Salary’] * 1.2
else:
return row[‘Salary’] * 1.3
df[‘Salary’] = df.apply(adjust_salary, axis=1)
“`
このアプローチにより、各従業員ごとに給与調整が行えます。
5. 条件の組み合わせを使った高度な置換
最後に、条件を組み合わせて複雑なロジックでの置換を行う方法を見てみましょう。たとえば、特定の年齢グループかつ特定の給与以上の場合にのみ給与を更新することができます。
“`python
df.loc[(df[‘Age’] < 35) & (df[‘Salary’] < 60000), ‘Salary’] = 72000
“`
このコードでは、25歳、30歳の人たちの給与を72000に引き上げます。こうした条件の組み合わせにより、分析・操作の精度を高めることが可能となります。
実務に役立つポイントと総括
複数条件での置換はデータ分析の基本です。Pandasでは、locやreplace、map、applyなどの機能を駆使することで、効率的にデータを操作できることがわかりました。これを駆使することで、データの意味をより明確にし、分析の質を向上できます。
実務でも役に立つ知識ですので、ぜひ日々のデータ分析に取り入れてみてください。Pandasは一見難しそうですが、使いこなせば独自の視点でデータを扱えるようになります。今後のデータ分析ライフにお役立てあれ!