1234···10
import pandas as pd
import numpy as np

df = pd.read_csv('/kaggle/input/bigdata-csvfile/loan_data.csv')
df['총대출액'] = df['대출A'] + df['대출B']
gender_0 = df[df['성별'] == 0]
gender_1 = df[df['성별'] == 1]

cond0 = gender_0.groupby('지역코드')['총대출액'].sum()
cond1 = gender_1.groupby('지역코드')['총대출액'].sum()
result = np.abs(cond0 - cond1)

print(result.idxmax()) # 1000009974
import pandas as pd
import numpy as np

df = pd.read_csv('/kaggle/input/bigdata-csvfile/loan_data.csv')
df['총대출액'] = df['대출A'] + df['대출B']

df = df.groupby(['지역코드','성별'])['총대출액'].sum().unstack()
df['금액차이'] = np.abs(df[0] - df[1])
df = df.sort_values(by = '금액차이', ascending = False)
print(df) # 1000009974
import pandas as pd
import numpy as np

df = pd.read_csv('/kaggle/input/bigdata-csvfile/crime_data_2014_2020.csv')

발생건수 = df[df['구분'] == '발생건수'].drop(columns = '구분').groupby('년도').sum()
검거건수 = df[df['구분'] == '검거건수'].drop(columns = '구분').groupby('년도').sum()

검거율 = 검거건수 / 발생건수
검거율_max = (검거율.idxmax(axis=1))

result = 0
for year in 검거건수.index:
    crime = 검거율_max[year]
    result += 검거건수.loc[year, crime]
print(result)

 

import pandas as pd
import numpy as np

df = pd.read_csv('/kaggle/input/bigdata-csvfile/crime_data_2014_2020.csv')

# 각 연도별로 각 범죄의 검거건수를 발생건수로 나눈 검거율 계산
검거건수 = df[df['구분'] == '검거건수']
발생건수 = df[df['구분'] == '발생건수']

검거건수 = 검거건수.groupby('년도').sum().drop(columns = '구분')
발생건수 = 발생건수.groupby('년도').sum().drop(columns = '구분')

rate = (검거건수 / 발생건수)
rate = rate.idxmax(axis = 1)

'''
2014    범죄28
2015    범죄24
2016    범죄29
2017    범죄10
2018    범죄19
2019    범죄19
2020     범죄4
'''
검거_2014 = df.loc[(df['년도'] == 2014),'범죄28'].max()
검거_2015 = df.loc[(df['년도'] == 2015),'범죄24'].max()
검거_2016 = df.loc[(df['년도'] == 2016),'범죄29'].max()
검거_2017 = df.loc[(df['년도'] == 2017),'범죄10'].max()
검거_2018 = df.loc[(df['년도'] == 2018),'범죄19'].max()
검거_2019 = df.loc[(df['년도'] == 2019),'범죄19'].max()
검거_2020 = df.loc[(df['년도'] == 2020),'범죄4'].max()

print(검거_2014 + 검거_2015 + 검거_2016 + 검거_2017 + 검거_2018 + 검거_2019 + 검거_2020)

 

 

import pandas as pd
import numpy as np
import warnings
warnings.filterwarnings('ignore')  # 경고 메시지 무시

df = pd.read_csv('/kaggle/input/bigdata-csvfile/employee_data_with_grades.csv')

# 1.
# 연봉 결측채 : 연봉평균
df['연봉'] = df['연봉'].fillna(df['연봉'].mean())
# 근속년수 : 부서명과 근무평가등급이 같은 직원의 근속년수 평균
df['근속년수'] = df.groupby(['부서명', '근무평가등급'])['근속년수'].transform(lambda x : x.fillna(x.mean()))

# 2. 
df['연봉_근속'] = df['연봉'] / df['근속년수']
df['연봉_고객'] = df['연봉'] / df['고객만족점수']

a = df.sort_values(by ='연봉_근속', ascending=False).reset_index().iloc[2]['근속년수']
b = df.sort_values(by ='연봉_고객', ascending=False).reset_index().iloc[1]['교육참가시간수']

print(int(a + b))
import pandas as pd
import numpy as np


df = pd.read_csv('/kaggle/input/bigdata-csvfile/real_estate_data.csv')

train = df.iloc[:800]
test = df.iloc[800:]
y = train['주택가격_만원']

# 유의미한 독립변수
from statsmodels.formula.api import ols
formula = ('주택가격_만원 ~ 주택면적_제곱미터 + 건축년도 + 방_수 + 화장실_수 + 층수')
model = ols(formula,data=train).fit()
# print(model.pvalues < 0.05) # 2개 주택면적_제곱미터, 건축년도


