판다스에서 결측치, 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를 참고하자.