201217 Python Study
Pandas의 Input으로 주기 위한 데이터는 깨끗하거나 형태가 단일한 경우가 극히 드물다.
이런 경우, 누락데이터를 처리해주어야한다.
None, Nan(Not a Number) 등이 누락된 데이터를 말한다.
누락된 데이터의 특성을 한번 살펴보자
1+np.nan의 값은 nan으로 나오고
None값은 연산을 할경우 오류가 발생한다.
이를 볼때, None값을 가지는 배열에서 연산을 할 경우 오류를 발생할 것임을 알 수 있다.
■ NaN의 특성
1+ np.nan = nan
0 * np.nan = nan
NaN이 포함된 객체의 모든 연산은 NaN으로 값을 출력하므로 기억해두면 좋다
■Null값 연산
- isnull() / notnull() / dropna() / fillna()
1. isnull() : 데이터의 널값이 존재하는지를 탐지
이를 활용하여, data.isnull().sum() ▶ True 데이터의 합으로 총 Null값의 총 개수를 알 수 있다.
2. notnull() : isnull()의 역
3. dropna() : 데이터에 필터를 적용하여 제거 가능 (delete의 경우 모판을 건드리나, dropna는 건드리지 않는다)
- dropna()는 axis를 지정할 수 있는데, Series는 하나의 축밖에 없기 때문에 dropna()를 할 경우 Default axis=0을 기준으로 dropna()를 실행한다.
- 추가적으로 axis=1을 할 경우, 에러가 난다.
- 처음 데이터를 가공할 때, axis를 방향성에 대해서 굉장히 헷갈릴 수 있는데 쉽게 할 수 있는 방법으로
★ 새로 생겨나는 axis가 가장 높은 axis를 가진다
해당 데이터에서, 세로 방향(axis=0)은 기존에 가지고 있던 축이고, data2를 추가하면서, axis가 새로 생겨났으므로 가장 높은 axis를 가지는 것으로 이해를 하면 헷갈리지 않을 수 있다.
이 경우, dropna(axis=0) 과 dropna(axis=1)의 차이를 살펴보면,
dropna(axis=0)은 기존에 data1을 dropna한 결과에서 유추하면 왜 저렇게 나왔는지 유추가 가능하며
dropna(axis=1)의 경우 가로축 방향으로 가며, NaN값이 있는 경우 삭제를 하여 모든 Series 객체가 삭제가 된것임을 알 수 있다.
- 그외에도, dropna(thresh=2, how='all'/'any', axis=?) 등의 option이 있습니다.
- thresh=2라면, axis를 정하고 그 axis에 데이터의 개수가 2개 미만이면 그 데이터를 없애는 역할을 합니다
- how는 'all'이라면 모든 데이터가 nan 혹은 None 값이면 없애게 됩니다.
- 'any'는, 모든 데이터가 있어야지만 그 데이터를 살리고, 하나라도 없을 경우 없애게 됩니다.
4. fillna() : 누락값을 채우는데 사용함
data.fillna(method='bfill') or data.fillna(method='ffill')의 2가지 메소드를 사용한다
ffill은 forward-fill로, 이전 값으로 채우고 bfill은 back-fill의 다음 값으로 채운다
■ df.fillna(method='ffill', axis=0) / default axis는 마찬가지로 0이다
■ df.fillna(method='bfill', axis=0)
■ df.fillna('bfill'), method를 안 쓸 경우
모든 누락데이터의 자리에 bfill을 채운다.
'스터디 공간' 카테고리의 다른 글
[회로이론] 인덕터 (Inductor) (0) | 2021.03.01 |
---|---|
[회로이론] Spectre (2) - Syntax (0) | 2021.03.01 |
[Study w/ VS Code] Tensorflow - Day1 (0) | 2021.03.01 |
[회로이론] Spectre (1) - 개론 (0) | 2021.03.01 |
[회로이론/전자회로/수동부품] 캐패시터 / Capacitor / Decap (0) | 2021.01.18 |
댓글