ML & DL/데이터 분석

[pandas] Dataframe 행 위,아래로 옮기기 : shift()

uni2237 2022. 6. 2.
728x90
728x90

pandas.DataFrame.shift()

DataFrame.shift(periods=1, freq=None, axis=0, fill_value=NoDefault.no_default)

Parameters)

  • periods : int (음수 or 양수)
    움직일 기간
  • freq : DateOffset, tseries.offsets, timedelta, or str, optional
    데이터를 재정렬하지 않고(=원본 데이터 보존) 인덱스 값을 이동하는 데 사용되는 선택적 매개 변수 
  • axis : {0 or ‘index’, 1 or ‘columns’, None}, default None
    shift 할 방향 (행/열)
  • fill_value : object, optional
    결측값이 생기는 경우 대체할 값.

 

 

 

pandas의 shift()함수는 다음과 같을 때 사용한다.

 

1. 데이터프레임의 행을 위,아래로 옮기고 싶을때 

2. 데이터의 변화량을 저장하는 컬럼을 만들고 싶을 때

 


예시

 

데이터 프레임이 다음과 같다고 하자.

 

 

 

1. shift 사용 예시

df.shift(n)을 사용했을 때, n의 수만큼 행이 아래로 내려가는 것을 확인할 수 있다.

음수 넣으면 , 반대로 행이 위로 올라가는 것을 확인할 수 있다.

 

 

 

 


 

 

2. 결측값 처리 

shift()를 사용하면 행이 밀리면서 NaN의 값들을 가지는 행이 발생하는 것을 볼 수 있는데,

fill_value 파라미터를 설정해주거나 fillna()함수를 함께 사용하면 이러한 결측값 변환이 가능하다.

 

 

 


 

 

 

3. 데이터 보존, 인덱스만 이동

freq 파라미터값을 설정하면 , 

데이터 값들은 그대로 두고 인덱스만 shift가 가능하다.

 

 

 


 

 

 

4.  앞,뒤 행과의 변화량 ->  새로운 컬럼으로 얻어내는 방법

특정 컬럼에서 shift()를 사용하면 컬럼 내 행과 행의 값의 차이를 구할수 있다.

이를 활용해서 변화량을 가지는 컬럼을 새로 만들 수 있다.

위와 마찬가지로 fill_value를 설정하면 NaN 값 없이 구할 수 있다.

728x90
728x90

'ML & DL > 데이터 분석' 카테고리의 다른 글

[python] Pandas 기초  (0) 2021.10.03
[python] Numpy 기초  (0) 2021.09.28
[python] 웹페이지 크롤링 기초  (0) 2021.09.28

댓글