Pandas DataFrame の列ですべての NaN 値をゼロに置き換える方法
Ahmed Waheed
2023年1月30日
大きなデータセットを扱う場合、データセットに平均値または適切な値で置き換えたい 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