Skip to content

파이썬 판다스(Pandas)에서 딕셔너리를 데이터프레임으로 변환하기

Updated on

데이터 사이언티스트로서 데이터 작업은 직무의 핵심 요소 중 하나입니다. 파이썬에서 이를 위해 가장 일반적으로 사용되는 자료 구조 중 하나는 딕셔너리입니다. 딕셔너리는 각 키가 고유한 쌍으로 이루어진 컬렉션이며 판다스는 데이터 분석을 위한 인기 있는 파이썬 라이브러리이며, 데이터 조작에 강력한 기능을 제공합니다. 데이터 분석에서 가장 일반적인 작업 중 하나는 딕셔너리를 판다스의 데이터프레임으로 변환하는 것입니다. 이 블로그에서는 딕셔너리를 데이터프레임으로 변환하는 과정을 설명합니다.

파이썬에서 빠르게 데이터 시각화를 생성하고 싶은가요?

PyGWalker는 open source Python 프로젝트로, Jupyter Notebook 환경에서 직접 데이터 분석 및 시각화 워크플로우를 가속화할 수 있습니다.

PyGWalker (opens in a new tab)은 데이터프레임 (또는 Polars 데이터프레임)을 시각화된 UI로 바꾸어, 변수를 드래그하여 그래프를 쉽게 만들 수 있습니다. 아래 코드를 사용해보세요.

pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)

지금 바로 온라인 노트북에서 PyGWalker를 실행해보세요.

GitHub에서 ⭐️를 주는 것을 잊지 마세요!

Kaggle Notebook에서 PyGWalker 실행 (opens in a new tab)Google Colab에서 PyGWalker 실행 (opens in a new tab)GitHub에서 PyGWalker ⭐️ 주기 (opens in a new tab)
Kaggle Notebook에서 PyGWalker 실행 (opens in a new tab)Google Colab에서 PyGWalker 실행 (opens in a new tab)GitHub에서 PyGWalker ⭐️ 주기 (opens in a new tab)

딕셔너리란?

파이썬에서 딕셔너리는 키-값 쌍의 컬렉션입니다. 각 키는 유일하며 해당하는 값을 가집니다. 딕셔너리를 사용하여 키를 사용하여 액세스할 수 있는 데이터를 저장하고 조작합니다. 파이썬에서 딕셔너리는 중괄호 {}를 사용하여 정의할 수 있으며 중첩 가능합니다.

데이터프레임이란?

데이터프레임(DataFrame)은 2차원 테이블과 같은 데이터 구조로, 행(row)과 열(column)로 이루어져 있으며 각 열은 다른 유형의 데이터를 포함할 수 있습니다. 데이터프레임은 데이터를 분석하고 조작하기 위한 우수한 도구이며, 판다스는 데이터프레임에서 데이터를 조작하기 위한 다양한 함수를 제공합니다.

딕셔너리를 데이터프레임으로 변환

판다스는 pd.DataFrame.from_dict() 함수를 사용하여 딕셔너리를 데이터프레임으로 변환하는 간단한 방법을 제공합니다. from_dict() 함수는 딕셔너리를 입력 값으로 사용하고 데이터프레임을 반환합니다. 이 함수의 기본 동작은 딕셔너리의 키가 열 이름에 해당하고 값이 행 데이터에 해당한다고 가정합니다.

학생, 학생의 성적 및 과목 정보가 포함된 딕셔너리가 있는 예를 살펴보겠습니다.

student_data = {'name': ['Alice', 'Bob', 'Charlie'], 'grade': [95, 87, 92], 'subject': ['Math', 'English', 'Science']}

이 사전을 DataFrame으로 변환하려면, 간단히 from_dict() 함수를 사용하면 됩니다.

import pandas as pd
 
df = pd.DataFrame.from_dict(student_data)
print(df)

위 코드 조각의 출력은 다음과 같습니다.

       name  grade  subject
0     Alice     95     Math
1       Bob     87  English
2  Charlie     92  Science

보다시피, 딕셔너리 키(name, grade, subject)는 결과 DataFrame의 열 이름으로 사용되었으며, 해당하는 값은 행 데이터로 사용되었습니다.

orient 매개 변수 사용

딕셔너리가 구조가 다른 경우, orient 매개 변수를 사용하여 DataFrame이 생성되는 방법을 지정할 수 있습니다. orient 매개 변수는 index, columns, split, values와 같은 여러 값을 허용합니다. 기본값은 columns입니다. 서로 다른 길이의 리스트를 포함하는 딕셔너리가 있는 경우를 예로 들어 보겠습니다.

data = {'name': ['Alice', 'Bob', 'Charlie'], 'grade': [95, 87], 'subject': ['Math', 'English', 'Science']}

기본 동작을 사용하여 이 딕셔너리를 DataFrame으로 변환하려고 하면, ValueError가 발생합니다.

df = pd.DataFrame.from_dict(data)
ValueError: arrays must all be same length

