[Pandas] DataFrame을 딕셔너리로 변환

반응형
    반응형

    DataFrame을 딕셔너리로 변환하는 방법에 대해 알아보겠습니다.

    to_dict 을 이용해 할 수 있는데 경우의 수가 좀 있어서 다양하게 딕셔너리를 만들 수 있습니다.

    매개변수도 존재하는데 list, records, series, index,split, dict을 괄호에 넣으면 그에 맞게 변환을 해줍니다.

     

    • column 기준으로 딕셔너리 만들기 {column : {index: value}}
    • column 기준으로 리스트로 반환 {column : list}
    • column 기준으로 series로 반환 {column : series}
    • 각 row를 딕셔너리로 해서 리스트로 반환 [{column1 : value1, column2 : value2}]
    • 각 row를 딕셔너리로 해서 딕셔너리로 반환 {index : {column1 : value1, column2 : value2}}
    • 하나의 column을 key 로 딕셔너리 반환 {value of column : []}

     

    S&P500 코드, 종목, 섹터, 업종으로 구성되어 있는 데이터프레임으로 하나씩 보겠습니다.

    출력량이 너무 많아서 5개만 지정해서 했습니다.

     

    df

     

    column 기준으로 딕셔너리 만들기 {column : {index: value}}

    제일 간단합니다. to_dict()을 쓰면 됩니다.

    인덱스가 key 로 되어서 딕셔너리로 반환됩니다.

    df.to_dict()

     

    column 기준으로 리스트로 반환 {column : list}

    괄호에 'list'를 넣습니다.

     

    df.to_dict('list')

     

    column 기준으로 series로 반환 {column : series}

    괄호에 'series'를 넣습니다.

    df.to_dict('series')

     

    각 row를 딕셔너리로 해서 리스트로 반환 [{column1 : value1, column2 : value2}]

    개인적으로 아마 가장 많이 쓰는 것 같은데 이것도 간단합니다.

    괄호에 'records'를 넣습니다.

     

    df.to_dict('records')

     

    각 row를 딕셔너리로 해서 딕셔너리로 반환 {index : {column1 : value1, column2 : value2}}

    주식데이터를 다루면 index가 보통 시간으로 나타내는데 시간에 따라 딕셔너리를 할 수 있어서 유용합니다.

    괄호에 'index'를 넣습니다.

     

    df.to_dict('index')

     

    하나의 column을 key 로 딕셔너리 반환 {value of column : []}

    사실 to_dict('index')와 거의 유사합니다.

    그런데 이 방식으로 하면 괄호에 또 다른것을 써 넣을 수 있어서 편리합니다.

    key가 될 column을 index로 넣고 .T로 전치한 상태에서 딕셔너리로 반환합니다.

    괄호에 위에서 언급한것들을 넣으면(index는 빼고) 그에 맞게 바뀝니다.

    괄호에 아무것도 넣지 않으면 위에서 보인 것과 똑같아집니다.

    무엇을 key로 할 것인지, 괄호에 뭘 넣는지에 따라  다양한 모양의 딕셔너리가 나옵니다.

    괄호에 아무것도 안 넣으면 to_dict('index')와 똑같습니다. 

    df.set_index('Name').T.to_dict()

     

    한 예로 괄호에 list를 넣어보겠습니다.

    df.set_index('Name').T.to_dict('list')

    위에서 보인 리스트 형태로 해서 딕셔너리가 완성되는 것을 볼 수 있습니다.

     

     

    관련 포스팅

    [Python/Pandas] - [Pandas] DataFrame 인덱스 설정, 리셋

    [Python/기초] - [Python] 딕셔너리(dictionary)

    [Python/Pandas] - [Pandas]DataFrame 시간간격 재조정(Resampling)

    [Pandas] DataFrame 살펴보기(생성,데이터파악)

    댓글

    Designed by JB FACTORY

    ....