데이터 정리와 접근

Python으로 범주형 데이터 다루기

Kasey Jones

Research Data Scientist

범주형 데이터의 잠재적 문제

1) 불일치 값: "Ham", "ham", " Ham"

2) 오탈자 값: "Ham", "Hma"

3) 잘못된 dtype: df['Our Column'].dtype

dtype('O')
Python으로 범주형 데이터 다루기

문제 식별

다음 중 하나 사용:

  • Series.cat.categories
  • Series.value_counts()
dogs["get_along_cats"].value_counts()
No     2503
yes     275
no      156
Noo       2
 NO       1
Python으로 범주형 데이터 다루기

문제 수정: 공백

공백 제거: .strip()

dogs["get_along_cats"] = dogs["get_along_cats"].str.strip()

빈도 확인:

dogs["get_along_cats"].value_counts()
No     2503
yes     275
no      156
Noo       2
NO        1   # < ---- 더 이상 공백 없음
Python으로 범주형 데이터 다루기

문제 수정: 대소문자

대소문자 통일: .title(), .upper(), .lower()

dogs["get_along_cats"] = dogs["get_along_cats"].str.title()

빈도 확인:

dogs["get_along_cats"].value_counts()
No     2660 
Yes     275
Noo       2
Python으로 범주형 데이터 다루기

문제 수정: 철자 오류

.replace()로 오탈자 수정

replace_map = {"Noo": "No"}
dogs["get_along_cats"].replace(replace_map, inplace=True)

빈도 확인:

dogs["get_along_cats"].value_counts()
No     2662
Yes     275
Python으로 범주형 데이터 다루기

데이터 유형 확인

dtype 확인

dogs["get_along_cats"].dtype
dtype('O')

다시 범주형으로 변환

dogs["get_along_cats"] = dogs["get_along_cats"].astype("category")
Python으로 범주형 데이터 다루기

str 접근자 사용

문자열 검색

dogs["breed"].str.contains("Shepherd", regex=False)
0        False
1        False
2        False
...
2935     False
2936     True
Python으로 범주형 데이터 다루기

loc으로 데이터 접근

범주로 Series 값 접근

dogs.loc[dogs["get_along_cats"] == "Yes", "size"]

Series 값 개수:

dogs.loc[dogs["get_along_cats"] == "Yes", "size"].value_counts(sort=False)
small      69
medium    169
large      37
Python으로 범주형 데이터 다루기

정리 및 접근 실습

Python으로 범주형 데이터 다루기

Preparing Video For Download...