[Ep.10] AI-REMEMBER (07.08)

권승민·2021년 7월 8일
0

♣ 오늘 LMS 노드 9는 어제에 이어서 pandas, matplotlib, numpy와 같은 파이썬 라이브러리를 활용한 데이터 분석에 대해서 이어서 학습하는 노드입니다. 데이터 분석 과정에서 대부분의 비중을 차지하는 데이터 전처리에 대해 다루고 있는 노드입니다.

데이터 전처리가 데이터 분석과정에서 매우 중요한 만큼 다른 노드에 비해 좀 더 꼼꼼히 읽고 정리하느라 오늘 LMS노드는 9.4절의 내용까지만 정리했음을 알려드려요!

Sequence 1. LMS (9.1~9.4절)

A. 결측치 (Missing Data)

  1. 데이터 전처리 : 모델에 데이터를 투입하기 전까지의 전 과정을 아울러 이른다.
  2. 전처리가 충분히 되지 않았거나 잘못된 데이터를 사용하는 경우 분석 결과의 질이나 신뢰도뿐만 아니라 예측 모델에 대한 정확도도 떨어질 수 있으므로, 데이터 분석에 있어 전처리는 필수 코스이다.
  3. 주로 사용되는 용어들 : 결측치, 중복된 데이터, 이상치, 정규화, 원-핫 인코딩, 구간화
  4. 현실에서 다루는 데이터에는 결측치가 포함되는 경우가 꽤 있다. 데이터를 수집하는 과정에서 누락되지 않는 것이 가장 Best이긴 하나, 결측치가 존재한다면 처리하는 과정이 필요하다.
  5. 결측치 처리 방법 2가지 : 결측치가 있는 데이터 삭제, 결측치를 공통의 값으로 대체
  6. 결측치를 처리할 때에는 분석하고자 하는 데이터의 특성에 따라 유연하게 해결하는 것이 좋다.
  7. 데이터프레임 이름.drop('공지사항', axis=1) : 데이터프레임 내 '공지사항' 컬럼을 삭제하는 메서드
  8. DataFrame.isnull() : 각 데이터마다 결측치가 있으면 True, 아니면 False로 반환
  9. DataFrame.any(axis=1) : 행마다 하나라도 True가 있으면 True, 아니면 False로 반환
  10. (9번 내용에 대한 보충내용) axis=0 : 함수가 열단위로 적용 / axis=1 : 함수가 행단위로 적용
  11. 아래와 같은 결론이 나오는 이유 : index 191의 경우 일부 항목에 대해서만 결측치여서 replace 방법을 이용하여 어느 정도 해결이 가능하지만, index 196, 197, 198의 경우에는 모든 항목이 결측치이므로 아예 제거하는 것이 효과적인 처리이기 때문
  12. 아래 코드는 dropna() 메서드를 이용해 결측치를 삭제하고 inplace=True 옵션으로 변경된 내용을 데이터프레임 내부에 바로 적용시킨 것이다.
trade.dropna(how='all', subset=['수출건수', '수출금액', '수입건수', '수입금액', '무역수지'], inplace=True)
  1. (참고) 시계열 데이터 : 통계숫자를 시간의 흐름에 따라 일정한 간격마다 기록한 통계 데이터이다.
  2. 시계열 특성을 띤 데이터는 앞뒤 데이터를 통해 결측치를 대체할 수 있다.
  3. 이상 내용은 수치형 데이터의 결측치 삭제 및 대체에 대한 내용으로, 범주형 데이터의 경우 새로운 범주로 대체하거나 결측치가 적은 경우 최빈값으로 대체하거나 시계열 데이터일 경우 앞뒤 데이터를 기반으로 결측치를 대체할 수도 있다.

B. 중복된 데이터

  1. DataFrame.duplicated() : 중복된 데이터가 있는지 없는지를 불(Boolean) 값으로 반환
  2. DataFrame.drop_duplicates() : 중복된 데이터를 삭제하는 메서드
  3. id가 중복인 데이터가 2개인데, 만일 id값이 사람마다 반드시 unique하다는 조건이 붙으면 둘 중 하나는 반드시 삭제해야 한다.
  4. 보통은 index 값이 클수록 가장 나중에 들어온 데이터이다.
  5. id가 중복된 경우에는 가장 나중의 값만을 남긴다.
    ★ 참고자료 : 데이터프레임 결측치 삭제,중복

C. 이상치 (Outlier)

  1. 대부분이 차지하는 값의 범위를 벗어나 극도로 크거나 작은 수치를 나타내는 데이터를 말한다.
  2. 이상치를 찾아내는 가장 간단하지만 자주 사용되는 방법 : 평균과 표준편차를 이용한 Z-score 방법이다.
  3. trade.loc[outlier(trade, '찾고자 하는 컬럼', z)] 코드에서 z의 값은 기준치이며, 이 값이 클수록 이상치와 그 개수가 적어질 수 있다.
  4. IQR을 활용한 이상치 처리 - 상자그림 : 이상치 확인 (그림에서 박스를 벗어난 점들이 이상치에 해당되는 점들이다.)
  5. IQR(Interquartile range) : 사분위범위수, 데이터의 중간 50% 범위를 말한다.
  6. IQR 계산 공식 : Q3-Q1 (Q3는 제 3사분위수, Q1은 제 1사분위수이다.)
  7. 아래 그림과 같이 Q1-1.5IQR 보다 왼쪽이거나 Q3+1.5IQR 보다 오른쪽에 있는 수치들을 이상치라고 판단한다.
  8. 이상치 처리 예시코드 해석
  • df, col에 대해 정의된 함수 outlier2에 대하여 Q1, Q3, IQR의 식이 주어졌을 때 이상치 조건을 만족하는 것을 모두 찾는다.

Sequence 2. Python Master

♣ 파이썬마스터 같은 경우에는 33장 클로저 부분에서 다소 어려움을 느끼면서 이야기 조각만 남긴 채 끝이 났고, 저도 정리하려다 시간이 부족해서 그냥 내일 다시 정리하기로 했습니다..ㅠ 그래서 32장 람다표현식 부분을 열심히 팠다는 건 안 비밀..?



profile
날개를 달고 날아오르자!

0개의 댓글