Pandas DataFrame DataFrame.fillna()関数

  1. pandas.DataFrame.fillna() の構文:
  2. コード例: DataFrame.fillna() メソッドで DataFrame のすべての NaN 値を入力します
  3. コード例: method パラメータを指定する DataFrame.fillna() メソッド
  4. コード例: limit パラメータを指定する DataFrame.fillna() メソッド

pandas.DataFrame.fillna() 関数は、DataFrameNaN 値を特定の値に置き換えます。

pandas.DataFrame.fillna() の構文:

DataFrame.fillna(value=None,
                 method=None, 
                 axis=None, 
                 inplace=False, 
                 limit=None, 
                 downcast=None) 

パラメーター

value scalardictSeries、または DataFrameNaN 値を置き換えるために使用される値
method backfillbfillpadffill または NoneNaN 値を埋めるために使用されるメソッド。
axis 行(axis = 0)または列(axis = 1)に沿って欠損値を埋めます
inplace ブール。True の場合、呼び出し元の DataFrame をインプレースで変更します
limit 整数。
method が指定されている場合、これは、前方/後方入力する連続した NaN 値の最大数です。
method が指定されていない場合、これは塗りつぶされる軸の最大の NaN の数です。
downcast 辞書。データ型のダウンキャストを指定します

戻り値

inplaceTrue の場合、すべての 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() メソッドの引数として提供された 5DataFrame のすべての 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

すべての NaN0 で埋めます。

コード例: method パラメータを指定する DataFrame.fillna() メソッド

また、さまざまな method パラメーターを使用して、DataFrameNaN 値を入力することもできます。

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 値が埋められます。

bfillpad、および ffill メソッドを使用して、DataFrameNaN 値を埋めることもできます。

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 値はそのまま残ります。

関連記事 - Pandas DataFrame

  • Pandas DataFrame DataFrame.isin()関数
  • Pandas DataFrame DataFrame.aggregate()関数
  • comments powered by Disqus