이 오류를 방지하기 위해, orient 매개 변수를 index 값과 함께 사용하여, 딕셔너리 키가 행 색인이 되고 해당하는 값이 행 데이터가 되는 DataFrame을 생성할 수 있습니다.

df = pd.DataFrame.from_dict(data, orient='index')
print(df)

위 코드 조각의 출력은 다음과 같습니다.

            0     1        2
name    Alice   Bob  Charlie
grade      95    87     None
subject  Math  English  Science

딕셔너리 리스트 사용

딕셔너리의 리스트를 사용하여 DataFrame을 만드는 다른 방법은 각 딕셔너리가 결과 DataFrame의 한 행에 해당하고 딕셔너리의 키가 열 이름에 해당하는 것입니다. 학생과 그들의 학점을 나타내는 딕셔너리 리스트가 있는 예를 들어 보겠습니다.

student_data = [{'name': 'Alice', 'grade': 95, 'subject': 'Math'},
```python
student_data = [{'name': 'Bob', 'grade': 87, 'subject': 'English'},
                {'name': 'Charlie', 'grade': 92, 'subject': 'Science'}]
 

이 리스트 안에 있는 딕셔너리를 데이터프레임으로 변환하려면, pd.DataFrame() 함수를 사용하면 된다:

df = pd.DataFrame(student_data)
print(df)

이 코드 스니펫의 출력은 다음과 같다:

       name  grade  subject
0     Alice     95     Math
1       Bob     87  English
2  Charlie     92  Science

보듯이, 결과적으로 얻어지는 데이터프레임은 이전 예시에서 딕셔너리로부터 생성되는 것과 동일하다.

열 이름으로 키 사용

기본적으로 from_dict() 함수는 딕셔너리의 키를 결과 데이터프레임의 열 이름으로 사용한다. 만약 다른 키 값을 사용하고 싶다면, columns 파라미터를 사용하면 된다. 예를 들어, a, b, c 키를 가진 딕셔너리가 있지만 이를 열 이름으로 사용하고 싶지 않을 때 다음과 같이 할 수 있다:

data = {'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]}
df = pd.DataFrame.from_dict(data, columns=['x', 'y', 'z'])
print(df)

이 코드 스니펫의 출력은 다음과 같다:

   x  y  z
0  1  4  7
1  2  5  8
2  3  6  9

긴 방향 사용

from_dict() 함수는 긴 방향의 딕셔너리에서도 데이터프레임을 생성할 수 있다. 긴 방향이란, 각각의 딕셔너리 키가 동일한 키 값을 갖고 있는 딕셔너리를 포함하는 것을 뜻한다. 다음 예시를 살펴보자:

data = {'a': {'x': 1, 'y': 2, 'z': 3}, 'b': {'x': 4, 'y': 5, 'z': 6}, 'c': {'x': 7, 'y': 8, 'z': 9}}

이러한 긴 방향의 딕셔너리로부터 데이터프레임을 생성하기 위해서는, orient 파라미터를 사용하고 그 값으로 index를 설정하면 된다:

df = pd.DataFrame.from_dict(data, orient='index')
print(df)

이 코드 스니펫의 출력은 다음과 같다:

   x  y  z
a  1  2  3
b  4  5  6
c  7  8  9
a  1  2  3
b  4  5  6
c  7  8  9

인덱스와 열 이름

딕셔너리를 DataFrame으로 변환할 때 인덱스와 열 이름을 지정할 수 있습니다. 다음 예제를 살펴봅시다.

data = {'name': ['Alice', 'Bob', 'Charlie'], 'grade': [95, 87, 92], 'subject': ['Math', 'English', 'Science']}
 
df = pd.DataFrame.from_dict(data, orient='columns', columns=['name', 'subject', 'grade'], index=['student1', 'student2', 'student3'])
print(df)

이 코드 조각의 출력은 다음과 같습니다.

             name  subject  grade
student1    Alice     Math     95
student2      Bob  English     87
student3  Charlie  Science     92

이 예제에서는 columns 매개 변수를 사용하여 열 이름을 지정하고 index 매개 변수를 사용하여 인덱스 이름을 지정할 수 있습니다.

결론

이 블로그 포스트에서는 Pandas의 pd.DataFrame.from_dict() 함수를 사용하여 쉽게 딕셔너리를 DataFrame으로 변환하는 방법을 배웠습니다. 또한 딕셔너리의 방향을 지정하고 열과 인덱스 이름을 사용자 정의하는 방법도 배웠습니다. 딕셔너리를 데이터 프레임으로 쉽게 변환하는 기능은 데이터 과학자가 데이터 조작 및 머신 러닝과 같은 여러 데이터 분석 작업을 수행하는 것을 용이하게하므로 그들의 전문 분야에서 유용 할 수 있습니다. 딕셔너리를 데이터 프레임으로 조작하는 능력은 데이터 과학 분야에서 인기있는 도구 인 R 언어 및 Python 데이터 분석 및 데이터 조작 분야 전반에도 전달될 수 있습니다.