pandas 결측치 제거할 때 row에 값이 하나라도 있으면 제거하지 않기

최진영·2022년 5월 25일
0

판다스에서 결측치, Nan data를 제거할 때 그냥 dropna()를 하면 Nan이 있는 데이터 들이 전부 삭제 되는데 dropna(axis = 1) or dropna(axis = 0)을 작성하면 row나 column 기준으로 삭제 된다.

하지만 내가 원했던 것은 row를 기준으로 Nan의 값이 하나라도 있으면 삭제하지 않는 것이다.
dropna(thresh=1)를 사용하면 된다.

df = pd.DataFrame({"name": ['Alfred', 'Batman', 'Catwoman'],
                   "toy": [np.nan, 'Batmobile', 'Bullwhip'],
                   "born": [pd.NaT, pd.Timestamp("1940-04-25"),
                            pd.NaT]})
df
      name        toy       born
0    Alfred        NaN        NaT
1    Batman  Batmobile 1940-04-25
2  Catwoman   Bullwhip        NaT

그냥 dropna ()를 하면

df.dropna()
     name        toy       born
1  Batman  Batmobile 1940-04-25

nan이 없는 데이터만 남는다.

만약

df.dropna(axis='columns')
       name
0    Alfred
1    Batman
2  Catwoman

axis에 column이나 row으로 넣어 주는 경우 column이나 row를 기준으로 삭제 된다.
위의 경우는 이미 알고 있었고 나는 row에 Nan의 개수가 몇개냐에 따라 제거가 필요했다.

df.dropna(thresh=2)
       name        toy       born
1    Batman  Batmobile 1940-04-25
2  Catwoman   Bullwhip        NaT

pandas 공식 문서를 보니 thresh를 활용하면 가져야하는 데이터의 개수를 기준으로
데이터를 남기고 결측치들을 제거 할 수 있다.

자세한 내용은 pandas.DataFrame.dropna를 참고하자.

0개의 댓글