from statsmodels.formula.api import ols
formula2 = ('주택가격_만원 ~ 주택면적_제곱미터 + 건축년도')
model2 = ols(formula2,data=train).fit()

pred = model2.predict(train)
from scipy import stats
st, pv = stats.pearsonr(y, pred)
print(round(st, 3)) #피어슨 상관계수

from sklearn.metrics import mean_squared_error
test_y = test['주택가격_만원']
pred_test = model2.predict(test)
rmse = mean_squared_error(test_y,pred_test, squared=False)
print(round(rmse, 4))

 

import pandas as pd
import numpy as np
from scipy import stats
from statsmodels.formula.api import logit

df = pd.read_csv('/kaggle/input/bigdata-csvfile/loan_approval_data.csv')

# 1.
formula = ('대출승인여부 ~ 나이 + 소득_만원 + 근무시간_주당 + 자녀수 + 신용등급')
model = logit(formula, data = df).fit()
print(round(model.pvalues['근무시간_주당'],3))

# 2.
print(np.exp(model.params['자녀수']))

# 3.
pred = model.predict(df)
print((pred > 0.3).sum())

❤️여존슨- 박스콕스
from sklearn.preprocessing import power_transfrom
df['y'] = power_transform(df['col'])
df['b'] = power_transform(df['col'], method = box-cox )

from scipy import stats
yeo = stats.yeojohnson(df['col'])
box = stats.boxcox(df['col'])

❤️ 표준화1
from sklearn.preprocessing import StandardScaler
scaler =  StandardScaler()
 # 하나의 컬럼만 표준화할때는 대괄호 두개
df['col2'] = scaler.fit_transform(df[['col']])

# 수치형 데이터프레임을 전부 표준화 할때
scaled_df = scaler.fit_transform(df)

❤️ 표준화2 - min-max표준화
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
df['col2'] = scaler.fit_transform(df[[col]])


❤️ 그룹바이 
~ 별로 라고하면 ~라고 나온것을 묶기
#  조건을 걸 컬럼을 데이터프레임으로 유지하기위해 대괄호 두개
df = df.groupby(['city', 'f4'])[['f5']].mean()

오름차순 : ascending = True (작은것 -> 큰것)
내림차순 : ascending = False (큰것 -> 작은것)

❤️ 요일 
df.dayofweek
# 주말
df['weekend'] = df['dayofweek'] >= 5
# 평일
df['weekday'] = ~df['dayofweek'] 

❤️ 주 단위
df_w = df.resample('W', on = 'Date')['Sales'].sum()

❤️ 시차
df['lag'] = df['col'].shift(1)

❤️ pd.melt : 열로 합치기
❤️ 정수형 : int 
❤️ 반올림 : round
❤️ 올림 : np.ceil
❤️ 내림 : np.floor
❤️ 버림 : np.trunc

❤️ df['col'] = np.where[cond, 맞을시, 아닐시]

 

❤️pd.merge(left = '', right = '' , on = 'f4', how='')

1. statsmodels (통계 분석/회귀)

모듈 / 함수 주요 사용 범주 예시 / 설명
ols 선형회귀 ols('y ~ x1+ x2', data =df,).fit()
logit 로지스틱 회귀(분류) logit('y ~ x1 + x2 ', data =df).fit()
model.summary() 결과요약 회귀계수 t값, p값, 결정계수 출력
model.tvalues t검정통계량 각 변수의 t값
model.pvalues p-values(유의 확률) 유의미성 판단 (x < 0.05면 의미있음)
model.rsquared 결정계수 회귀 적합도 0~1, 높을수록 좋음
model.params 회귀계수(coef) 독립변수 영향력

 

2. sklearn.ensemble

(머신러닝 모델)

클래스 사용 범주 예시 / 설명
RandomForestClassifier 분류(문자/범주 예측) 다중분류(문자형 타겟, 라벨 인코딩 필요)
RandomForestRegressor 회귀(숫자 예측) 연속형 목표변수 예측

 

3. sklearn.metrics

(성능 평가)

함수 주요 사용 범주 예시 / 설
mean_squared_error(y, pred) 회귀: MSE MSE, squared=False면 RMSE
f1_score(y, pred, average=...) 분류: F1점수 macro, micro 등
accuracy_score(y, pred) 분류: 정확도 분류 맞춘 비율

 

4. sklearn.preprocessing

함수 / 클래스 사용 범주 설명 / 예시
StandardScaler 표준화 평균0, 표준편차 1로 변환
fit_trans
MinMaxScaler 정규화 0~1 사이로 변환
fit_transform(X)
RobustScaler 중앙값 정규화 이상치에 강함
중앙값(median) 기준 변
MaxAbsScaler 절댓값 정규화 -1 ~ 1 사이로 변환
음수 포함 가능
Normalizer 행(샘플) 단위 정규화 각 행의 벡터 크기를 1로 만듦 (주로 텍스트 벡터)

 

