Pandas DataFrame の列ですべての NaN 値をゼロに置き換える方法
Ahmed Waheed
2023年1月30日
Pandas
Pandas NaN
大きなデータセットを扱う場合、データセットに平均値または適切な値で置き換えたい NaN 値がある場合があります。たとえば、学生の採点リストがあり、一部の学生がクイズを試みなかったため、システムは 0.0 ではなく NaN を自動的に入力しました。このタスクを達成するためのさまざまな方法を以下に示します。
次のセクションでは、次のように同じ DataFrame を使用します。
import pandas as pd
import numpy as np
data = {
"name": ["Oliver", "Harry", "George", "Noah"],
"percentage": [90, 99, 50, 65],
"grade": [88, np.nan, 95, np.nan],
}
df = pd.DataFrame(data)
print(df)
以下は、グレードが NaN の DataFrame です。
name percentage grade
0 Oliver 90 88.0
1 Harry 99 NaN
2 George 50 95.0
3 Noah 65 NaN
すべての NaN 値をゼロに置き換える df.fillna() メソッド
NaN の値を df.fillna() メソッドを使って置き換えましょう。
import pandas as pd
import numpy as np
data = {
"name": ["Oliver", "Harry", "George", "Noah"],
"percentage": [90, 99, 50, 65],
"grade": [88, np.nan, 95, np.nan],
}
df = pd.DataFrame(data)
df = df.fillna(0)
print(df)
以下は、NaN をゼロに置き換えた出力です。
name percentage grade
0 Oliver 90 88.0
1 Harry 99 0.0
2 George 50 95.0
3 Noah 65 0.0
df.fillna() メソッドは、NaN 値を指定された値で埋めます。オブジェクトデータは変更されませんが、inplace パラメータが True に設定されていない限り、デフォルトで新しい DataFrame を返します。
上記のコードを、inplace パラメーターを有効にして True に書き換えることができます。
import pandas as pd
import numpy as np
data = {
"name": ["Oliver", "Harry", "George", "Noah"],
"percentage": [90, 99, 50, 65],
"grade": [88, np.nan, 95, np.nan],
}
df = pd.DataFrame(data)
df.fillna(0, inplace=True)
print(df)
df.replace() メソッド
このメソッドは、NaN を 0 に置き換えるために df.fillna() と同じように機能します。df.replace() は他の数値を置き換えるためにも使用できます。コードを見てみましょう。
import pandas as pd
import numpy as np
data = {
"name": ["Oliver", "Harry", "George", "Noah"],
"percentage": [90, 99, 50, 65],
"grade": [88, np.nan, 95, np.nan],
}
df = pd.DataFrame(data)
nan_replaced = df.replace(np.nan, 0)
print(nan_replaced)
出力:
name percentage grade
0 Oliver 90 88.0
1 Harry 99 0.0
2 George 50 95.0
3 Noah 65 0.0
チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe