내일배움 본캠프

[내일배움 본캠프] Outlier처리하기, 속성과 메서드

hyeon-ji 2026. 5. 29. 20:28

☆ To do list 

  • 에이타니와 문제풀기
  • CodeKata 2문제 풀기
  • 데이터 전처리 & 시각화 강의 2차시 수강
  • 자소서 작성하기
  • 라이브 세션 수강
  • TIL 작성 및 제출

🤖 에이타니 

오늘은 ' 이상치 처리 방법과 적용 ' 을 주제로 문제를 풀어보았다.

어제 진행했던  '시계열 데이터 보간과 전처리 이해' 주제와 많이 다르지 않아 문제를 푸는데 큰 어려움은 없었다.

 

▶ Outlier 처리방법

→ 우리가 결과를 도출할 때 평균값(mean)을 많이 사용하곤 한다. 하지만 이상치 값이 크게 나타나는 경우는 평균 이용 시 결과가 이상치로 인해 불완전한 값을 가지게 된다. 많이 튀는 이상치가 나왔을 경우 아래와 같은 방법으로 값을 구한다.

 

● 중앙값(Median)

1, 2, 3, 4, 1000

→ 중앙값 = 3

 

→ 가장 기본적인 통계 방법이다.

중앙값을 사용하면 이상치가 매우 크게 나타나더라도 매우 안정적인 값을 얻을 수 있다.

→ 하지만 미세한 변화 감지를 하는 경우에는 전체 데이터 정보를 덜 사용해 알맞지 않을 수 있다.

 

IQR(Interquartile Range)

이상치 탐지의 가장 표준적인 방법 중 하나이다.

1, 2, 5, 4, 8, 4, 4

→ 최대값 : 8
→ 25percentile : 3
→ 75percentile : 4.5
→ 최소값 : 1

박스 플롯(Box Plot) / GPT로 생성한 그림입니다!

 

→ 이상치 탐지에 큰 강점을 가지고 있는 방법이다.

→ 값이 직관적이고 비정규분포에서도 활용이 가능하다.

→ 하지만 데이터가 적을수록 불안정해지는 단점이 있다.

 

● 절사평균(Trimmed Mean)

1, 2, 3, 4, 1000
에서 20% 절사
|
1과 1000제거
|
2, 3, 4

→ 평균 = 3

→ 데이터 양이 충분히 많거나 평균 정보를 유지하고 싶은 경우에 활용되는 방식이다.

→ 하지만 몇 % 절사할 것인지 결정이 필요하고, 데이터 손실이 발생한다.

 

● 이상치 처리방법

 

  • 캡핑(Capping) : 이상치를 특정 백분위수 값으로 제한하여, 극단값의 영향을 줄이면서도 데이터를 보존한다.
  • 로그 변환(Log Transformation) : 로그 변환은 왜도가 큰 데이터를 정규분포에 가깝게 만들어 이상치의 영향을 완화하는 변환 기법이다.
  • 삭제(Deletion) : 이상치를 데이터셋에서 완전히 제거하는 방법이다.
  • Z-score 정규화 : 평균을 0, 표준편차를 1로 만드는 표준화 방법이다.
 

🔐 CodeKata

● 배열의 평균값 구하기

def solution(numbers):
    answer = sum(numbers)/len(numbers)
    if answer % 1 == 0.0 or answer % 1 == 0.5:
      return answer

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
solution(numbers)

 

● 짝수와 홀수 반환하

def solution(num):
  num = int(input("정수를 입력하세요: "))
  if num % 2 == 0:
    answer = 'Even'
  else:
    answer = 'Odd'
  return answer
solution(num)

💻 Python

→ 가로줄은 행(row)
    →  행(row)을 대표하는 이름 ' index '
↓ 세로줄은 열(column)
     → 열(column)을 대표하는 이름 ' label '

 

▶경로

 

절대경로 : 내 PC 기준으로 해당 파일이 어느 위치에 있는지

상대경로 : 이 Python 파일이 실행되는 폴더 기준으로 실행하고 싶은 파일이 어느 위치에 있는지

상대경로로 작성하는 것이 코드나 데이터 공유 시 경로 수정을 하지 않아도 된다.

+ ctrl+C' clipboard ' 사용해서 데이터를 불러오는 방법도 있다!

 

▶ 속성(Attribute)과 메서드(Method)

 

● 속성(Attribute)

● index : index (기본 값으로 RangeIndex)
● columns : column 명
● values : numpy array형식의 데이터 값
● dtypes : column 별 데이터 타입
● T : DataFrame을 전치(Transpose). 즉, 행과 열의 자리를 바꾼다!
● shape : 데이터 형태

 

→ 객체가 가지고 있는 정보나 특성을 나타내고, () 없이 사용한다.

 

● 메서드(Method)

조회 및 탐색 : 데이터를 탐색하고, 정보를 얻기 위한 메서드이다. ' head() ', ' tail() ', 'describe() ', 'info() '등이 있다.
데이터 선택 및 필터링 : 특정 조건에 맞는 데이터를 선택하거나 필터링하기 위한 메서드이다. ' loc[] ', ' query() ',
' filter() '등이 여기에 속한다.
데이터 조작 및 변형 : 데이터를 추가, 삭제, 수정하거나 특정 조건에 맞게 변형하는 메서드이다. ' append() ', ' drop() ', ' rename() ', ' meit() ', ' pivot() '등이 있따.
● 정렬 및 그룹화 : 데이터를 특정 기준에 따라 정렬하거나 그룹화하기 위한 메서드이다. ' sort_values() ', ' sort_index() ', ' groupby() '등이 해당된다.
결합 및 병합 : 두 개 이상의 데이터프레임을 결합하거나 병합하기 위한 메서드이다. ' concat() ', ' merge() ',
' join() '등이 있다.
● 결측치 처리 : 데이터프레임 내 결측치(누락된 데이터)를 처리하기 위한 메서드이다. ' isnull() ', ' notnull() ',
' fillna() ', ' dropna() '등이 있다.
● 통계 및 계산 : 데이터의 기술 통계를 계산하거나 데이터에 대한 수학적 연산을 수행하는 메서드이다. ' mean() ',
' median() ', ' sum() ', ' std() ', ' corr() '등이 포함된다.
● 변형 및 재구성 : 데이터프레임의 구조를 변형하거나 데이터를 재구성하기 위한 메서드이다. ' pivot() ',
' pivot_table() ', ' stack() ', ' unstack() '등이 있다.
● 시계열 데이터 처리 : 시계열 데이터를 처리하기 위한 특수 메서드 집합이다. ' resample() ', ' asfreq() ', ' rolling() '등이 포함된다.

오늘은 VS Code로 실습을 진행하며 라이브 세션을 수강했다. 노트북에 용량이 많이 차지하고 있는건지, 아니면 성능이 떨어져서 그런건진 모르겠지만,, 라이브세션 들으면서 코드 실행하려고 하면 너어어어어ㅓㅓ무 느려서 실시간으로 따라하진 못했다.. 매니저님이 주말에는 열심히 쉬라고 말씀해주셨는데,, 주말 동안 용량 확보를 하고 강의를 보며 다시 한번 따라해봐야겠담..!