Pandas DataFrame을 와이드에서 롱으로 재구성

Mehvish Ashiq 2024년2월15일
  1. Pandas의 넓은 데이터 형식과 긴 데이터 형식
  2. 와이드 데이터 형식의 사용
  3. 긴 데이터 형식의 사용
  4. pd.melt()를 사용하여 Pandas DataFrame을 넓은 형식에서 긴 형식으로 재구성
  5. pd.unstack()을 사용하여 Pandas DataFrame을 넓은 형식에서 긴 형식으로 재구성
  6. pd.wide_to_long()을 사용하여 넓은 형식에서 긴 형식으로 Pandas DataFrame을 재구성하십시오.
Pandas DataFrame을 와이드에서 롱으로 재구성

Pandas 데이터 프레임 재구성은 데이터 분석에서 가장 많이 사용되는 데이터 랭글링 작업 중 하나입니다. 또한 넓은 테이블에서 긴 테이블로 이동, 피벗 해제/피벗으로 처리됩니다.

이 자습서에서는 와이드 데이터 형식과 긴 데이터 형식의 차이점을 알아보고 이를 사용하여 Pandas 데이터 프레임을 와이드에서 롱으로 재구성하는 방법을 보여주는 다양한 코드 예제를 살펴봅니다.

Pandas의 넓은 데이터 형식과 긴 데이터 형식

넓거나 긴 두 가지 형식의 데이터 세트를 가질 수 있습니다. 와이드 데이터 형식과 긴 데이터 형식의 주요 차이점은 다음과 같습니다.

  1. 와이드 데이터 형식 - 첫 번째 열의 값이 반복되지 않습니다.
  2. 긴 데이터 형식 - 첫 번째 열의 값이 반복됩니다.

두 형식을 명확하게 이해하기 위해 그룹 A, B, CD에 대한 실험실이론 시험 표시가 포함된 예제 데이터 프레임을 살펴보겠습니다.

팬더 데이터 프레임을 와이드에서 롱으로 - 와이드 대 롱 데이터 형식으로 재구성

보시다시피 두 데이터 프레임은 동일한 정보를 갖지만 형식이 다릅니다.

데이터 세트를 나타내기 위해 어떤 데이터 형식을 언제 사용해야 합니까? 데이터로 수행하려는 작업에 따라 다릅니다.

와이드 데이터 형식의 사용

넓은 데이터 형식은 우리의 두뇌가 이해하기 쉽기 때문에 실제 데이터를 기록하는 데 사용됩니다. 데이터를 분석하는 경우에도 이 데이터 형식을 사용합니다.

실험실이론 시험에 대한 점수가 있는 이전 예를 살펴보겠습니다.

그룹당 실험실이론 시험의 평균을 계산하려는 경우 각 그룹의 실험실이론 값을 읽기 쉽기 때문에 넓은 형식으로 데이터를 유지하는 것이 더 쉬울 것입니다. 같은 레코드(행).

다음 스크린샷을 참조하십시오.

pandas 데이터 프레임을 와이드에서 롱으로 재구성 - 와이드 데이터 형식 사용

긴 데이터 형식의 사용

우리는 주로 R 프로그래밍 언어와 같은 일부 통계 도구를 사용하여 하나의 플롯에 여러 변수를 시각화할 때 긴 데이터 형식을 사용합니다.

예를 들어 다중 열, 히트맵 생성 등의 플롯을 소프트웨어가 생성할 수 있도록 넓은 데이터 형식을 긴 데이터 형식으로 변환해야 합니다. 때로는 Python을 사용하여 데이터 랭글링을 위해 데이터 세트를 재구성해야 합니다.

pd.melt()를 사용하여 Pandas DataFrame을 넓은 형식에서 긴 형식으로 재구성

예제 코드:

import pandas as pd

df = pd.DataFrame(
    {
        "Groups": ["A", "B", "C", "D"],
        "lab": [25, 21, 14, 22],
        "theory": [60, 55, 49, 69],
    }
)

print("Wide Data Frame:\n")
print(df)

df = pd.melt(df, id_vars="Groups", value_vars=["lab", "theory"])

print("\n\nLong Data Frame:\n")
print(df)

출력:

Wide Data Frame:

  Groups  lab  theory
0      A   25      60
1      B   21      55
2      C   14      49
3      D   22      69


Long Data Frame:

  Groups variable  value
0      A      lab     25
1      B      lab     21
2      C      lab     14
3      D      lab     22
4      A   theory     60
5      B   theory     55
6      C   theory     49
7      D   theory     69

여기에 pd.melt() 함수를 사용하여 긴 데이터 형식으로 변환하는 넓은 데이터 형식의 그룹, 실험실이론의 세 열이 있는 데이터 프레임이 있습니다.

pd.melt()는 넓은 데이터 형식에서 긴 데이터 형식으로 데이터 프레임을 unpivot하는 데 사용됩니다(선택적으로 식별자 세트를 그대로 둡니다). 데이터 프레임을 하나 이상의 열/필드가 식별자 변수(id_vars)인 형식으로 변환합니다.

