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

반응형
반응형

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'를 넣습니다. row 하나가 딕셔너리로 변환됩니다.

 

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