API · Pandas
Pandas DataFrame DataFrame.fillna()関数
DataFrame fillna()関数は、DatFrame のすべての NaN 値を指定されたメソッドまたは値に置き換えます。
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 値はそのまま残ります。