데이터 분석 작업에서는 종종 데이터의 형태를 재구성해야 할 때가 있습니다. 이러한 데이터 재구성은 pandas 라이브러리를 사용하여 간단하게 수행할 수 있습니다. 이번 블로그 포스트에서는 pandas에서 제공하는 melt
, stack
, unstack
함수를 사용하여 데이터를 재구성하는 방법을 알아보겠습니다.
melt
함수
melt
함수는 데이터프레임의 열을 행으로 변환하는 기능을 제공합니다. 이 함수는 데이터의 규칙적인 형태를 유지하며, 특정 열을 기준으로 데이터를 재구성할 수 있습니다.
다음은 melt
함수를 사용하여 데이터프레임을 재구성하는 예제 코드입니다.
import pandas as pd
# 재구성할 데이터프레임 생성
df = pd.DataFrame({'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]})
# melt 함수를 사용하여 데이터프레임 재구성
melted_df = df.melt()
print(melted_df)
위의 코드는 다음과 같은 출력을 생성합니다.
variable value
0 A 1
1 A 2
2 A 3
3 B 4
4 B 5
5 B 6
6 C 7
7 C 8
8 C 9
위의 코드에서 melt
함수를 사용해서 데이터프레임의 열이 행으로 변환됐음을 확인할 수 있습니다. 열의 이름은 variable
열로, 해당 열의 값은 value
열로 이동했습니다.
stack
함수
stack
함수는 데이터프레임의 열을 새로운 인덱스 레벨로 옮기는 기능을 제공합니다. 이 함수를 사용하면 열에서 인덱스로 이동하는 효과를 얻을 수 있습니다.
다음은 stack
함수를 사용하여 데이터프레임을 재구성하는 예제 코드입니다.
import pandas as pd
# 재구성할 데이터프레임 생성
df = pd.DataFrame({'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]})
# stack 함수를 사용하여 데이터프레임 재구성
stacked_df = df.stack()
print(stacked_df)
위의 코드는 다음과 같은 출력을 생성합니다.
0 A 1
B 4
C 7
1 A 2
B 5
C 8
2 A 3
B 6
C 9
dtype: int64
위의 코드에서 stack
함수를 사용해서 데이터프레임의 열이 인덱스 레벨로 이동했음을 확인할 수 있습니다. 예를 들어, (0, A)
는 첫 번째 행의 A
열의 값입니다.
unstack
함수
unstack
함수는 stack
함수와 반대로 작동합니다. 이 함수는 인덱스 레벨에서 열로 이동시켜 데이터프레임을 재구성하는 기능을 제공합니다. 데이터프레임에서 한 번 이상 stack
함수를 적용한 경우, unstack
함수를 사용하여 원래의 형태로 데이터를 복구할 수 있습니다.
다음은 unstack
함수를 사용하여 데이터프레임을 재구성하는 예제 코드입니다.
import pandas as pd
# 재구성할 데이터프레임 생성
df = pd.DataFrame({'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]})
# stack 함수를 두 번 적용하여 데이터프레임 재구성
stacked_df = df.stack().stack()
# unstack 함수를 사용하여 데이터프레임 원래 형태로 복구
unstacked_df = stacked_df.unstack()
print(unstacked_df)
위의 코드는 다음과 같은 출력을 생성합니다.
A B C
0 1 4 7
1 2 5 8
2 3 6 9
위의 코드에서 stack
함수를 두 번 적용하여 데이터프레임을 재구성한 후, unstack
함수를 사용하여 원래 형태로 복구한 것을 확인할 수 있습니다.
이제부터는 pandas에서 데이터의 재구성을 위해 melt
, stack
, unstack
함수를 사용할 때 어떤 매개변수를 사용하고 중요한 사항들에 대해 자세히 알아볼 것입니다.