Pandas DataFrame DataFrame.fillna()関数
Suraj Joshi
2023年1月30日
Pandas
Pandas DataFrame
-
pandas.DataFrame.fillna()の構文: -
コード例:
DataFrame.fillna()メソッドでDataFrameのすべてのNaN値を入力する -
コード例:
methodパラメータを指定するDataFrame.fillna()メソッド -
コード例:
limitパラメータを指定するDataFrame.fillna()メソッド
pandas.DataFrame.fillna() 関数は、DataFrame の NaN 値を特定の値に置き換えます。
pandas.DataFrame.fillna() の構文:
DataFrame.fillna(
value=None, method=None, axis=None, inplace=False, limit=None, downcast=None
)
パラメーター
value |
scalar、dict、Series、または DataFrame。NaN 値を置き換えるために使用される値 |
method |
backfill、bfill、pad、ffill または None。NaN 値を埋めるために使用されるメソッド。 |
axis |
行(axis = 0)または列(axis = 1)に沿って欠損値を埋めます |
inplace |
ブール。True の場合、呼び出し元の DataFrame をインプレースで変更します |
limit |
整数。 method が指定されている場合、これは、前方/後方入力する連続した NaN 値の最大数です。 method が指定されていない場合、これは塗りつぶされる軸の最大の NaN の数です。 |
downcast |
辞書。データ型のダウンキャストを指定します |
戻り値
inplace が True の場合、すべての NaN 値を指定された value で置き換える DataFrame。それ以外の場合は None。
コード例:DataFrame.fillna() メソッドで DataFrame のすべての NaN 値を入力する
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)
filled_df = df.fillna(5)
print("Filled DataFrame:")
print(filled_df)
出力:
DataFrame:
X Y
0 1.0 4.0
1 2.0 NaN
2 3.0 8.0
3 NaN NaN
4 3.0 3.0
Filled DataFrame:
X Y
0 1.0 4.0
1 2.0 5.0
2 3.0 8.0
3 5.0 5.0
4 3.0 3.0
pandas.DataFrame.fillna() メソッドの引数として提供された 5 で DataFrame のすべての NaN 値を埋めます。
DataFrame.fillna() と平均数
列の NaN 値を列の平均値に置き換えることができます。
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)
df.fillna(df.mean(),inplace=True)
print("Filled DataFrame:")
print(df)
出力:
DataFrame:
X Y
0 1.0 4.0
1 2.0 NaN
2 3.0 8.0
3 NaN NaN
4 3.0 3.0
Filled DataFrame:
X Y
0 1.00 4.0
1 2.00 5.0
2 3.00 8.0
3 2.25 5.0
4 3.00 3.0
これは、X 列の NaN 値を X 列の平均で埋め、Y 列の NaN 値を Y 列の平均で埋めます。
inplace = True により、fillna() 関数を呼び出した後に元の DataFrame が変更されます。
DataFrame.fillna() が 0 で埋められる
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)
df.fillna(0,inplace=True)
print("Filled DataFrame:")
print(df)
出力:
DataFrame:
X Y
0 1.0 4.0
1 2.0 NaN
2 3.0 8.0
3 NaN NaN
4 3.0 3.0
Filled DataFrame:
X Y
0 1.0 4.0
1 2.0 0.0
2 3.0 8.0
3 0.0 0.0
4 3.0 3.0
すべての NaN を 0 で埋めます。
コード例:method パラメータを指定する DataFrame.fillna() メソッド
また、さまざまな method パラメーターを使用して、DataFrame に NaN 値を入力することもできます。
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)
filled_df = df.fillna(method="backfill")
print("Filled DataFrame:")
print(filled_df)
出力:
DataFrame:
X Y
0 1.0 4.0
1 2.0 NaN
2 3.0 8.0
3 NaN NaN
4 3.0 3.0
Filled DataFrame:
X Y
0 1.0 4.0
1 2.0 8.0
2 3.0 8.0
3 3.0 3.0
4 3.0 3.0
method ="backfill"を設定すると、同じ列の NaN 値の後の値で DataFrame のすべての NaN 値が埋められます。
bfill、pad、および ffill メソッドを使用して、DataFrame の NaN 値を埋めることもできます。
method |
説明 |
|---|---|
backfill / bfill |
DataFrame のすべての NaN 値を同じ列の NaN 値の後の値で埋めます。 |
ffill / pad |
DataFrame のすべての NaN 値を同じ列の NaN 値の前の値で埋めます。 |
コード例:limit パラメータを指定する DataFrame.fillna() メソッド
DataFrame.fillna() メソッドの limit パラメータは、メソッドによって入力される連続した NaN 値の最大数を制限します。
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2,np.nan, 3,3],
'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)
filled_df = df.fillna(3,limit=1)
print("Filled DataFrame:")
print(filled_df)
出力:
DataFrame:
X Y
0 1.0 4.0
1 2.0 NaN
2 NaN 8.0
3 3.0 NaN
4 3.0 3.0
Filled DataFrame:
X Y
0 1.0 4.0
1 2.0 3.0
2 3.0 8.0
3 3.0 NaN
4 3.0 3.0
ここで、NaN が列に入力されると、同じ列の他の NaN 値はそのまま残ります。
チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
著者: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn