> 백엔드 개발 > 파이썬 튜토리얼 > Pandas DataFrame을 녹이는 방법과 이 기술을 언제 사용합니까?

Pandas DataFrame을 녹이는 방법과 이 기술을 언제 사용합니까?

Barbara Streisand
풀어 주다: 2024-12-29 00:52:11
원래의
454명이 탐색했습니다.

How to Melt a Pandas DataFrame and When to Use This Technique?

Pandas DataFrames 녹이기

Melt란 무엇인가요?

pandas DataFrame을 녹이는 작업에는 각 열이 변수를 나타내는 넓은 형식에서 재구성하는 작업이 포함됩니다. 각 행은 관찰을 나타내고 각 열은 특성 값을 나타내는 긴 형식으로 pair.

DataFrame을 녹이는 방법

DataFrame을 녹이려면 pd.melt() 함수를 사용하고 다음 인수를 지정하세요.

  • id_vars: 열 고유 식별자(일반적으로 기본 키 또는 인덱스)로 유지됩니다.
  • value_vars: 녹일 열(행으로 변환됨) 지정하지 않으면 id_vars에 없는 모든 열이 녹습니다.
  • var_name: 원래 열 이름이 포함될 열의 이름.
  • value_name: 원본 열이 포함될 열의 이름 값입니다.

예를 들어 다음을 녹이려면 DataFrame:

import pandas as pd

df = pd.DataFrame({'Name': ['Bob', 'John', 'Foo', 'Bar', 'Alex', 'Tom'],
                   'Math': ['A+', 'B', 'A', 'F', 'D', 'C'],
                   'English': ['C', 'B', 'B', 'A+', 'F', 'A']})
로그인 후 복사

다음을 사용할 수 있습니다:

df_melted = pd.melt(df, id_vars=['Name'], value_vars=['Math', 'English'])
로그인 후 복사

이것은 녹은 DataFrame을 출력합니다:

   Name  variable  value
0   Bob    Math     A+
1   John    Math      B
2   Foo    Math      A
3   Bar    Math      F
4   Alex    Math      D
5   Tom    Math      C
6   Bob  English      C
7   John  English      B
8   Foo   English      B
9   Bar  English     A+
10  Alex  English      F
11  Tom   English      A
로그인 후 복사

Melt 사용 시기

Melting은 다음 작업이 필요할 때 유용합니다.

  • 광범위한 데이터 변환 플로팅이나 시각화에 적합한 형식으로 변환합니다.
  • 특정 데이터 형식이 필요한 기계 학습 모델용 데이터를 준비합니다.
  • 관찰 내용을 고유 식별자로 그룹화하고 녹은 데이터에 대해 집계 또는 변환을 수행합니다.

예시 시나리오

문제 1: 아래 DataFrame을 이름, 나이, 주제 및 학년 열이 포함된 용해된 형식으로 변환합니다.

df = pd.DataFrame({'Name': ['Bob', 'John', 'Foo', 'Bar', 'Alex', 'Tom'],
                   'Math': ['A+', 'B', 'A', 'F', 'D', 'C'],
                   'English': ['C', 'B', 'B', 'A+', 'F', 'A']})
로그인 후 복사
df_melted = pd.melt(df, id_vars=['Name', 'Age'], var_name='Subject', value_name='Grade')

print(df_melted)
로그인 후 복사

출력:

   Name  Age Subject Grade
0   Bob   13  English      C
1  John   16  English      B
2   Foo   16  English      B
3   Bar   15  English     A+
4  Alex   17  English      F
5   Tom   12  English      A
6   Bob   13     Math     A+
7  John   16     Math      B
8   Foo   16     Math      A
9   Bar   15     Math      F
10 Alex   17     Math      D
11  Tom   12     Math      C
로그인 후 복사

문제 2: 수학만 포함하도록 문제 1에서 녹은 DataFrame을 필터링합니다. columns.

df_melted_math = pd.melt(df, id_vars=['Name', 'Age'], value_vars=['Math'], var_name='Subject', value_name='Grade')

print(df_melted_math)
로그인 후 복사

출력:

   Name  Age Subject Grade
0   Bob   13    Math     A+
1  John   16    Math      B
2   Foo   16    Math      A
3   Bar   15    Math      F
4  Alex   17    Math      D
5   Tom   12    Math      C
로그인 후 복사

문제 3: 녹인 DataFrame을 등급별로 그룹화하고 각각의 고유한 이름과 주제를 계산합니다. 등급.

df_melted_grouped = df_melted.groupby(['Grade']).agg({'Name': ', '.join, 'Subject': ', '.join}).reset_index()

print(df_melted_grouped)
로그인 후 복사

출력:

  Grade             Name                Subjects
0     A       Foo, Tom           Math, English
1    A+         Bob, Bar           Math, English
2     B  John, John, Foo  Math, English, English
3     C         Bob, Tom           English, Math
4     D             Alex                    Math
5     F        Bar, Alex           Math, English
로그인 후 복사

문제 4: 문제 1에서 녹은 DataFrame을 원래 상태로 되돌립니다. format.

df_unmelted = df_melted.pivot_table(index=['Name', 'Age'], columns='Subject', values='Grade', aggfunc='first').reset_index()

print(df_unmelted)
로그인 후 복사

출력:

   Name  Age English Math
0   Alex   17       F    D
1   Bar   15      A+    F
2   Bob   13       C   A+
3   Foo   16       B    A
4  John   16       B    B
5   Tom   12       A    C
로그인 후 복사

문제 5: 문제 1에서 녹은 DataFrame을 이름별로 그룹화하고 과목과 성적을 구분합니다. commas.

df_melted_by_name = df_melted.groupby('Name').agg({'Subject': ', '.join, 'Grade': ', '.join}).reset_index()

print(df_melted_by_name)
로그인 후 복사

출력:

   Name        Subject Grades
0  Alex  Math, English   D, F
1   Bar  Math, English  F, A+
2   Bob  Math, English  A+, C
3   Foo  Math, English   A, B
4  John  Math, English   B, B
5   Tom  Math, English   C, A
로그인 후 복사

문제 6: 전체 DataFrame을 단일 값 열로 녹이고 다른 열에는 원래 열 이름이 포함됩니다. .

df_melted_full = df.melt(ignore_index=False)

print(df_melted_full)
로그인 후 복사

출력:

   Name  Age  variable  value
0   Bob   13    Math     A+
1  John   16    Math      B
2   Foo   16    Math      A
3   Bar   15    Math      F
4  Alex   17    Math      D
5   Tom   12    Math      C
6   Bob   13  English      C
7  John   16  English      B
8   Foo   16  English      B
9   Bar   15  English     A+
10 Alex   17  English      F
11  Tom   12  English      A
로그인 후 복사

위 내용은 Pandas DataFrame을 녹이는 방법과 이 기술을 언제 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