Pandas 객체에 결측치를 처리하는 다양한 패턴을 알아본다. 여기서는 데이터프레임 객체의 다중 변수의 결측치를 한 번에 대치하는 방법을 알아본다.
본 게시물을 온전히 이해하기 위해서는 결측치 처리 기초 게시물 “Py) 기초 - Pandas(결측치)”를 먼저 충분히 숙지하는 것을 추천한다.
개요
결측치를 대치하기 위해서 사용하는 Pandas 객체의 메서드로 .fillna()
가 있다. 시리즈 객체에서 해당 메서드를 사용하면 해당 시리즈의 결측치를 모두 특정 값으로 대치할 수 있고, 데이터프레임 객체에서 해당 메서드를 사용하면 해당 객체 모든 변수의 결측치를 대치할 수 있다.
그런데 1개 이상의 일부 변수를 대상으로 대치작업을 실시하려면 코드를 어떻게 작성해야 하는지 알아보자.
실습
다음과 같이 라이브러리와 데이터를 준비한다.
1 | import pandas as pd |
v1 | v2 | v3 | v4 | |
---|---|---|---|---|
0 | 100 | NaN | 321.0 | NaN |
1 | 200 | a | NaN | NaN |
2 | 300 | b | 432.0 | 333.0 |
3 | 400 | NaN | 543.0 | 444.0 |
연속된 위치의 변수의 결측치를 대치해보자.
1 | df1 = df.copy() |
v1 | v2 | v3 | v4 | |
---|---|---|---|---|
0 | 100 | NaN | 321.0 | -999.0 |
1 | 200 | a | -999.0 | -999.0 |
2 | 300 | b | 432.0 | 333.0 |
3 | 400 | NaN | 543.0 | 444.0 |
연속되지 않은 위치의 변수의 결측치를 대치해보자.
1 | df2 = df.copy() |
v1 | v2 | v3 | v4 | |
---|---|---|---|---|
0 | 100 | -999 | 321.0 | -999.0 |
1 | 200 | a | NaN | -999.0 |
2 | 300 | b | 432.0 | 333.0 |
3 | 400 | -999 | 543.0 | 444.0 |
인덱서를 사용하지 않고 온전히 .fillna()
의 기능을 이용해서 다중 변수의 결측치 대치를 한다면 다음과 같이 딕셔너리를 활용할 수 있다.
1 | df3 = df.copy() |
v1 | v2 | v3 | v4 | |
---|---|---|---|---|
0 | 100 | -123 | 321.0 | OK |
1 | 200 | a | NaN | OK |
2 | 300 | b | 432.0 | 333.0 |
3 | 400 | -123 | 543.0 | 444.0 |