DataFrame을 사용할때 NaN(Null) 인 데이터만 추출하고 싶은 경우가 있습니다.
isnull 함수를 사용해서 DataFrame에 NaN(Null)이 존재하는 행만 추출하는 여러 가지 예제를 보도록 하겠습니다.
테스트 데이터 준비
먼저 예제를 실행할 수 있는 테스트용 데이터를 만들겠습니다.
random 함수를 사용해 랜덤으로 생성된 숫자를 DataFrame에 추가하겠습니다.
열은 ABCDE로 지정하겠습니다.
그리고 마지막 줄에서 iloc로 Null을 설정해두겠습니다.
import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randn(5,5))
df.columns=list('ABCDE')
df.iloc[0,0]=np.nan
df.iloc[1,1]=np.nan
df.iloc[2,2]=np.nan
df.iloc[2,3]=np.nan
df.iloc[3,3]=np.nan
df.iloc[4,4]=np.nan
print(df)
테스트용 데이터
A B C D E
0 NaN -1.023207 0.511348 0.440254 -0.764206
1 -0.828928 NaN -1.069222 -0.918307 -0.147165
2 1.446926 0.154496 NaN NaN 0.545886
3 0.572178 0.233471 0.858562 NaN 1.937519
4 0.184697 -0.623517 0.692489 -0.642130 NaN
isnull 함수로 NaN 찾기
DataFrame에 저장해놓은 값 중에서 NaN인 행만 추출하는 방법을 보겠습니다.
A열에 NaN이 있는 행만 추출
import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randn(5,5))
df.columns=list('ABCDE')
df.iloc[0,0]=np.nan
df.iloc[1,1]=np.nan
df.iloc[2,2]=np.nan
df.iloc[2,3]=np.nan
df.iloc[3,3]=np.nan
df.iloc[4,4]=np.nan
print(df[df['A'].isnull()])
결과
A B C D E
0 NaN -0.953181 1.558396 1.689929 0.043105
B열에 NaN이 있는 행만 추출
import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randn(5,5))
df.columns=list('ABCDE')
df.iloc[0,0]=np.nan
df.iloc[1,1]=np.nan
df.iloc[2,2]=np.nan
df.iloc[2,3]=np.nan
df.iloc[3,3]=np.nan
df.iloc[4,4]=np.nan
print(df[df['B'].isnull()])
결과
A B C D E
1 -1.220613 NaN 0.413119 -1.100617 -0.928591
C열에 NaN이 있는 행만 추출
import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randn(5,5))
df.columns=list('ABCDE')
df.iloc[0,0]=np.nan
df.iloc[1,1]=np.nan
df.iloc[2,2]=np.nan
df.iloc[2,3]=np.nan
df.iloc[3,3]=np.nan
df.iloc[4,4]=np.nan
print(df[df['C'].isnull()])
결과
A B C D E
2 -1.252344 0.080301 NaN NaN 0.604913
D열에 NaN이 있는 행만 추출
import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randn(5,5))
df.columns=list('ABCDE')
df.iloc[0,0]=np.nan
df.iloc[1,1]=np.nan
df.iloc[2,2]=np.nan
df.iloc[2,3]=np.nan
df.iloc[3,3]=np.nan
df.iloc[4,4]=np.nan
print(df[df['D'].isnull()])
결과
A B C D E
2 -1.308563 1.859606 NaN NaN -0.836260
3 -0.080404 -0.097119 0.205891 NaN 0.240021
E열에 NaN이 있는 행만 추출
import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randn(5,5))
df.columns=list('ABCDE')
df.iloc[0,0]=np.nan
df.iloc[1,1]=np.nan
df.iloc[2,2]=np.nan
df.iloc[2,3]=np.nan
df.iloc[3,3]=np.nan
df.iloc[4,4]=np.nan
print(df[df['E'].isnull()])
결과
A B C D E
4 1.653931 -1.612026 0.707346 -0.190995 NaN
지정한 열에서 값이 NaN인 행만 추출하고 있습니다.
댓글