Pandas DataFrame의 열에서 모든 NaN 값을 0으로 바꾸는 방법

Ahmed Waheed 2023년1월30일
  1. 모든 NaN 값을 0으로 바꾸는 df.fillna() 메소드
  2. df.replace()메소드
Pandas DataFrame의 열에서 모든 NaN 값을 0으로 바꾸는 방법

큰 데이터 세트로 작업 할 때 데이터 세트에 NaN값이 있는데,이 값을 평균 값이나 적절한 값으로 바꾸려고합니다. 예를 들어, 학생의 채점 목록이 있고 일부 학생은 퀴즈를 시도하지 않아 시스템이 0.0 대신 NaN으로 자동 입력되었습니다. 이 작업을 수행하는 다른 방법은 다음과 같습니다.

  1. df.fillna()
  2. df.replace()

다음 섹션에서 같은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등급의 데이터 프레임입니다.

     name  percentage  grade
0  Oliver          90   88.0
1   Harry          99    NaN
2  George          50   95.0
3    Noah          65    NaN

모든 NaN 값을 0으로 바꾸는 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이 0으로 대체 된 출력입니다.

     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로 설정되어 있지 않으면 객체 데이터는 변경되지 않지만 기본적으로 새 데이터 프레임을 반환합니다.

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

관련 문장 - Pandas NaN