즐거운, 즐겁게/Pandas
DataFrame의 컬럼의 그룹별 데이터 shift하는 방법
DoubleS2
2021. 5. 19. 16:16
데이터 처리를 하다보면 컬럼 값(데이터 도메인)에 따라 데이터 조작이 필요한 경우가 많습니다.
예를 들면, 월 별 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하는 방법을 정리했습니다:)