id_vars를 제외하고 다른 모든 열은 측정된 변수(value_vars)로 간주됩니다. 이들은 행 축으로 피벗되지 않고 두 개의 비식별자 열(변수)을 남깁니다.

pd.unstack()을 사용하여 Pandas DataFrame을 넓은 형식에서 긴 형식으로 재구성

예제 코드:

import pandas as pd

df = pd.DataFrame(
    {
        "Groups": ["A", "B", "C", "D"],
        "lab": [25, 21, 14, 22],
        "theory": [60, 55, 49, 69],
    }
)

print("Wide Data Frame:\n")
print(df)

df = df.unstack()

print("\n\nLong Data Frame:\n")
print(df)

출력:

Wide Data Frame:

  Groups  lab  theory
0      A   25      60
1      B   21      55
2      C   14      49
3      D   22      69


Long Data Frame:

Groups  0     A
        1     B
        2     C
        3     D
lab     0    25
        1    21
        2    14
        3    22
theory  0    60
        1    55
        2    49
        3    69
dtype: object

이 예제에서는 Groups, labtheory,의 3개 열이 있는 동일한 데이터 프레임을 사용하지만 여기서는 DataFrame.unstack을 사용하여 데이터 프레임을 넓은 데이터 형식에서 긴 데이터 형식으로 재구성합니다.

(반드시 계층적) 인덱스 레이블 수준을 피벗하고 가장 안쪽 수준에 피벗된 인덱스 레이블이 있는 새로운 수준의 필드/열 레이블이 포함된 데이터 프레임을 반환합니다.

색인이 MultiIndex가 아닌 경우 시리즈를 출력으로 얻게 된다는 점을 기억하십시오. 또한 특정 문제에 대해 유연하고 빠른 솔루션이 필요한 경우 DataFrame.unstack() 대신 pd.melt()를 사용하십시오.

pd.wide_to_long()을 사용하여 넓은 형식에서 긴 형식으로 Pandas DataFrame을 재구성하십시오.

예제 코드:

import pandas as pd

df = pd.DataFrame(
    {
        "Groups": ["A", "B", "C", "D"],
        "lab1": [25, 21, 14, 22],
        "lab2": [25, 21, 14, 22],
        "theory1": [60, 55, 49, 69],
        "theory2": [60, 55, 49, 69],
    }
)

print("Wide Data Frame:\n")
print(df)

df = pd.wide_to_long(df, stubnames=["lab", "theory"], i="Groups", j="Exams")

print("\n\nLong Data Frame:\n")
print(df)

출력:

Wide Data Frame:

  Groups  lab1  lab2  theory1  theory2
0      A    25    25       60       60
1      B    21    21       55       55
2      C    14    14       49       49
3      D    22    22       69       69


Long Data Frame:

Groups Exams  lab  theory
A      1       25      60
B      1       21      55
C      1       14      49
D      1       22      69
A      2       25      60
B      2       21      55
C      2       14      49
D      2       22      69

여기에는 A, B, CD의 네 그룹에 대한 lab1, lab2, theory1theory2 표시가 있는 데이터 프레임이 있습니다. pd.wide_to_long() 함수를 이해하기 전에 와이드 데이터 형식이 긴 데이터 형식으로 재구성되는 방법을 이해하기 위해 다음 시각적 개체를 살펴보겠습니다.

pandas 데이터 프레임을 가로에서 세로로 재구성 - 가로에서 세로로 시각화 기능

pd.wide_to_long() 기능은 매우 특별한 방식으로 작동하며 실제로 pd.melt() 기능을 후드 아래에서 사용합니다. 아래에서 이해할 네 가지 필수 매개변수를 허용하지만 중요한 것은 열 이름이 형성되고 표시되는 방식입니다.

wide_to_long() 함수에 대한 다음 열 형식을 참조하십시오.

팬더 데이터 프레임을 와이드에서 롱으로 - 와이드에서 롱으로 변수 이름 변경

데이터 프레임을 와이드에서 롱 데이터 형식으로 재구성하기 위해 pd.wide_to_long() 함수에 4개의 매개변수를 전달합니다. 우리가 사용한 네 가지 매개변수는 다음과 같습니다.

  1. df - 모양을 변경하려는 데이터 프레임입니다.
  2. stubnames - 그룹화해야 하는 그룹 이름(접두사)을 말할 수도 있습니다. 우리의 경우에는 실험실이론입니다.
  3. i - 스택되지 않아야 하는 식별자 변수입니다.
  4. j - 접미사를 포함하는 열의 이름 또는 열의 레이블을 말할 수 있습니다.

선택적 매개변수는 sep(구분 기호) 및 suffix입니다. pd.melt(), pd.wide_to_long()DataFrame.unstack() 여기에 대한 자세한 내용을 읽을 수 있습니다.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

관련 문장 - Pandas DataFrame