5. form scipy import stats

pearsonr(a, b) 피어슨상관계수 + p값 corr, p = pearsonr(x, y)
ttest_1samp 단일 표본 t검 한 집단의 평균이 특정 값과 같은지 가설
ttest_ind(a, b) 두 집단 평균 차 t검정 독립 2표본 t-검정
ttest_rel(대응 쌍체 표본t검정) 두 그룹 전후 비교  
f_oneway(a, b, ...) 분산분석 anova (일원배치법)
그냥 집단 간 평균차이(일원분산분석)만 필요:
3개 이상 그룹 평균차이 검정
anova_lm(model) 회귀분석, 다중요인(범주형 변수 등) 영향력까지 표로 보고 싶을  
shapiro 정규성 검정 p값이 0.05이상이면 정규분포로 봄
levene(a, b) 등분산 검정(Levene) 분산이 같은지 비

1. replace

df['f4'] = df['f4'].replace('ESFJ', 'ISFJ')

 

 

2. df.loc 를 이용한 방법

df.loc[df['f4'] == 'ESFJ', 'f4] = 'ISFJ'

 

3. np.where()

df['f4'] = np.where(df['f4'] == 'ESFJ', 'ISFJ', df['f4'])

 

df['근속년수'] = df.groupby(['부서명', '근무평가등급'])['근속년수'].transform(lambda x : x.fillna(x.mean()))

 

 

 

  • df.groupby(['부서명', '근무평가등급'])['근속년수']
    → 이건 '부서명+근무평가등급'으로 묶인 그룹별로 '근속년수'만 뽑아낸 것
  • transform(lambda x: x.fillna(x.mean()))
    → 각 그룹별 근속년수를 x로 받아서,
    → 그 그룹에서 NaN은 평균으로 채워줌

 

✅간단하게 정리

구문 의미
groupby(['부서명', '근무평가등급']) 그룹 나누기 (부서 + 등급 조합별로)
['근속년수'] 그룹 안에서 '근속년수' 열만 선택
transform() 그룹별 계산 결과를 원래 구조 유지하며 반환
x 각 그룹의 근속년수만 모인 시리즈
x.mean() 해당 그룹의 평균 근속년수
x.fillna(x.mean()) 그 그룹에서 NaN을 평균으로 채움

 

코드 의미
df.idxmax(axis = 1) 행 기준 → 각 행에서 가장 큰 열 이름
df.idxmax(axis = 0) 열 기준 → 각 열에서 가장 큰 행 인덱스

 

 

 

예시)

년도 절도 사기 방화 폭행 ...
2014 0.55 0.62 0.47 0.61 ...
2015 0.53 0.68 0.44 0.65 ...
... ... ... ... ... ...

 

 

# 검거율.idxmax(axis=1)

print(검거율.idxmax(axis=1))

년도
2014    사기
2015    폭행
2016    사기
...

 

# 검거율.idxmax(axis=0)

절도    2017
사기    2015
방화    2019
...

 

내가 나중에 가보려고 만든 빵지순례표

 

순번 매장 명장 분점,
체인점
1 박찬회화과자 , 브리앙과자점 박찬회 명장  
2 브레댄코 /(개인 베이커리 없음) 임헌양 명장
3 리치몬드 과자점 (서울 마포) - 성산본점 권상범 명장  
4 봉베이커리 () 김종익 명장  
5 코른베르그과자점 (서울 송파) 서정웅 명장
6 김영모 과자 (서울 서초) - 서초 본점 김영모 명장
7 안스베이커리 (인천) - 구월본점 안창현 명장
8 함스브로트 과자점 (서울 도봉) 함상훈 명장  
9 홍종흔 베이커리 홍종흔 명장
10 명장텐 (경기 고양) 송영광 명장 + 시흥 1
11 어썸브레드 팬트리 (경기 화도), 빵준사, 명장시대 박준서 명장  
12 빵과당신 (경기 평택) 인재홍 명장  
13 이흥용과자 (부산) - 부산 본점 이흥용 명장 ✅ 부산에 4곳
14 김덕규 과자점 (경남 김해) 김덕규 명장  
15 엘리제 과자점 (서울 노원구),  (경기 남양주) 최형일 명장
16 베비에르 (광주광역시) 마옥천 명장
17 랑콩뜨레 (울산) 이석원 명장

 

 

 

