군침이 싹 도는 코딩
streamlit 데이터 프레임 불러오기 중 레이블/원핫 인코딩 자동으로 하기 본문
X_new = pd.DataFrame()
for name in X.columns :
print(name)
# 각 컬럼 데이터를 가져온다.
data = X[name]
# 문자열인지 아닌지 나눠서 처리하면 된다.
if data.dtype == object :
# 문자열이니까, 갯수가 2개인지 아닌지 파악해서
# 2개이면 레이블 인코딩 하고,
# 그렇지 않으면 원핫인코딩 하도록 코드 작성
if data.nunique() <= 2 :
# 레이블 인코딩
label_encoder = LabelEncoder()
X_new[name] = label_encoder.fit_transform(data)
else :
# 원핫인코딩
ct = ColumnTransformer( [ ('encoder', OneHotEncoder(), [0] ) ] ,
remainder='passthrough' )
col_names = sorted(data.unique())
X_new[ col_names ] = ct.fit_transform( data.to_frame() )
else :
# 숫자 데이터 처리
X_new[name] = data
# 인코딩의 목적은 데이터 프레임을 불러와서 Kmeans 로 그룹화를 할때
문자열은 넣으면 에러가 나는데 이를 방지하기 위해서이다.
먼저 빈 데이터 프레임을 만든다
그 후 for 반복문을 사용해 각 컬럼 데이터를 가져오게 한다
그 다음 문자열인지 숫자열인지를 구분해 숫자열이면 그대로 출력하고
문자열이면 인코딩을 하게 한다
이때 갯수가 2개 이하이면 레이블 인코딩을
이상이면 원 핫 인코딩을 하게 한다
'Python > Streamlit' 카테고리의 다른 글
Data Dashboard App 개발 순서 (2) 웹 대시보드 만들기 (0) | 2022.12.14 |
---|---|
Data Dashboard App 개발 순서 (1) 데이터 분석 (0) | 2022.12.13 |
Visual studio code 파일 분리해서 처리하는 법 (0) | 2022.12.13 |
Visual studio code 데이터를 입력받는 함수 (input) (0) | 2022.12.13 |
스트림릿의 다양한 UI 함수 2 (dataframe,button,radio,checkbox,selectbox,multiselect,slider,expender) (0) | 2022.12.12 |