Study/Python
더미변수 전환, 전환 되돌리기 파이썬 코드 (Dummy variable Python code)
IT파스칼
2021. 2. 4. 15:54
가변수(Dummy variable, 假變數)란 독립변수를 0과1로 변환한 변수를 의미한다.
일반적인 경우 그 사실 여부에 대해 예/아니오로 확인 가능한 질적 변수(예: 남자인가? 대학교를 졸업했는가?)는 회귀 분석에 직접 투입하는 것이 불가능하다. 이러한 질적 변수를 회귀분석에 사용하기 위해 그 가부를 0 혹은 1 의 숫자 형태로 대응시킨 변수를 가변수라 한다.
범주형 데이터의 정의¶
범주형 데이터는 ‘A’, ‘B’, ‘C’와 같이 종류를 표시하는 데이터를 말한다. 카테고리(category( 데이터라고도 부른다. 다음과 같은 데이터는 모두 범주형 데이터의 예다.
-
성별: 남자, 여자
-
혈액형: A, B, O, AB
-
이름: 홍길동, 성춘향, …
-
주소: 서울, 부산, 대전, …
반드시 문자만 범주형 데이터인 것은 아다. 예를 들어 소속을 나타내는 ‘1반’, ‘2반’, ‘3반’과 같은 데이터는 숫자로 표현된 값이지만 ‘1’이라는 글자를 이용한 것 뿐이지 숫자로서의 의미는 없다. 즉, ‘2’라는 값이 ‘1’이라는 값보다 2배 더 크다는 뜻이 아니므로 이 경우는 범주형 값으로 보아야 한다.
범주형 데이터의 변형¶
대부분의 데이터 분석 모형은 숫자만 입력으로 받을 수 있기 때문에 범주형 데이터는 숫자로 변환해야 한다. 범주형 데이터를 숫자로 변환하는 방법은 두가지다.
-
더미변수화
-
카테고리 임베딩
더미변수화¶
**더미변수(dummy variable)**는 0 또는 1만 가지는 값으로 어떤 특징이 존재하는가 존재하지 않는가를 표시한다. 다음과 같은 명칭으로도 불린다.
더미변수 전환
def get_dummies(df,dummy_list):
if not dummy_list:
return df
else:
df_ = pd.get_dummies(data=df, columns=dummy_list)
return df_
더미변수 전환 되돌리기
def undummify(df, prefix_sep="_"):
cols2collapse = {
item.split(prefix_sep)[0]: (prefix_sep in item) for item in df.columns
}
series_list = []
for col, needs_to_collapse in cols2collapse.items():
if needs_to_collapse:
undummified = (
df.filter(like=col)
.idxmax(axis=1)
.apply(lambda x: x.split(prefix_sep, maxsplit=1)[1])
.rename(col)
)
series_list.append(undummified)
else:
series_list.append(df[col])
undummified_df = pd.concat(series_list, axis=1)
return undummified_df
참고