본문 바로가기
즐거운, 즐겁게/Pandas

DataFrame의 컬럼의 그룹별 데이터 shift하는 방법

by DoubleS2 2021. 5. 19.

데이터 처리를 하다보면 컬럼 값(데이터 도메인)에 따라 데이터 조작이 필요한 경우가 많습니다.

예를 들면, 월 별 N일 전 판매량에 대한 컬럼을 추가해야 한다던지, 전 일 기준 2주 이동 평균을 나타내야 하는 경우가 있을텐데요 :(

 

파이썬에서는 그럴 때 "groupby"와 "shift" 함수를 동시에 이용하여 작업할 수 있어요.

예를 들어, 아래와 같이 영화의 일자별 좌석 판매율 데이터가 있다고 가정해볼까요?

 

여기서 영화별 좌석판매율 컬럼을 2칸씩 아래로 내리는 작업이 필요하다고 한다면

 

dataset["좌석판매율_shift"] = dataset.sort_values(by=["영화명", "일자"], ascending=False).groupby("영화명")["좌석판매율"].shift(-2, fill_value = 0)

 

위와 같이 DataFrame의 groupby와 shift 함수를 이용하여 코딩할 수 있어요.

이 구문을 하나하나 설명하면 DataFrame한테 다음과 같이 명령한 것인데요.

1) 목적에 맞게 sort_values 함수를 통해 정리 한 후,

2) groupby로 기준이 되는 컬럼을 선정해줄래?

3) 그 후, shift 함수를 통해서 2칸씩 이동해주라

 

그 결과,

 

2일을 이동하게 되면 기존에 있던 날짜에는 NaN 값이 들어가게 되요.

제가 작성한 코드에는 fill_value 옵션을 0으로 설정하여 NaN값을 채웠습니다.

필요 시 비즈니스 환경에 맞게 값을 채워넣으면 좋을 것 같네요.

 

그럼 여기까지 DataFrame의 컬럼의 그룹별 데이터 shift하는 방법을 정리했습니다:)