[Pandas] DataFrame을 딕셔너리로 변환
- Python/Pandas
- 2021. 4. 4.
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] 원하는 값으로 필터링 (0) | 2021.04.11 |
---|---|
[Pandas]데이터프레임 순회하기 (0) | 2021.04.10 |
Pandas에서 이동평균선 구하기 (0) | 2021.03.20 |
[Pandas] 간단하게 수익률 구하기(pct_change) (0) | 2021.02.27 |
[Pandas] DataFrame 시간 인덱스 나누기 (4) | 2021.02.13 |