반응형
숫자형으로 연속된 데이터가 있을 때 그 데이터를 그대로 사용하는 것보다 위의 그림처럼 일정한 구간(bin)으로 나눠서 데이터를 사용하는 것이 더 효울적인 경우가 있다.
이렇게 연속 변수를 일정한 bin으로 나누고, 각 구간을 이산 변수로 변환하는 과정을 구간 분할(bining)이라고 한다.
### 구간 분할 ###
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
##### 범주형 데이터 처리 #####
### 구간 분할 ###
# cut() 메소드 사용 #
# histigram() 함수를 통해 경계값을 구한다 #
count, bin_dividers = np.histogram(df['horsepower'], bins = 3)
# 3개의 구간(bin)을 가질 수 있게 4개의 경계를 구한다. -> 리스트 형태로 반환
print(bin_dividers)
'''
[ 46. 107.33333333 168.66666667 230. ]
'''
bin_names = ['저출력', '보통출력', '고출력']
# bin 이름 저장
df['hp_bin'] = pd.cut(df['horsepower'],
bins = bin_dividers, # 경계
labels = bin_names, # 구간(bin) 이름
include_lowest = True) # 작은 경계값 구간에 포함
# horsepower 열(정수형)을 구간으로 나눠서 hp_bin(범주형)으로 저장
print(df[['horsepower', 'hp_bin']].sample(5))
'''
horsepower hp_bin
189 120.0 보통출력
105 170.0 고출력
68 155.0 보통출력
356 75.0 저출력
359 80.0 저출력
'''
'''
|
cs |
### 더미 변수 ###
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
### 더미 변수 ###
# 범주형 데이터를 회귀분석, 머신러닝 알고리즘에 사용하기 위해서는 컴퓨터가
# 인식 가능한 0, 1(더미 변수)로 변환해주어야 한다.
# 0,1(더미변수)는 크고 작음을 나타내지 않고 특성이 있는지 없는지를 나타난다.
# 범주형 데이터를 0,1 로만 구성되는 원핫벡터(one hot vetor)로 변환한다고
# 해서 원핫인코딩(one hot encoding)이라고 한다.
horsepower_dummies = pd.get_dummies(df['hp_bin'])
# hp_bin 범주형 데이터를 더미 변수로 변환한다.
print(horsepower_dummies)
'''
저출력 보통출력 고출력
0 0 1 0
1 0 1 0
2 0 1 0
3 0 1 0
4 0 1 0
.. ... ... ...
393 1 0 0
394 1 0 0
395 1 0 0
396 1 0 0
397 1 0 0
[392 rows x 3 columns]
'''
|
cs |
반응형
'Pandas' 카테고리의 다른 글
데이터 전처리 - 시계열 데이터 (0) | 2022.11.08 |
---|---|
데이터 전처리 - 정규화 (0) | 2022.11.08 |
데이터 전처리 - 데이터 표준화 (0) | 2022.11.08 |
데이터 전처리 - 중복 데이터 처리 (0) | 2022.11.06 |
데이터 전처리 - 누락 데이터 처리 (0) | 2022.11.06 |