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

     

    매우 간단한 내용이지만, 데이터를 가공하여 연산하고 싶을 때 데이터의 형태가 원하는 방식으로 되어있지 않으면 매우 불편한 경우가 발생한다.

     

    데이터의 인덱스에 대한 전처리 작업은 연산처리 속도 증가와 가독성에도 도움이 되며, 데이터 가공함에 있어 매우 편리하게 만들어준다.