더북(TheBook)

UNIT 23
인덱싱과 자르기

DATA SCIENCE FOR EVERYONE icon_day

 

numpy 배열은 파이썬 리스트와 같은 방식의 인덱싱[i]과 슬라이싱[i:j]을 지원한다. 이외에도 numpy 배열에서는 불 인덱싱(boolean indexing)도 가능하다. 불 값으로 된 배열을 인덱스로 사용하면 대상 배열의 인덱스가 True인 아이템만 결과로 추출할 수 있다. 불 인덱싱은 오른쪽(추출)으로도 쓸 수 있고, 왼쪽(배정)으로도 쓸 수 있다.

데이터 분석을 하는 중에 의뢰인이 데이터셋 dirty에 들어 있는 데이터는 절대 음수가 될 수 없다고 전해 왔다고 하자. 즉, 음수 값은 진짜 값이 아닌 오류이며, 여러분은 이를 더 말이 되는 값(0 등)으로 바꿔야 한다. 이러한 작업을 데이터 클리닝(data cleaning)이라고 하는데, 더러운 데이터를 깨끗이 하려면 이상한 값을 찾아내어 합리적인 대안으로 교체해야 한다.


dirty = np.array([9, 4, 1, -0.01, -0.02, -0.001])

whos_dirty = dirty < 0 # 불 배열을 불 인덱스로 사용한다.

whos_dirty

>>>

array([False, False, False, True, True, True], dtype=bool)


dirty[whos_dirty] = 0 # 모든 음수 값을 0으로 바꾼다.

dirty

>>>

array([9, 4, 1, 0, 0, 0])

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.