hossam.my_prep¶
hossam.my_prep ¶
long2wide ¶
long2wide(df, hue, values, dropna=True)
long format 데이터프레임을 group 단위로 컬럼을 펼쳐 wide format으로 변환하는 함수
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
- df
|
변환할 데이터프레임 |
required | |
- hue
|
펼칠 기준이 되는 그룹 열 이름 (각 값이 새 열이 됨) |
required | |
- values
|
펼칠 값이 담긴 열 이름 |
required | |
- dropna
|
결측치 행을 결과에서 제외할지 여부 (기본값 True) |
required |
Returns - wide format으로 변환된 데이터프레임
log_transform ¶
log_transform(
df,
log_columns=None,
log1p_columns=None,
reflect_columns=None,
verbose=True,
)
로그변환 함수
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
df
|
DataFrame
|
변환을 적용할 데이터프레임 |
required |
log_columns
|
list
|
순수 로그 변환할(우측 꼬리, 0 없음) 컬럼명 리스트 (기본값: None) |
None
|
log1p_columns
|
list
|
log(1+x) 변환할(우측 꼬리) 컬럼명 리스트 (기본값: None) |
None
|
reflect_columns
|
list
|
반사 후 로그 변환할(좌측 꼬리) 컬럼명 리스트 (기본값: None) |
None
|
verbose
|
bool
|
컬럼별 변환식·역변환식과 왜도 변화를 출력할지 여부 (기본값: True) |
True
|
Returns:
| Name | Type | Description |
|---|---|---|
DataFrame |
변환이 적용된 데이터프레임 (원본은 변경되지 않는다) |
Raises:
| Type | Description |
|---|---|
ValueError
|
|
inverse_log_transform ¶
inverse_log_transform(
df,
log_columns=None,
log1p_columns=None,
reflect_columns=None,
verbose=True,
)
log_transform() 으로 변환된 컬럼을 원래 값(단위)으로 되돌리는 함수
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
df
|
DataFrame
|
역변환을 적용할 데이터프레임 |
required |
log_columns
|
list
|
순수 로그 변환했던(우측 꼬리) 컬럼명 리스트 (기본값: None) |
None
|
log1p_columns
|
list
|
log(1+x) 변환했던(우측 꼬리) 컬럼명 리스트 (기본값: None) |
None
|
reflect_columns
|
dict
|
반사 변환했던(좌측 꼬리) 컬럼의 {컬럼명: 변환 당시의 최댓값} (예: {'B': 396.9}) (기본값: None) |
None
|
verbose
|
bool
|
컬럼별 역변환식과 값의 범위 변화를 출력할지 여부 (기본값: True) |
True
|
Returns:
| Name | Type | Description |
|---|---|---|
DataFrame |
역변환이 적용된 데이터프레임 (원본은 변경되지 않는다) |
labeling ¶
labeling(df, columns, save_path=None, verbose=True)
지정한 범주형 컬럼들의 값을 0부터 시작하는 정수로 변환하는 함수
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
df
|
DataFrame
|
라벨링을 적용할 데이터프레임 |
required |
columns
|
list
|
라벨링할 컬럼명 리스트 |
required |
save_path
|
str
|
학습된 인코더들을 저장할 pkl 파일 경로 (예: 'models/encoders.pkl') (기본값: None, 저장하지 않음) |
None
|
verbose
|
bool
|
컬럼별로 원래 값이 어떤 정수에 대응되는지 출력할지 여부 (기본값: True) |
True
|
Returns:
| Name | Type | Description |
|---|---|---|
DataFrame |
라벨링이 적용된 데이터프레임 (원본은 변경되지 않는다) |
replace_missing ¶
replace_missing(
df,
columns=None,
method="mean",
value=None,
verbose=True,
)
지정한 컬럼들의 결측치를 삭제하거나 다른 값으로 대체하는 함수
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
df
|
DataFrame
|
결측치를 처리할 데이터프레임 |
required |
columns
|
list
|
결측치를 처리할 컬럼명 리스트. None 이면 결측치가 있는 컬럼을 자동으로 선택한다 (기본값: None) |
None
|
method
|
str
|
결측치를 어떻게 처리할지 지정한다. 대소문자는 구분하지 않는다 (기본값: 'mean') - 'drop': 결측치가 있는 행을 삭제 - 'value': 사용자가 value 파라미터로 지정한 고정값 - 'mean': 해당 컬럼의 평균 (수치형) - 'median': 해당 컬럼의 중앙값 (수치형) - 'max': 해당 컬럼의 최댓값 (수치형) - 'min': 해당 컬럼의 최솟값 (수치형) - 'mode': 해당 컬럼의 최빈값 (수치형·범주형 모두 가능) |
'mean'
|
value
|
any
|
method='value' 일 때 결측치를 대체할 고정값 (기본값: None) |
None
|
verbose
|
bool
|
컬럼별 결측치 개수와 대체값을 출력할지 여부 (기본값: True) |
True
|
Returns:
| Name | Type | Description |
|---|---|---|
DataFrame |
결측치가 처리된 데이터프레임 (원본은 변경되지 않는다) |
replace_outlier ¶
replace_outlier(
df,
columns=None,
method="bound",
value=None,
verbose=True,
)
지정한 컬럼들의 이상치를 다른 값으로 대체하는 함수
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
df
|
DataFrame
|
이상치를 대체할 데이터프레임 |
required |
columns
|
list
|
이상치를 대체할 컬럼명 리스트. None 이면 df 의 수치형 컬럼을 자동으로 선택한다 (기본값: None) |
None
|
method
|
str
|
이상치를 무엇으로 대체할지 지정한다. 대소문자는 구분하지 않는다 (기본값: 'bound') - 'bound': 이상치 경계값. - 'median': 해당 컬럼의 중앙값 - 'mean': 해당 컬럼의 평균 - 'value': 사용자가 value 파라미터로 지정한 고정값 |
'bound'
|
value
|
number
|
method='value' 일 때 이상치를 대체할 고정값 (기본값: None) |
None
|
verbose
|
bool
|
컬럼별 이상치 경계와 대체된 개수를 출력할지 여부 (기본값: True) |
True
|
Returns:
| Name | Type | Description |
|---|---|---|
DataFrame |
이상치가 대체된 데이터프레임 (원본은 변경되지 않는다) |
dummies ¶
dummies(df, columns, drop_first=True, verbose=True)
지정한 범주형 컬럼들을 값의 종류마다 0/1 컬럼으로 펼치는 함수
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
df
|
DataFrame
|
더미 변환을 적용할 데이터프레임 |
required |
columns
|
list
|
더미 변환할 컬럼명 리스트 |
required |
drop_first
|
bool
|
각 컬럼에서 만들어진 더미 중 첫 번째를 제외할지 여부 (기본값: True) k개의 값에서 k개의 더미를 모두 만들면 서로의 합이 항상 1이 되어 완전한 다중공선성(더미 변수 함정)이 생기므로, 하나를 빼서 기준(reference) 범주로 삼는다 |
True
|
verbose
|
bool
|
컬럼별로 생성된 더미 컬럼과 생략된 컬럼을 출력할지 여부 (기본값: True) |
True
|
Returns:
| Name | Type | Description |
|---|---|---|
DataFrame |
더미 변환이 적용된 데이터프레임 (원본은 변경되지 않는다) |
reduce_vif ¶
reduce_vif(df, columns=None, threshold=10.0, verbose=True)
다중 공선성이 사라질 때까지 VIF 가 가장 큰 변수를 하나씩 반복 제거하는 함수
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
df
|
DataFrame
|
다중 공선성을 제거할 변수들이 포함된 데이터프레임 |
required |
columns
|
list
|
다중 공선성을 판단/제거할 컬럼명 리스트. None 이면 df 의 수치형 컬럼을 자동으로 선택한다 (기본값: None) |
None
|
threshold
|
float
|
다중 공선성 판단 기준이 되는 VIF 임계값 (기본값: 10.0) |
10.0
|
verbose
|
bool
|
제거 과정과 결과를 단계별로 출력할지 여부 (기본값: True) |
True
|
Returns:
| Name | Type | Description |
|---|---|---|
DataFrame |
대상 변수들의 VIF 가 모두 threshold 미만이 되도록 일부 변수가 제거된 데이터프레임. 대상이 아닌 컬럼은 원래 순서대로 보존된다. |
scaling ¶
scaling(
df,
columns=None,
method="standard",
save_path=None,
verbose=True,
)
지정한 컬럼들의 값의 범위(스케일)를 통일하는 함수
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
df
|
DataFrame
|
스케일링을 적용할 데이터프레임 |
required |
columns
|
list
|
스케일링할 컬럼명 리스트. None 이면 df 의 수치형 컬럼을 자동으로 선택한다 (기본값: None) |
None
|
method
|
str
|
사용할 스케일러 이름. 대소문자와 뒤의 'Scaler' 는 무시하므로 'standard', 'Standard', 'StandardScaler' 를 모두 같게 취급한다 (기본값: 'standard') - 'standard': (x - 평균) / 표준편차 -> 평균 0, 표준편차 1 - 'minmax': (x - 최소) / (최대 - 최소) -> 0 ~ 1 - 'robust': (x - 중앙값) / IQR -> 이상치의 영향을 덜 받음 - 'maxabs': x / |최대| -> -1 ~ 1 (0을 보존하므로 희소 데이터에 사용) |
'standard'
|
save_path
|
str
|
학습된 스케일러를 저장할 pkl 파일 경로 (예: 'models/scaler.pkl') (기본값: None, 저장하지 않음) |
None
|
verbose
|
bool
|
컬럼별 스케일링 전후의 값의 범위를 출력할지 여부 (기본값: True) |
True
|
Returns:
| Name | Type | Description |
|---|---|---|
DataFrame |
스케일링이 적용된 데이터프레임 (원본은 변경되지 않는다) |
pca ¶
pca(
df,
y=None,
n_components=0.8,
scale=True,
method="standard",
save_path=None,
report=True,
plot=True,
biplot=None,
palette="coolwarm",
hue_palette="tab10",
width=1280,
height=640,
random_state=RANDOM_STATE,
)
스케일링부터 주성분 추출·로딩 해석·시각화까지 한 번에 수행하는 함수
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
df
|
DataFrame
|
주성분 분석을 적용할 데이터프레임 |
required |
y
|
str
|
종속변수 컬럼명. 지정하면 분석에서 제외하고 결과에 다시 붙인다 (기본값: None) |
None
|
n_components
|
float | int | str
|
남길 주성분의 기준 (기본값: 0.8) - 0~1 사이 실수: 누적 설명력이 이 값을 넘는 지점까지의 주성분 - 정수: 주성분의 개수 - 'mle': 최대우도추정으로 개수를 자동 결정 |
0.8
|
scale
|
bool
|
분석 전에 스케일링을 수행할지 여부 (기본값: True) |
True
|
method
|
str
|
scale=True 일 때 사용할 스케일러 이름 (기본값: 'standard') |
'standard'
|
save_path
|
str
|
학습된 PCA 객체를 저장할 pkl 파일 경로 (기본값: None, 저장하지 않음) |
None
|
report
|
bool
|
주성분 로딩 벡터표를 출력할지 여부 (기본값: True) |
True
|
plot
|
bool
|
누적 설명력 그래프와 로딩 히트맵을 출력할지 여부 (기본값: True) |
True
|
biplot
|
list | str
|
바이플롯으로 그릴 [x축 주성분, y축 주성분] 쌍의 2차원 리스트. 'all' 이면 채택된 주성분의 모든 조합을 그린다 (기본값: None, 그리지 않음) |
None
|
palette
|
str
|
로딩 히트맵의 색상 팔레트 (기본값: 'coolwarm') |
'coolwarm'
|
hue_palette
|
str
|
바이플롯에서 종속변수를 구분할 색상 팔레트 (기본값: 'tab10') |
'tab10'
|
width
|
int
|
서브플롯 한 칸의 가로 픽셀 (기본값: 1280) |
1280
|
height
|
int
|
서브플롯 한 줄의 세로 픽셀 (기본값: 640) |
640
|
random_state
|
int
|
재현성을 위한 랜덤시드 (기본값: RANDOM_STATE) |
RANDOM_STATE
|
Returns:
| Name | Type | Description |
|---|---|---|
DataFrame |
주성분 점수(PC1, PC2, ...) 데이터프레임. y 를 지정했다면 종속변수가 함께 붙는다 |
Raises:
| Type | Description |
|---|---|
ValueError
|
|