본문 바로가기
Python/Pandas, Matplotlib, Seaborn

[Pandas]_Pandas library basic (4) 날짜 데이터 / shift

by ssolLEE 2023. 8. 9.
반응형

두 날짜의 차이점은 뭘까?

  • 다음 두 코드를 비교해봅시다.

  • 왼쪽 코드는 날짜가 str타입으로, 오른쪽 코드는 날짜가 list타입으로 입력되어 있습니다. 그리고나서 datetime으로 바꾸어보니 타입이 각각 timestamps, datetimeindex로 다르네요. 
  • 시계열 자료는 인덱스가 날짜나 시간인 데이터입니다. pandas에서 시계열 자료를 이용하기 위해서는 datetimeindex여야 합니다. 
  • 다음과 같은 데이터를 준비합니다. 

  • 'datesold'의 데이터타입이 object로 나와있습니다. 이것을 datetime으로 바꾸겠습니다.
sales['datesold']=pd.to_datetime(sales['datesold']
sales.info()

  • 각각의 연도, 월, 일을 추출하여 새로운 컬럼으로 만들어봅시다. object 타입일 경우 이 코드가 에러납니다.
sales['year'] = sales['datesold'].dt.year
sales['month'] = sales['datesold'].dt.month
sales['day'] = sales['datesold'].dt.day
sales

object 타입일 경우 이렇게 에러납니다.

 

shift

 

  • 자료값을 이동시키는 문법입니다. 
  • 다음과 같이 데이터를 만듭니다.

  • 코드를 입력합니다.
temp_df['shifted_v1'] = temp_df['price'].shift(1, fill_value=0).astype(int)
# temp_df.head(3)   # 오른쪽 대각선 아래로 내려갔네! 그러면 두 개의 차이 구할 수 있겠군.
temp_df['diff'] = temp_df['price'] - temp_df['shifted_v1']
temp_df

  • 마이너스 값을 하면 아래부터 위로 밀어 올립니다.
temp_df['shifted_v3'] = temp_df['price'].shift(-1, fill_value=0).astype(int)
temp_df['shifted_v4'] = temp_df['price'].shift(-2, fill_value=0).astype(int)

temp_df.tail()

한글날짜 입력하기

sales['한글날짜'] = sales['datesold'].dt.strftime('%Y년 %m월 %d일')
sales.head()

감사합니다.