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 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 사전. 데이터 유형의 다운 캐스트를 지정합니다.

반환

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

DataFrame의 모든NaN 값을pandas.DataFrame.fillna()메소드에서 인수로 제공된5로 채 웁니다.

평균이있는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"을 설정하면DataFrame의 모든NaN 값이 동일한 열의NaN 값 뒤의 값으로 채워집니다.

bfill,padffill 메서드를 사용하여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.sample() 함수
  • Pandas DataFrame DataFrame.set_index() 함수