「pandasを使って列ごとにデータを置換する方法」 データ前処理の基本を学ぼう

はじめに

データ分析や機械学習において、データ前処理は非常に重要です。データを分析する前に、欠損値や異常値などを処理することで、正確な分析結果を得ることができます。pandasはPythonでよく使われるデータ分析ライブラリであり、データ前処理において非常に便利な機能を提供しています。

本記事では、pandasを使って列ごとにデータを置換する方法を紹介します。

pandasライブラリのインストールとインポート

pandasを使用するには、まずライブラリをインストールする必要があります。以下のコマンドを実行して、pandasをインストールします。

!pip install pandas

次に、pandasをインポートします。

import pandas as pd

データセットの準備:サンプルデータの生成

本記事では、以下のようなサンプルデータを使用します。

import numpy as np
# サンプルデータの生成
data = {
    'name': ['Alice', 'Bob', 'Charlie', 'Dave', 'Eva', 'Frank'],
    'age': [25, 34, 19, 47, 22, 31],
    'gender': ['Female', 'Male', 'Male', 'Male', 'Female', 'Male'],
    'city': ['Tokyo', 'New York', 'Paris', 'Tokyo', 'Tokyo', 'New York'],
    'height': [165, 180, 175, 168, 157, 173],
    'weight': [62, 85, 72, 68, 45, 77],
    'blood_type': ['A', 'O', 'AB', 'B', 'A', 'O']
}
df = pd.DataFrame(data)
print(df)

上記コードを実行すると、以下のような出力が得られます。

      name  age  gender      city  height  weight blood_type
0    Alice   25  Female     Tokyo     165      62          A
1      Bob   34    Male  New York     180      85          O
2  Charlie   19    Male     Paris     175      72         AB
3     Dave   47    Male     Tokyo     168      68          B
4      Eva   22  Female     Tokyo     157      45          A
5    Frank   31    Male  New York     173      77          O

サンプルデータが生成できました。

列ごとにデータを置換:replace()関数を使った置換方法の説明

pandasには、replace()関数を使用することで、特定の値を別の値に置換することができます。

例えば、上記のサンプルデータのblood_type列の”A”を”Type A”に置換する場合、以下のようにコードを記述します。

# blood_type列の"A"を"Type A"に置換する
df['blood_type'].replace('A', 'Type A', inplace=True)
print(df)

上記コードを実行すると、以下のような出力が得られます。

      name  age  gender      city  height  weight blood_type
0    Alice   25  Female     Tokyo     165      62     Type A
1      Bob   34    Male  New York     180      85          O
2  Charlie   19    Male     Paris     175      72         AB
3     Dave   47    Male     Tokyo     168      68          B
4      Eva   22  Female     Tokyo     157      45     Type A
5    Frank   31    Male  New York     173      77          O

blood_type列の”A”が”Type A”に置換されていることがわかります。

複数列を同時に置換:辞書型を使った置換方法の説明

複数列を同時に置換する場合、辞書型を使うことができます。例えば、blood_type列の”O”を”Type O”に、gender列の”Male”を”男性”に置換する場合、以下のようにコードを記述します。

# blood_type列の"O"を"Type O"に、gender列の"Male"を"男性"に置換する
replace_dict = {'blood_type': {'O': 'Type O'}, 'gender': {'Male': '男性'}}
df.replace(replace_dict, inplace=True)
print(df)

上記コードを実行すると、以下のような出力が得られます。

      name  age  gender      city  height  weight blood_type
0    Alice   25  Female     Tokyo     165      62     Type A
1      Bob   34      男性  New York     180      85     Type O
2  Charlie   19      男性     Paris     175      72         AB
3     Dave   47      男性     Tokyo     168      68          B
4      Eva   22  Female     Tokyo     157      45     Type A
5    Frank   31      男性  New York     173      77     Type O

blood_type列の”O”が”Type O”に、gender列の”Male”が”男性”に置換されていることがわかります。

条件を満たすデータの置換:条件式を使って特定のデータを置換する方法

条件を満たすデータのみを置換する場合、条件式を使うことができます。例えば、age列の値が25未満の行のgender列の値を”女性”に置換する場合、以下のようにコードを記述します。

# age列の値が25未満の行のgender列の値を"女性"に置換する
df.loc[df['age'] < 25, 'gender'] = '女性'
print(df)

上記コードを実行すると、以下のような出力が得られます。

      name  age  gender      city  height  weight blood_type
0    Alice   25  Female     Tokyo     165      62     Type A
1      Bob   34      男性  New York     180      85     Type O
2  Charlie   19      女性     Paris     175      72         AB
3     Dave   47      男性     Tokyo     168      68          B
4      Eva   22      女性     Tokyo     157      45     Type A
5    Frank   31      男性  New York     173      77     Type O

age列の値が25未満の行のgender列の値が”Female”に置換されていることがわかります。

まとめ

pandasを使って列ごとにデータを置換する方法について説明しました。

  • replace()関数を使用することで、特定の値を別の値に置換することができます。
  • 複数列を同時に置換する場合は、辞書型を使うことができます。
  • 条件を満たすデータのみを置換する場合は、条件式を使うことができます。

これらの方法を駆使して、データ分析や機械学習の前処理をスムーズに行いましょう。