kyejin0412 님의 블로그
[TIL] Week 7-4 파이썬 Pandas 기본 과제 오답노트 / window function - shift, rolling, expanding / 상관관계 본문
[TIL] Week 7-4 파이썬 Pandas 기본 과제 오답노트 / window function - shift, rolling, expanding / 상관관계
kyejin0412 2025. 12. 4. 18:15어제 깜빡하고 판다스 과제를 못해서 코드카타 대신 판다스 과제를 했다. 체크 안했으면 못 냈을 뻔..ㄷㄷ
그리고 오늘은 세션이 4개나 있었다...ㅋㅋㅋㅋ 점점 내용도 어려워져서 한번에 이해하기가 어렵고 집중하기도 힘든것 같다.
근데 4개나 있으니 정신이 멍해졌다. 눈도 침침해지는듯..
일단 오늘 알게 된 내용을 정리해보았다. 내용이 정말 많았어서 세션에서 배운 내용을 다 적지는 못했다ㅠ 다 소화를 못했기 때문...추가 공부가 더 필요할 것 같다. 하지만 오늘은... 여기서 마무리하는걸로... (영혼 빠져나감..)
1. 파이썬 부등호 2개 사용 가능
그동안 부등호를 조건문 당 하나만 사용할 수 있는 줄 알았는데,
판다스 과제를 통해 2개도 사용가능 하다는 것을 알게 되었다.
아래와 같이 사용하면, (5<=x.hour)<12 로 인식한다고 한다. 결론적으로 사용가능!!
2. 람다 함수 사용
판다스 과제에서 마지막 도전 문제를 실패했다.
apply(lambda x: 함수내용)
람다함수안에 조건문을 하나 넣는 거였는데, 조건이 여러 개인데 elif는 쓸 수 없다고 하니, 어떻게 하나로 써야할 지에서 막혔다.
정답을 보니 else로 이어주면 되더라!
또한 datetime으로 포맷을 바꿔주어서, 한줄 한줄의 year, month, day, hour, minute에 접근이 가능하다.
람다함수의 조건문은
"[오른쪽 조건문이 true일 때 값] if 조건문 else ~~ [앞의 조건에 해당되지 않을 때 값]"
위와 같이 쓰면 된다.
3. mask 메소드 사용시 조건에 소괄호 필수!
소괄호를 쓰지 않으면 조건으로 인식이 안되는 것 같다.
mask = ((조건1) & (조건2)) <-- 이렇게 말이다.
소괄호를 안 쓰는 실수를 했다.. 허허
그 외에도 mask와 같은 결과를 내는 슬라이싱, loc이 있다!
4. Window function 구현 - shift 메소드
시계열 데이터의 인덱스를 원하는 기간만큼 쉬프트 하는 메서드
- 문법
- DataFrame.shift(periods=기간, freq=None, axis=0, fill_value='비었음')
- 주요 파라미터
- periods: 이동할 기간. 음수 또는 양수로 입력.
- freq: 선택 매개변수. Y, M, D, H, T, S, Timestamp, 'Infer' 등이 위치
- fill_value: shift로 인해 생긴 결측치를 대체할 값 지정
- axis: 연산할 축방향 설정. 0(행) / 1(열)
- 예시
- df.shift(1).head() # 이전 값 땡김
- df.shift(-1).head() # 이후 값 땡김
- df.shift(periods=3,freq='D') # 3일 이동
- df.shift(periods=3,freq='infer') # df의 날짜간격을 분석해서 적당한 주기를 이동

5. Window function 구현 - rolling 메소드
데이터프레임 내 열에 대하여 일정 크기의 창(window, 범위)를 지정하여 그 window 안의 값을 추가 연산을 통해 계산하는 메서드
- 문법
- DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None, method='single')
- 주요 파라미터
- window: 계산할 창(window)의 크기. 열 기준으로 계산할 경우 행의 수.
- min_periods: 계산할 최소 크기(기간) . 기본적으로 window 크기와 동일.
- center: 계산을 중간 행에서 할 지 결정하는 파라미터. 기본값은 False, True 로 할 경우 중간 행을 기준으로 계산
- win_type: triang / gaussian 등 가중치를 넣어 계산할 경우 계산 방식.
- on: 시계열 인덱스나, 시계열과 유사한 열이 있을 경우 이 열을 기준으로 rolling을 수행할 수 있음.
- axis : 연산할 축방향 설정. 0(행) / 1(열)
- closed: 연산이 닫히는 방향을 설정. left / right / both / neither 이 존재.
- right: 오른쪽 값을 포함하여 계산
- left: 왼쪽 값을 포함하여 계산
- both: 양쪽을 포함하여 계산
- neither: 양쪽을 포함하지 않고 계산
- method:{'single' / 'table'} numba를 이용하여 테이블 계산을 진행하여 속도를 높힐지 여부. 현재 'single'만 사용가능.
- 예시
- df.rolling(window=3).mean() # 3일 이동평균 구하기
- df.rolling(window=3).sum() # 3일 누적합 구하기
- df.rolling(window=3, center=True, closed='left').mean() # 3일 이동평균을 중간 행을 기준으로 계산하고, 왼쪽 값을 포함하여 계산

6. Window function 구현 - expanding 메소드
- 정의
- 행이나 열의 값에 대해 누적으로 연산을 수행하는 메서드
- 문법
- df.expanding(min_periods=1, axis=0, method='single').추가메서드()
- 주요 파라미터
- min_periods: 연산을 수행할 요소의 최소 갯수입니다. 이보다 작으면 NaN을 출력
- axis : 연산할 축방향 설정. 0(행) / 1(열)
- method: 연산방식. single(연산을 한 줄씩 수행) table(전체 테이블에 대해서 롤링수행). 기본값 single , 롤링 연산할 경우 numba 라이브러리 추가로 import 필요.
- 예시
- df.expanding(axis=1).sum() #열 기준으로 누적합 계산

7. 상관관계
- 정의
- 두 변수간의 직선관계. 인과관계가 아님.
- 더워서 아이스크림을 샀다.(인과관계)
- 날씨가 더우면 아이스크림이 잘 팔린다.(상관관계)
- 지표
상관계수(Correlation Coefficient)
상관계수는 -1과 1 사이의 값을 가진다.
+1에 가까울수록 양의 상관관계(비례)
0 에 가까울수록 선형적인 관계가 아님을 의미
- 1에 가까울 수록 음의 상관관계(반비례)

8. 데이터 타입별 상관관계

'내일배움캠프-데이터분석' 카테고리의 다른 글
| [TIL] Week 8-1 Feature Scaling - 표준화, 정규화, 로그 변환 (0) | 2025.12.08 |
|---|---|
| [TIL] Week 7-5 통계 - 분포 종류, 검정과 오류 (0) | 2025.12.05 |
| [TIL] Week 7-3 파이썬 Pandas 기본 - 자주 쓰는 메소드, 함수 (0) | 2025.12.03 |
| [TIL] Week 7-2 파이썬 Pandas 심화 - melt, stack, unstack, transpose / 통계 시작 (0) | 2025.12.02 |
| Week 6-4, 6-5 기초 프로젝트 마무리 (0) | 2025.11.28 |