1. 카테고리별로 그룹 나누기 — ANOVA 검정 전처리
[데이터프레임[조건][컬럼] for 조건 in 반복]
groups = [df['price'][df['club_member_status'] == category] for category in df['club_member_status'].unique()]
2. agg()에서 열마다 다른 연산 지정하기
df.groupby(기준컬럼).agg({
'컬럼1': '연산1',
'컬럼2': '연산2',
...
})
3. 리스트 컴프리헨션으로 데이터 필터링
[값 for 값 in 리스트 if 조건]
squared_even = [x**2 for x in range(10) if x % 2 == 0]
# [0, 4, 16, 36, 64]
데이터 전처리
1. 문자열 아닌 수치형 컬럼만 필터링 (컴프리헨션)
[c for c in df.columns if df[c].dtype != 'object']
2. 특정 문자 포함된 행(이상치) 제거하기
df = df[df['컬럼명'].str.contains('문자열') == False]
3. 데이터 컬럼 선택 (제외 컬럼 정의 방식)
columns = [c for c in df.columns if c not in ['is_safe']]
4. MinMaxScaler 정규화 예시 (이상치 영향 비교)
from sklearn.preprocessing import MinMaxScaler
import numpy as np
y = np.arange(100)
scaled = MinMaxScaler().fit_transform(y.reshape(-1, 1))
print(scaled.mean(), scaled.std())
# 이상치 추가 후
y[9] = 10000
scaled = MinMaxScaler().fit_transform(y.reshape(-1, 1))
print(scaled.mean(), scaled.std())
5. 데이터프레임 전체 로그 변환
log_df = np.log(df)
6. StandardScaler로 표준화 (평균 0, 분산 1)
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaled_data = scaler.fit_transform(df)
scaled_df = pd.DataFrame(scaled_data, columns=df.columns)
7. KNN 분류 모델 흐름
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
# train/test 분리
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 스케일링
sc = StandardScaler()
X_train_std = sc.fit_transform(X_train)
X_test_std = sc.transform(X_test)
# 모델 학습
knn = KNeighborsClassifier()
knnc = knn.fit(X_train_std, y_train)
# 예측
y_pred_knnc = knnc.predict(X_test_std)
8. 분류 결과 확인 (정밀도, 재현율, F1)
from sklearn.metrics import classification_report
print(classification_report(y_test, y_pred_knnc))
'데이터 분석 > Python' 카테고리의 다른 글
| 시각화 (0) | 2025.04.17 |
|---|---|
| 데이터 전처리(Scaling) : 데이터 표준화/정규화, 로그, KNN (0) | 2025.04.08 |
| Shift, Rolling, Expanding / 피어슨 상관계수, Point-Biserial Correlation, Anova 검정, Cramer's V (0) | 2025.04.04 |
| df 형태 변환 5가지 : Transpose, pivot_table, melt, stack, unstack (0) | 2025.04.03 |
| Pandas 메소드와 함수 (0) | 2025.03.19 |