Skip to content
튜토리얼
Pandas
Pandas Unstack: Clearly Explained

Pandas Unstack: Clearly Explained

판다스(Pandas)는 유연하고 효율적인 데이터 구조를 제공하는 파이썬의 강력한 데이터 조작 라이브러리입니다. 판다스의 가장 유용한 기능 중 하나는 데이터를 다양한 방식으로 재구성하여 분석에 적합하게 할 수 있는 능력입니다. 이 글은 종종 사용되지만 항상 완전히 이해되지 않는 unstack() 함수에 초점을 맞춥니다.

판다스의 unstack() 함수는 데이터 프레임을 재구성하는 데 사용되는 메서드입니다. 이는 데이터 프레임을 긴 형식과 넓은 형식 간에 피봇(pivot)하는 데 사용되는 메서드 그룹의 일부입니다. unstack()을 효과적으로 사용하는 방법을 이해하면 판다스에서 데이터 조작 능력을 크게 향상시킬 수 있습니다.

자동으로 파이썬 판다스 데이터프레임에서 데이터 시각화를 생성하고 싶으세요?

PyGWalker는 시각화와 함께 탐색적 데이터 분석을 위한 파이썬 라이브러리입니다. PyGWalker (opens in a new tab)를 사용하면 판다스 데이터프레임(및 polars 데이터프레임)을 Tableau 스타일의 사용자 인터페이스로 변환하여 Jupyter Notebook 데이터 분석 및 데이터 시각화 작업을 간편하게 수행할 수 있습니다.

PyGWalker를 사용한 데이터 시각화 (opens in a new tab)

Pandas에서 unstack() 함수는 무엇을 하는가?

판다스의 unstack() 함수는 데이터 프레임을 재구성하는 데 사용됩니다. 이 함수는 데이터를 행에서 열로 이동하여 데이터의 새로운 시점을 제공하는 메서드입니다.

예를 들어, 다중 수준 인덱스를 갖는 데이터프레임을 고려해보겠습니다. unstack() 함수는 행 인덱스의 내부 수준 데이터를 열 제목으로 이동시켜 피벗 테이블을 만듭니다. 이는 계층적 인덱스와 함께 작업할 때 데이터를 특정 유형의 분석에 더 적합하게 재배치할 수 있도록 해줍니다.

Pandas에서 데이터를 unstack하는 방법은 무엇인가요?

판다스에서 데이터를 unstack하는 것은 개념을 이해한 후 쉽습니다. unstack() 함수는 데이터프레임 객체에서 호출되며 선택적인 인수 하나를 사용합니다. 이 인수는 "unstack"하거나 피벗할 수준입니다.

수준을 지정하지 않으면 unstack() 함수는 데이터프레임의 인덱스의 마지막 수준을 피봇합니다. 다른 수준을 unstack하려면 인덱스 번호 또는 이름으로 지정할 수 있습니다.

다음은 기본 예제입니다:

import pandas as pd
 
## 다중 인덱스 DataFrame 생성
index = pd.MultiIndex.from_tuples([(i, j) for i in ['A', 'B', 'C'] for j in ['x', 'y', 'z']])
df = pd.DataFrame({'Data': range(9)}, index=index)
 
## DataFrame unstack
df_unstacked = df.unstack()
 
print(df_unstacked)

이 예제에서 unstack() 함수는 인덱스의 마지막 수준 ('x', 'y', 'z')을 열 제목으로 이동하여 피벗 테이블을 만듭니다.

unstack()의 레벨(level)은 무엇인가요?

unstack()에서 레벨(level)은 unstack하거나 피벗할 인덱스의 수준(level)을 나타냅니다. 다중 수준 인덱스가 있는 DataFrame의 경우 수준은 바깥쪽 수준(0)부터 안쪽 수준까지 순서대로 번호가 매겨집니다.

unstack()을 호출할 때 unstack할 수준을 지정할 수 있습니다. 수준을 지정하지 않으면 unstack()은 인덱스의 마지막(또는 안쪽) 수준을 피벗합니다.

예를 들어, 'A', 'B', 'C'와 'x', 'y', 'z'로 구성된 다중 수준 인덱스로 구성된 DataFrame의 경우 'A', 'B', 'C'의 수준은 0(가장 바깥쪽 수준)이고 'x', 'y', 'z'의 수준은 1입니다.

Pandas에서 unstack()과 pivot()을 언제 사용해야 할까요?

판다스의 unstack() 함수와 pivot() 함수는 모두 데이터를 재구성하는 데 사용되지만, 약간 다른 목적으로 사용되며 서로 다른 시나리오에서 사용됩니다.

