카테고리 없음

2025.12.04 TIL (본캠프, 34일차)

D:Connect 2025. 12. 4. 21:03

Python의 고급 집계 함수와 데이터 타입별 상관관계 분석을 배웠다. SQL의 Window Function 개념을 Python에서 구현하는 방법을 익혔고, 실무에서 자주 사용되는 상관관계 분석 기법들을 학습했다.

Python Window Function: Shift, Rolling, Expanding

Shift - 시계열 데이터 이동

시계열 데이터의 인덱스를 원하는 기간만큼 이동시키는 메서드이며, 이전 값이나 이후 값을 가져올 때 주로 사용한다

df.shift(1)      # 이전 값 땡김
df.shift(-1)     # 이후 값 땡김
df.shift(periods=3, freq='D')  # 3일 이동

 

Rolling - 이동 윈도우 연산

일정 크기의 창을 지정하여 그 안의 값들을 연산하는 메서드이며, 이동평균이나 누적합 계산에 유용하다.

df.rolling(window=3).mean()      # 3일 이동평균
df.rolling(window=3).sum()       # 3일 누적합
df.rolling(window=3, center=True).mean()  # 중간 행 기준 계산

 

Expanding - 누적 연산

행이나 열의 값에 대해 누적으로 연산을 수행하는 메서드, 누적 합계나 누적 평균을 계산할 때 사용한다.

df.expanding().sum()     # 누적합
df.expanding().mean()    # 누적평균

 

데이터 타입별 상관관계 분석

상관관계는 두 변수 간의 직선관계를 나타낸다. 상관계수는 -1과 1 사이의 값으로, 1에 가까울수록 양의 상관, -1에 가까울수록 음의 상관관계다.

 

연속형 ↔ 연속형: Pearson 상관계수

가장 일반적인 상관관계 분석. Python의 corr() 메서드로 계산한다.

  • 0.9~1.0: 매우 높은 상관관계
  • 0.7~0.9: 높은 상관관계
  • 0.5~0.7: 약한 상관관계
  • 0.0~0.5: 거의 상관관계 없음

연속형 ↔ 범주형(이분형): Point-Biserial 상관계수

연속형과 예/아니오 같은 이분형 범주형 변수의 관계. 범주형을 0, 1로 코딩하고 Pearson 상관계수를 계산한다.

from scipy.stats import pointbiserialr
correlation, p_value = pointbiserialr(binary_var, continuous_var)

중요: p-value도 함께 확인하여 통계적 유의성을 판단해야 한다.

 

연속형 ↔ 범주형(3개 이상): ANOVA 검정

연속형과 3개 이상의 범주를 가진 변수의 관계. ANOVA는 범주에 따라 연속형 변수의 평균에 차이가 있는지 검정한다.

from scipy.stats import f_oneway
f_stat, p_value = f_oneway(group1, group2, group3)

 

F-Statistic 해석:

  • F < 1: 무의미
  • 1 ≤ F < 3: 거의 무의미
  • 3 ≤ F < 10: 경우에 따라 유의미
  • F ≥ 10: 유의미한 차이

범주형 ↔ 범주형: Cramer's V 계수

두 범주형 변수의 관계. 0~1 사이의 값으로, 1에 가까울수록 강한 상관관계다.

  • 0~0.1: 무시해도 되는 관계
  • 0.1~0.2: 약한 상관관계
  • 0.2~0.4: 보통의 상관관계
  • 0.6~0.8: 강한 상관관계
  • 0.8~1.0: 매우 강한 상관관계

 

정신없이 지나간 하루를 마무리 하며....

Window Function은 시계열 데이터의 파생변수 생성에 필수적이다. 상관관계 분석은 데이터 타입의 조합에 따라 다른 기법을 사용해야 한다.

특히 p-value 확인이 중요하다. 통계량만으로는 부족하며, 그 결과가 우연인지 의미 있는지 판단해야 한다.