Table of contents
파이선에서 Dataframe을 활용 시, 원하지 않는 인덱스가 생성되는 경우가 있다.
아래의 코드는 야후 파이낸셜에서 테슬라 주식의 2017년 12월 28일 ~ 2020년 12월 29일 동안의 일봉차트를 Datafarme으로 저장하고 출력하고 있다.
import pandas as pd
import numpy as np
import pandas_datareader as web
getStockName = 'TSLA'
myStartDate = '2017-12-28'
myEndDate = '2020-12-29'
df = web.DataReader(getStockName, data_source='yahoo', start=myStartDate, end=myEndDate)
df
df의 형태가 예상한 것과 조금 다르게 저장되었다. Data라는 값이 열로 지정되어져 있지 않고, 인덱스로 지정되어져 있다.
아래의 코드는 Dataframe의 인덱스를 재설정하고 출력해줌을 의미한다.
# reset_index(drop=False, inplace=False)
# drop은 기존 인덱스의 삭제여부
# inplace는 기존 dataframe에서의 변경여부
df.reset_index(drop=False, inplace=False)
아래의 표와 같이, Date 데이터가 열로 잘 수정되었고 인덱스는 숫자형태로 변환되었다.
하지만 df를 다시 출력해보면 아래와 같이, 기존 문제가 남아있다.
df
이러한 결과는, reset_index 함수의 파라미터 값에 달라질 수 있다.
다른 Dataframe에 저장하여 다시 사용하고 싶다면, 위와 같이 사용해도 되고 현재 변수로 활용하려면 아래와 같이 inplace 값을 True로 바꾸어 준다.
아래 표와 같이, 원하는 데이터 형태로 df 변수에 잘 저장되어져 있다.
df.reset_index(drop=False, inplace=True)
df
값을 새롭게 받아서 drop 파라미터를 True로 바꾸어보자. 그렇다면 아래 표와 같이, Date 열이 사라짐을 알 수 있다.
df = web.DataReader(getStockName, data_source='yahoo', start=myStartDate, end=myEndDate)
df.reset_index(drop=True, inplace=True)
df
매우 간단한 내용이지만, 데이터를 가공하여 연산하고 싶을 때 데이터의 형태가 원하는 방식으로 되어있지 않으면 매우 불편한 경우가 발생한다.
데이터의 인덱스에 대한 전처리 작업은 연산처리 속도 증가와 가독성에도 도움이 되며, 데이터 가공함에 있어 매우 편리하게 만들어준다.
'소프트웨어 > Python' 카테고리의 다른 글
Python MySQL DB 생성, 삭제 (0) | 2022.02.19 |
---|---|
Python MySQL 연결 거부 해결 (0) | 2022.02.19 |
Jupyter Notebook 경로 변경 (0) | 2022.02.19 |
Jupyter Notebook에서 아무것도 보이지 않는 경우 (0) | 2022.02.19 |
Python Dataframe NaN(NA 또는 Null)값이 있는 행 삭제하는 방법 (0) | 2022.02.19 |