파이썬 판다스(Pandas)에서 딕셔너리를 데이터프레임으로 변환하기
Published 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에서 ⭐️를 주는 것을 잊지 마세요!
딕셔너리란?
파이썬에서 딕셔너리는 키-값 쌍의 컬렉션입니다. 각 키는 유일하며 해당하는 값을 가집니다. 딕셔너리를 사용하여 키를 사용하여 액세스할 수 있는 데이터를 저장하고 조작합니다. 파이썬에서 딕셔너리는 중괄호 {}
를 사용하여 정의할 수 있으며 중첩 가능합니다.
데이터프레임이란?
데이터프레임(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 데이터 분석 및 데이터 조작 분야 전반에도 전달될 수 있습니다.