※ 범주형 자료
수치형 자료 : 양적 데이터 , 양적 자료
범주형 자료 : 질적 데이터 , 질적 자료
범주형 자료는 순위형 자료, 명목형 자료로 구분할 수 있습니다.
순위형 : 범주 간 순서가 있는 자료입니다.
평점(1~5점) , 선호도(매우 나쁨~매우 좋음) 등이 있습니다.
명목형 : 범주 간에 순서가 의미 없는 자료입니다.
혈액형(A,B,O,AB) , 성별(남/여) 등이 있습니다.
★ 범주형 자료도 수치형 자료도 표현할 수 있다 ★
순위형 자료의 평점 , 명목형 자료의 반(1반,2반,3반 등) 혹은 남자는 1, 여자는 0과 같이 나타냅니다.
이때 수치는 서열을 나타낼 수도, 나타내지 않을 수도 있습니다.
### 범주형 데이터 처리
## 구간 분할
데이터 분석 알고리즘에 따라 연속한 데이터를 그대로 사용하는 것 보다
일정 구간으로 나누어 분석하는 것이 효율적일 수도 있습니다.
연속 데이터인 가격을 매우쌈, 쌈, 중간, 비쌈, 매우비쌈 으로 구간 분할합니다.
연속 변수를 일정 구간으로 나누고,
각 구간을 ' 범주형 이산 변수 ' 로 변환하는 과정을 구간 분할이라고 합니다.
판다스의 cut 함수를 사용해 연속 데이터를 여러 구간으로 나눌 수 있고,
범주형 데이터로 변환할 수 있습니다.
이전 포스팅에서 사용한 UCI 자동차 연비 데이터셋을 이어서 사용합니다.
마력을 나타내는 'horsepower' 변수를 저출력, 보통, 고출력 3가지로 구간 분할해 표시합니다.
# Numpy - histogram
Numpy 모듈의 histogram 메소드를 사용합니다.
시리즈 데이터, bin 개수를 사용하면 구간을 분할해 리턴합니다.
46 ~ 107 : 257개 데이터
107 ~ 168 : 103개 데이터
168 ~ 203 : 32개 데이터
# Pandas - cut
include_lowest : 각 구간 낮은 경계의 값 포함 여부
labels : 구간 이름
bins : 경계 값 리스트
df['hp_bins']=pd.cut(x=df.horsepower,bins=bins,
labels=['저출력','보통','고출력'],
include_lowest=True)
df.hp_bins
해당 데이터가 각 구간에 맞게 새로운 데이터로 변경되었습니다.
범주형(category) 데이터로 잘 변환이 된 모습입니다.
## 더미 변수
연속형 데이터 -> 구간 분할 작업을 완료 했습니다.
범주형 데이터를 회귀 분석과 같은 머신러닝 알고리즘에는 바로 적용할 수 없습니다.
따라서 이를 수치형 데이터로 변경해 주겠습니다.
0과 1을 사용해 더미변수(dummy variable)로 변경합니다.
여자 / 남자 와 같은 범주 데이터는 여자는 1, 남자는 0과 같이 나타낼 수 있습니다.
저 / 보통 / 고 범주 데이터도 같은 방법으로 나타낼 수 있습니다.
더미 변수로 나타내기 위해 0 , 1의 벡터로만 나타내는 과정을 원 핫 인코딩이라고 합니다.
# Pandas - get_dummies
pandas의 get_dummies 함수를 사용합니다.
범주형 데이터를 인자로 사용해 원핫 인코딩된 데이터 프레임을 반환합니다.
# Pandas - concat
두 데이터 프레임, 시리즈를 연결합니다.
axis = 0 : 위 아래로 연결
axis = 1 : 옆으로 연결
ignore_index = True : 행 번호 새로 부여
join = 'inner' : 컬럼들 교집합 출력
join = 'outer' : 모든 칼럼 다 출력
new_df=pd.concat([df,dummy],axis=1)
new_df
기존 데이터 프레임(df)에 새로운 데이터 프레임(dummy)를 concat을 사용해 연결합니다.
이제 기존의 데이터 열을 삭제합니다.
horsepower : 연속형 데이터
hp_bins : 구간 분할한 범주형 데이터
new_df.drop(['horsepower','hp_bins'],axis=1,inplace=True)
new_df
이번 시간에는 연속형 데이터를 구간 분할하고, 구간 분할한 데이터를 원핫 인코딩해 보았습니다.
데이터 전처리는 복잡하지만 재밌는 과정이라고 생각합니다!!!!!!
'프로그래밍 > Pandas' 카테고리의 다른 글
[Pandas] 데이터 전처리 | 데이터 표준화 | 단위 변환 | 자료형 변환 (0) | 2021.02.10 |
---|---|
[Pandas] 데이터 전처리 | Seaborn | 누락 데이터 | 중복 데이터 (2) | 2021.02.09 |
[Pandas] 데이터 시각화 | Matplotlib | 파이차트 | 박스그래프 (0) | 2021.02.04 |
[Pandas] 데이터 시각화 | Matplotlib | 히스토그램 | 산점도 (4) | 2021.02.01 |
[Pandas] 데이터 시각화 | Matplotlib | 면적 그래프 | 막대 그래프 (0) | 2021.01.30 |
[Pandas] 데이터 시각화 | Matplotlib | 그래프 꾸미기 (1) | 2021.01.11 |
[Pandas] 데이터 시각화 | 판다스 내장 그래프 (2) | 2021.01.06 |
Pandas - 통계 함수 max min corr (2) | 2021.01.05 |