본문 바로가기
데이터 분석/파이썬 (Python)

[파이썬] 데이터 중복제거, 매핑, 치환 하기

by thomasito 2021. 8. 2.
반응형

데이터 분석에 중복된 값이 존재할 수 있다. 이러한 경우 중복된 데이터를 핸들링할 수 있는 방법이 필요하다.

1. 데이터 중복 제거하기

데이터프레임.drop_duplicates([열이름1],[열이름2],[열이름3]...)

data = pd.DataFrame({'k1':['banana','tomato']*4, 'k2':[1,1,2,3,3,5,5,5]}) # 임의의 데이터 프레임을 생성 data.drop_duplicates() # 중복 데이터가 있는 로우 삭제

7번 데이터가 k1 : tomato, k2 ; 5 인 경우가 있어 삭제되었다.

data['v1'] = range(8) # v1 열 추가 data.drop_duplicates(['k1']) # k1 컬럼을 기반으로 중복데이터 삭제 data.drop_duplicates(['k1','k2'], keep='last') # last 옵션을 넘기면 마지막으로 발견된 값을 환원

2. 함수매핑을 이용하여 데이터 변형

데이터프레임.map(함수/딕셔너리)

data = pd.DataFrame({'food':['bacon','pp','ba','Past','corn','Bacon','pastr','Honey ham', 'nova lox'], 'ounces':[4,3,12,6,7.5,8,3,5,6]}) data

햄 이름이 들어간 데이터를 ['food'] 컬럼에 햄 무게가 들어간 데이터를 ['ounces']에 넣어준다.

meat_to_animal = {'bacon':'pig','pp':'pig','ba':'pig','past':'pig','corn':'cow','bacon':'cow','pastr':'cow','honey ham':'cow', 'nova lox':'cow'}

meat_to_animal 이라는 딕셔너리를 만들어준다. 그리고 map 함수 괄호 안에 이 딕셔너리를 넣어주면 자동으로 맵핑을 한다.

lowercased = data['food'].str.lower() # food 컬럼을 소문자로 변경하여 lowercased 에 저장하고 data['animal'] = lowercased.map(meat_to_animal) # 기존에 입력해 놓은 튜플대로 animal 컬럼을 맵핑하여, data 데이터 프레임에 추가 data

3. 값 치환하기

데이터프레임/시리즈.replace([변경전 데이터],[변경후 데이터])

data = pd.Series([1., -999., 2., -999., -1000., 3.]) data

아래와 같은 시리즈를 간단히 만들어 준다. (데이터프레임이 아니면 주피터에서 이쁘게 안 나온다 ㅠ)

data.replace(-999, np.nan) # -999 를 누락된 데이터로 변경

아래와 같이 -999 가 NaN 값으로 치환되었다.

위 예시는 시리즈(Series)로 하긴 했지만 데이터프레임(DataFrame)으로 하는 경우도 동일하다.

반응형

댓글