Pandas에서 melt를 사용해야 하는 데이터 유형과 사용 방법

Pandas에서 melt를 사용해야 하는 데이터 유형과 사용 방법

Pandas
Pandas에서 melt를 사용해야 하는 데이터 유형과 사용 방법
Author

gabriel yang

Published

August 24, 2024

Pandas에서 melt를 사용해야 하는 데이터 유형과 사용 방법

데이터 분석을 할 때, 데이터의 형태가 분석 목적에 맞지 않을 수 있습니다. 특히, 데이터를 시각화하거나 특정 분석을 하기 위해서는 데이터의 형태를 변환하는 작업이 필요할 때가 많습니다. pandas는 이러한 작업을 간편하게 할 수 있도록 melt라는 강력한 함수를 제공합니다. 이 글에서는 melt를 사용해야 하는 데이터 유형과 그 사용 방법을 예시와 함께 설명하겠습니다.

1. melt가 필요한 데이터 유형

melt 함수는 데이터프레임을 “wide format”에서 “long format”으로 변환할 때 사용됩니다.

  • Wide format: 하나의 행에 여러 열이 있는 형식입니다. 이 형식에서는 일반적으로 변수들이 여러 개의 열에 나뉘어 표시됩니다.
  • Long format: 각 행이 하나의 관측값을 나타내며, 여러 변수를 하나의 열에 모아서 표시하는 형식입니다.

예시: Wide Format

| Year | Product_A | Product_B | Product_C |
|------|-----------|-----------|-----------|
| 2020 | 100       | 150       | 200       |
| 2021 | 110       | 160       | 210       |
| 2022 | 120       | 170       | 220       |

위의 데이터프레임은 Year를 기준으로 각 제품의 판매량을 나타내고 있습니다. 여기서 각 제품(Product_A, Product_B, Product_C)은 별도의 열로 나뉘어져 있어 “wide format” 형태입니다.

melt 사용 후의 Long Format

| Year | Product    | Sales |
|------|------------|-------|
| 2020 | Product_A  | 100   |
| 2020 | Product_B  | 150   |
| 2020 | Product_C  | 200   |
| 2021 | Product_A  | 110   |
| 2021 | Product_B  | 160   |
| 2021 | Product_C  | 210   |
| 2022 | Product_A  | 120   |
| 2022 | Product_B  | 170   |
| 2022 | Product_C  | 220   |

위와 같이 데이터를 melt를 사용하여 “long format”으로 변환하면, 각 행이 특정 연도의 특정 제품에 대한 판매량을 나타내게 됩니다. 이 형식은 시각화나 통계 분석을 위해 매우 유용합니다.

2. pandas.melt() 사용 방법

pandas.melt() 함수는 데이터프레임의 특정 열을 식별 변수로 유지하면서 나머지 열들을 변환하여 “long format”으로 만들어줍니다.

2.1 기본 사용법

import pandas as pd

# 데이터프레임 생성 (Wide Format)
df = pd.DataFrame({
    'Year': [2020, 2021, 2022],
    'Product_A': [100, 110, 120],
    'Product_B': [150, 160, 170],
    'Product_C': [200, 210, 220]
})

# melt 사용
df_melted = pd.melt(df, id_vars=['Year'], var_name='Product', value_name='Sales')

# 결과 출력
df_melted

2.2 파라미터 설명

  • id_vars: 변환 후에도 식별 변수로 유지될 열을 지정합니다. 위 예시에서는 Year가 이에 해당합니다.
  • var_name: 변환 후 생성될 변수 이름을 지정합니다. 여기서는 Product로 지정했습니다.
  • value_name: 변환 후 값이 담길 열의 이름을 지정합니다. 여기서는 Sales로 지정했습니다.

2.3 변환 결과

위의 melt 사용 예제에서 df_melted는 다음과 같은 “long format” 데이터프레임이 됩니다.

   Year   Product  Sales
0  2020  Product_A    100
1  2021  Product_A    110
2  2022  Product_A    120
3  2020  Product_B    150
4  2021  Product_B    160
5  2022  Product_B    170
6  2020  Product_C    200
7  2021  Product_C    210
8  2022  Product_C    220

3. 언제 melt를 사용해야 할까?

melt 함수는 다음과 같은 경우에 유용하게 사용됩니다.

  • 데이터 시각화: 많은 시각화 라이브러리는 “long format” 데이터를 필요로 합니다. 예를 들어, seaborn 라이브러리로 여러 변수를 한꺼번에 시각화할 때, 데이터가 “long format”일 때 더 쉽게 작업할 수 있습니다.

  • 집계 및 분석: “wide format” 데이터는 그룹화된 분석이나 피벗 테이블 생성에 불리할 수 있습니다. “long format” 데이터로 변환하여 더 효율적으로 분석할 수 있습니다.

  • 데이터 정리: 데이터를 정규화하고, 여러 열에 분산된 데이터를 하나의 열로 모아서 정리된 형태로 만들 때 melt가 필요합니다.

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 데이터프레임 생성 (Wide Format)
df = pd.DataFrame({
    'Year': ["2020", "2021", "2022"],
    'Product_A': [100, 110, 120],
    'Product_B': [150, 160, 170],
    'Product_C': [200, 210, 220]
})

df
Year Product_A Product_B Product_C
0 2020 100 150 200
1 2021 110 160 210
2 2022 120 170 220

melt 사용하여 Long Format으로 변환합니다.

# melt 사용하여 Long Format으로 변환
df_melted = pd.melt(df, id_vars=['Year'], var_name='Product', value_name='Sales')

df_melted
Year Product Sales
0 2020 Product_A 100
1 2021 Product_A 110
2 2022 Product_A 120
3 2020 Product_B 150
4 2021 Product_B 160
5 2022 Product_B 170
6 2020 Product_C 200
7 2021 Product_C 210
8 2022 Product_C 220

아래 코드를 실행하면 Product 데이터의 각 product를 다른 색으로 표현하는 seaborn 시각화가 생성됩니다.

# Seaborn을 사용하여 시각화
sns.set(style="whitegrid")

# lineplot으로 시각화
sns.lineplot(data=df_melted, x='Year', y='Sales', hue='Product', marker='o')

# 그래프 타이틀과 축 레이블 설정
plt.title('Yearly Sales by Product')
plt.xlabel('Year')
plt.ylabel('Sales')

# 그래프 출력
plt.show()

seaborn의 hue 옵션은 그래프에서 데이터 포인트를 그룹화하여 색상으로 구분해줍니다. 예를 들어, hue=’Category’로 지정하면 Category 변수의 값에 따라 각 데이터 포인트가 다른 색상으로 표시됩니다.

4. 결론

pandas.melt() 함수는 데이터를 “wide format”에서 “long format”으로 변환하는 데 유용한 도구입니다. 이 함수는 데이터 시각화, 분석, 정리를 위해 데이터를 재구성할 때 매우 유용합니다. 데이터의 구조에 따라 적절한 형태로 변환하는 것은 데이터 분석의 필수적인 과정 중 하나이며, melt 함수는 이를 간편하게 해결할 수 있습니다.

이를 통해, 데이터를 더 쉽게 분석하고, 시각화하며, 통찰을 얻을 수 있을 것입니다. melt 함수의 사용법을 익혀 두면, 데이터 변환 과정에서 발생하는 다양한 문제를 효과적으로 해결할 수 있습니다.