Pandas DataFrame의 열에서 모든 NaN 값을 0으로 바꾸는 방법
Ahmed Waheed
2023년1월30일
큰 데이터 세트로 작업 할 때 데이터 세트에 NaN
값이 있는데,이 값을 평균 값이나 적절한 값으로 바꾸려고합니다. 예를 들어, 학생의 채점 목록이 있고 일부 학생은 퀴즈를 시도하지 않아 시스템이 0.0 대신 NaN
으로 자동 입력되었습니다. 이 작업을 수행하는 다른 방법은 다음과 같습니다.
다음 섹션에서 같은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