unstack() 함수는 다중 수준 인덱스를 갖는 DataFrame이 있는 경우에 사용되며, 인덱스 중 하나 이상의 수준을 인덱스에서 열 제목으로 이동시킵니다. 이는 계층적인 데이터를 가지고 있고 데이터를 분석하기 쉽게 재정렬하고자 할 때 유용합니다.

반면에 pivot() 함수는 열 값에 기반하여 데이터를 재구성할 때 사용됩니다. 이를 통해 데이터를 긴 형식에서 넓은 형식으로 변형하거나 재구성할 수 있습니다. 이는 동일한 주제에 대해 반복 측정값이 있는 경우 각 주체를 개별 행으로 가져오고 각 측정값을 별도의 열로 가져오려는 경우에 자주 사용됩니다.

다음은 unstack()pivot()을 동일한 분석에서 함께 사용하는 예입니다:

import pandas as pd
 
## DataFrame 생성
df = pd.DataFrame({
    'date': pd.date_range(start='2023-01-01', periods=3),
    'country': ['US', 'UK', 'CA'] * 3,
    'product': ['A', 'B', 'C'] * 3,
    'sales': range(1, 10)
})
 
## DataFrame 피벗
df_pivot = df.pivot(index='date', columns='country', values='sales')
 
## DataFrame unstack
df_unstack = df.set_index(['date', 'country']).unstack('country')
 
print(df_pivot)
print(df_unstack)

이 예제에서는 먼저 pivot()을 사용하여 각 국가를 별도의 열로 가져왔고 sales를 값으로 가져왔습니다. 그런 다음 'country' 수준을 인덱스에서 열 제목으로 이동시키기 위해 unstack()을 사용합니다.

결론적으로, unstack()이나 pivot()을 사용할지는 데이터의 구조와 수행하려는 피봇 작업에 따라 다릅니다. 판다스에서 데이터를 재구성하는 강력한 도구로, 이들을 효과적으로 사용하는 방법을 이해하면 데이터 분석 능력을 크게 향상시킬 수 있습니다.

결론

판다스에서 언스택(unstack) 기술을 마스터하면 데이터 조작 능력을 크게 향상시킬 수 있습니다. unstack() 함수는 행에서 열로 데이터를 피벗해주는 강력한 도구로, 데이터에 대한 새로운 관점을 제공합니다. 계층적 인덱스를 다루거나 DataFrame의 수준을 피벗하려는 경우에는 데이터 분석가들의 도구 상자에 있어야 할 함수입니다. 이 글에서 제공된 지식과 예를 통해 이제 판다스에서 자신의 데이터 프레임의 언스택을 시작할 수 있을 것입니다. 행운을 빕니다!

자주 묻는 질문 (FAQ)

판다스에서 언스택(unstack) 함수는 무엇을 하는가요?

판다스에서 언스택(unstack) 함수는 데이터 프레임을 재구성하는 데 사용됩니다. 이는 데이터를 긴(또는 쌓인) 형식에서 넓은 형식으로 '피벗'하는 방법입니다. 이는 기본적으로 데이터를 행에서 열로 이동시켜 데이터에 대한 새로운 보기를 제공합니다.

판다스에서 어떻게 데이터를 언스택(unstack)할 수 있나요?

판다스에서 데이터를 언스택(unstack)하는 것은 개념을 이해한 후에는 간단합니다. 언스택(unstack) 함수는 데이터프레임 객체에서 호출되며, 선택적으로 하나의 인수를 취합니다: "언스택" 또는 피벗을 할 레벨입니다. 레벨을 지정하지 않으면 언스택(unstack) 함수는 데이터프레임의 인덱스의 마지막 레벨을 언스택(unstack)합니다. 다른 레벨을 언스택(unstack)하려면 인덱스 번호 또는 이름으로 지정할 수 있습니다.

판다스에서 언스택(unstack)과 피벗(pivot)을 함께 사용하는 경우는 언제인가요?

판다스에서 언스택(unstack) 함수와 피벗(pivot) 함수는 둘 다 데이터를 재구성하는 데 사용되지만, 약간 다른 목적과 다른 상황에서 사용됩니다. 언스택(unstack) 함수는 다중 레벨 인덱스를 가진 데이터프레임을 처리해 인덱스의 하나 이상의 레벨을 열 제목으로 이동시키고자 할 때 사용됩니다. 피벗(pivot) 함수는 열 값에 따라 데이터를 재구성하고자 할 때 사용됩니다.