http://kmasterhand.or.kr/master/?s=list&midx=10&srctype=&srcValue=%EC%A0%9C%EB%B9%B5&page=2

 

대한민국명장회

 

kmasterhand.or.kr

 

 

http://kmasterhand.or.kr/

 

대한민국명장회

 

kmasterhand.or.kr

 

1. train_test_split

 

  • 전체 데이터를 훈련(train) 세트와 테스트(test) 세트로 나누는 함수
  • 모델을 훈련용 데이터로 학습하고, 테스트용 데이터로 평가할 수 있게 해줌
from sklearn.metrics import train_test_split
train = df[['target', 'fbs', 'thalach', 'chol', 'sex']][:800]

train, test = train_test_split(train, test_size=0.2, random_state = 123)

 

 

2. 정확도 (Accuracy)

  • 전체 데이터 중에서 맞춘 비율
  • 정확도는 1에 가까울수록 좋은 성능을 보임
from sklearn.metrics import accuracy_score

accuracy = accuracy_score(test, pred)

 

 

from statsmodels.formula.api import logit

# formula방식
model = logit('target ~ fbs + thalach + chol + sex', data=train).fit()

# 예측
pred = model.predict(test)
pred = (pred > 0.5).astype(int)

# 정확도 계산
accuracy = (pred == test['target']).mean()

3. 오분류율 (Error Rate)

  • 전체 중에서 틀린 예측의 비율
from sklearn.metrics import accuracy_score

accuracy = accuracy_score(test, pred)
error_rate = 1 - accuracy

 

4. 정밀도 (Precision)

from sklearn.metrics import precision_score

precision = precision_score(test, pred)

 

 

5. MSE (Mean Squared Error)

 

  • 예측값과 실제값 차이의 제곱 평균
  • 값이 0에 가까울수록 예측이 정확함

 

from sklearn.metrics import mean_squared_error

mse = mean_squared_error(y_true, y_pred)
print("MSE:", round(mse, 3))

 

6. RMSE (Root Mean Squared Error)

 

  • MSE의 단위가 제곱이기 때문에, 원래 단위로 맞추기 위해 제곱근을 씀
  • 값이 작을수록 좋음
from sklearn.metrics import mean_squared_error

rmse = mean_squared_error(y_true, y_pred, squared=False)
print("RMSE:", round(rmse, 3))

 

 

7. F1-Score

 

  • **정밀도(Precision)**와 **재현율(Recall)**의 조화 평균
  • 불균형 데이터(예: 1이 적은 경우)에서 모델 성능 평가에 유리
from sklearn.metrics import f1_score

f1 = f1_score(y_true, y_pred)
print("F1-Score:", round(f1, 3))

 

 

기본은 binary classification (0 vs 1)
다중 분류일 땐 average='macro' 또는 average='weighted' 추가

 

# 다중 분류 예시
f1_macro = f1_score(y_true, y_pred, average='macro')
import numpy as np
import pandas as pd 

df = pd.read_csv('/kaggle/input/bigdata-csvfile/Sleep_health_and_lifestyle_dataset.csv')

df = df.select_dtypes(include = 'numbers')
corr = df.corr()

 

df.select_dtypes(include='number')  # 숫자형 컬럼만 추출
df.select_dtypes(include='object')  # 문자형 컬럼만 추출
df.select_dtypes(include='category')  # 범주형만 추출

# 여러 타입도 선택 가능

df.select_dtypes(include=['int64', 'float64'])

1. pandas.DataFrame.corr()

df['col'].corr() # 기본값 피어슨 상관계수
df['col'].corr(method = 'spearman') # 순위 기반 상관계수 스피어만 (서열형에 적합)
df['col'].corr(method = 'kendall') # 켄달 순위 상관계수
'pearson' 기본값, 연속형 변수 간 선형관계
'spearman' 순위형 또는 비선형 관계 탐색
'kendall' 순위형 변수 간 관계 (robust)

 

 

 

2. scipy.stats.pearsonr(x, y)

from scipy.stats import pearsonr

corr, pval = pearsonr(df['소득'], df['주택가격'])
print(corr)     # 상관계수
print(pval)     # 유의확률(p-value)

 

 

📕 비교표

항목 .corr() stats.pearsonr(x, y)
상관계수 계산 방식 피어슨(기본값), spearman, kendall 피어슨(고정)
p-value 제공 여부 ❌ 없음 ✅ 있음
NaN처리 자동 무시 에러발생 (dropna 필요)
다변수 분석 지원 ✅ (DataFrame 전체 상관 행렬 ❌ (1:1 변수 비교만 가능)
주로 언제 사용하나 변수 간 전체 상관 구조 파악할 때 특정 변수 간 통계적 유의성 확인할 때