fillna 를 사용하여 누락된 값 채우기
이 단계에서는 누락된 데이터를 처리하는 또 다른 방법, 즉 fillna() 메서드를 사용하여 누락된 값을 특정 값으로 채우는 방법을 배우게 됩니다. 누락된 데이터가 있는 행을 삭제하면 때때로 상당한 데이터 손실이 발생할 수 있으며, 특히 많은 행에 누락된 값이 있는 경우 더욱 그렇습니다. 누락된 값을 채우는 것이 종종 더 나은 대안이 됩니다.
NaN 값을 0 또는 "Unknown"과 같은 상수 값으로 채우거나, 해당 열의 평균 또는 중앙값과 같은 계산된 값으로 채울 수 있습니다.
main.py 파일을 수정해 보겠습니다. 마지막 단계에서 추가한 dropna() 코드를 삭제하고 대신 다음 코드를 사용하여 누락된 값을 채워 기본 DataFrame df를 정리합니다. 누락된 age는 기존 나이의 평균으로 채우고, 누락된 city는 'Unknown' 문자열로 채울 것입니다.
마지막 단계에서 추가한 dropna() 코드를 제거하고 다음 코드로 대체합니다. inplace=True를 사용하여 DataFrame 을 직접 수정합니다.
## Replace the dropna() code with this at the end of main.py
## Calculate the mean of the 'age' column
mean_age = df['age'].mean()
## Fill missing values using the recommended approach to avoid FutureWarnings
df.fillna({'age': mean_age, 'city': 'Unknown'}, inplace=True)
print("\nDataFrame after filling missing values:")
print(df)
inplace=True 인수는 DataFrame 을 제자리에서 수정합니다. 즉, 결과를 변수에 다시 할당할 필요가 없습니다 (예: df = df.fillna(...)).
파일을 저장하고 터미널에서 실행합니다:
python3 main.py
NaN 값이 대체된 것을 볼 수 있습니다. Eva 의 나이는 이제 다른 나이의 평균으로 채워지고, Frank 의 도시는 'Unknown'으로 채워집니다.
## ... (original DataFrame output) ...
DataFrame after filling missing values:
name age city SALARY_IN_USD
0 Alice 25.0 New York 50000
1 Bob 30.0 Los Angeles 60000
2 Charlie 35.0 New York 70000
3 David 40.0 Chicago 80000
4 Alice 25.0 New York 50000
5 Eva 33.3 Boston 90000
6 Frank 45.0 Unknown 100000
참고: 평균 나이는 (25+30+35+40+25+45)/6 = 33.33...입니다. Pandas 는 이 값으로 NaN을 채웁니다. 위의 출력은 단순화를 위해 35.0을 표시하지만, Eva 의 나이에 대한 실제 출력은 계산된 평균이 될 것입니다.