본문 바로가기

배우기/복습노트[Python과 분석]

[복습] Python 데이터의 이동(shift)

728x90
반응형

행, 열의 이동을 할 수 있는 메서드이다(lag, lead).

 

s1.shift(periods  = 1                       # 가져올 위치 전달

             freq = None,                     # 빈도

             axis = 0,                            # 방향

             fill_value = None)              # 가져올 값이 없을 때 대체값

 

s1.shift(1)                                 # 이전값 가져오기

 

s1.shift(2)                                 # 이전 이전값 가져오기

 

s1.shift(2, fill_value = 0)           # 이전 이전값을 가져오며, 가져올 값이 없을 경우 0으로 대체, 즉 NA 치환값

 

s1.shift(-1)                                # 이후값 가져오기

 

 

 

데이터프레임에서의 shift

데이터 프레임을 하나 만들어보았다.

위와 같이 데이터 프레임을 만들 때 columns 부분을 다음과 같이 만들면 더 쉽게 만들 수 있다.

문자열을 list에 넣으면 문자열 특성상 하나씩 분리가 되기 때문이다.

 

이전 행의 값 가져오기

 

이전 컬럼의 값 가져오기

 

728x90

 

freq를 사용한 index 이동

위처럼 date_range 메서드를 사용하면 지정한 두 날짜의 전 기간이 출력된다.

마지막줄을 보면 freq = 'D' 라고 되어있는데 이것이 default 이다. Day 라는 의미이다.

 

 

freq 옵션을 7D로 주게 되면 7일씩 간격을 둔 날짜가 출력이 된다. 

 

 

매주 일요일만 출력하고 싶다면 아래와 같이 옵션을 주면 된다.

freq 옵션을 W 로 주게 되면 매주 일요일만 리턴시켜준다.

 

월요일만 리턴하여보자.

 

 

M은 매월 마지막 날짜를 리턴해준다.

 

 

반응형

 

 

예제) emp에서 각 직원의 이름, 급여, 부서번호와 상위관리자의 이름, 급여, 부서번호를 출력하여라. 단, 상위관리자가 없는 경우도 출력하며 이 경우 해당 직원의 이름, 급여, 부서번호로 대체하여라.

여기까지 출력하면 KING의 ENAME_y와 SAL_y, DEPTNO_y 가 NaN으로 리턴된다.

여기서 shift를 쓰게 되면 다음과 같이 출력된다.

 

 

모든 컬럼에 대하여 이전 값을 가져오게 되므로 원치 않은 결과가 리턴된다.

 

이 때에는 fillna를 사용하면 된다.

 

emp3.ffill(axis =1) 도 가능하다.

 

 

 

예제) card_history.csv 파일을 읽고 전체 지출품목에 대한 이전일자 대비 지출 증감율을 출력하여라

 

수치 뒤에 %를 붙이고자 한다면 다음과 같이 나타낼 수 있다.

 

 

728x90
반응형