class="layout-aside-right paging-number">
본문 바로가기
데이터 분석/Python

python 패턴북

by heestory323 2025. 4. 8.

 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))