Pandas DataFrame 공백(NaN) 행만 추출 방법

DataFrame을 사용할때 NaN(Null) 인 데이터만 추출하고 싶은 경우가 있습니다.

isnull 함수를 사용해서 DataFrameNaN(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인 행만 추출하고 있습니다.

댓글