データフレーム操作のスキルアップ!pandasでif文と何もしない処理を組み合わせる方法

はじめに

pandasはPythonでよく使われるデータ分析ライブラリの1つで、データフレームと呼ばれる表形式のデータを扱うことができます。データフレームに対する条件分岐を行う場合、if文を組み合わせることができます。しかし、条件が当てはまらなかった場合に何もしない処理を行う必要がある場合があります。本記事では、pandasでif文と何もしない処理を組み合わせる方法について解説します。

pandasでのif文処理の概要と何もしない処理の必要性

pandasでは、データフレームに対する条件分岐を行う場合にif文を使用することができます。例えば、以下のようなデータフレームがあったとします。

import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Ella'],
        'Age': [25, 37, 20, 18, 29],
        'City': ['Tokyo', 'New York', 'London', 'Paris', 'Sydney']}
df = pd.DataFrame(data)
print(df)
       Name  Age      City
0     Alice   25     Tokyo
1       Bob   37  New York
2   Charlie   20    London
3     David   18     Paris
4      Ella   29    Sydney

出力結果:

このデータフレームに対して、Age列が20未満の行だけを抽出する場合、以下のようにif文を使用することができます。

age_condition = df['Age'] < 20
if age_condition.any():
    filtered_df = df[age_condition]
    print(filtered_df)
    Name  Age   City
3  David   18  Paris

出力結果:

しかし、条件に当てはまらない場合には何も出力されず、処理が終了してしまいます。このような場合には、何もしない処理を行う必要があります。

何もしない処理の表現方法

Pythonでは、何もしない処理を表現するためにpass文を使用することができます。pass文は、単に何もせずに処理をスキップするために使用されます。以下の例では、if文に当てはまる条件がない場合にpass文を使用して、何もしない処理を行っています。

age_condition = df['Age'] < 10
if age_condition.any():
    filtered_df = df[age_condition]
    print(filtered_df)
else:
    pass

この場合、条件に当てはまる行がないため、何も出力されずに処理が終了します。

データフレーム内での条件分岐と何もしない処理の組み合わせ

データフレームに対する条件分岐と何もしない処理を組み合わせる場合、if文の構文を使用します。以下の例では、Age列が20未満かつCity列がTokyoの場合に、何もしない処理を行っています。

for index, row in df.iterrows():
    if row['Age'] < 20 and row['City'] == 'Paris':
        pass
    else:
        print(row['Name'], row['Age'], row['City'])
Alice 25 Tokyo
Bob 37 New York
Charlie 20 London
Ella 29 Sydney

出力結果:

この例では、forループを使用してデータフレームの各行を処理し、条件に当てはまらない場合には各行の情報を出力しています。Age列が20未満かつCity列がParisの場合には、何もしない処理を行っています。

実践例: if文と何もしない処理を活用したデータフレーム操作

ここでは、実際にpandasでif文と何もしない処理を活用したデータフレーム操作の例を紹介します。

例1: データフレームの要素の置換

以下の例では、データフレームの要素を置換する場合に、if文と何もしない処理を使用しています。

for index, row in df.iterrows():
    if row['Age'] < 20:
        df.at[index, 'City'] = 'Unknown'
    else:
        pass
print(df)
       Name  Age      City
0     Alice   25     Tokyo
1       Bob   37  New York
2   Charlie   20    London
3     David   18   Unknown
4      Ella   29    Sydney

出力結果:

この例では、データフレームのAge列が20未満の場合、City列の値を’Unknown’に置換しています。

例2: データフレームの列の追加

以下の例では、データフレームに新しい列を追加する場合に、if文と何もしない処理を使用しています。

for index, row in df.iterrows():
    if row['City'] == 'Tokyo':
        df.at[index, 'Country'] = 'Japan'
    else:
        pass
print(df)
       Name  Age      City Country
0     Alice   25     Tokyo   Japan
1       Bob   37  New York     NaN
2   Charlie   20    London     NaN
3     David   18     Paris     NaN
4      Ella   29    Sydney     NaN

出力結果:

この例では、データフレームのCity列が’Tokyo’の場合に、新しい列としてCountry列を追加して、’Japan’という値を設定しています。City列が’Tokyo’でない場合には、何もしない処理を行っています。

まとめ

pandasでのデータフレーム操作において、if文と何もしない処理を組み合わせることで、より柔軟な条件分岐が可能になります。また、何もしない処理を表現するために、Pythonのpass文を使用することができます。以上のように、pandasの操作においてif文と何もしない処理を組み合わせることで、より高度なデータ処理を行うことができます。