>백엔드 개발 >파이썬 튜토리얼 >Pandas DataFrame을 피벗하는 방법: 데이터 재구성에 대한 종합 가이드?

Pandas DataFrame을 피벗하는 방법: 데이터 재구성에 대한 종합 가이드?

DDD
DDD원래의
2024-12-25 10:25:09162검색

How to Pivot a Pandas DataFrame: A Comprehensive Guide to Reshaping Data?

데이터 프레임을 어떻게 피벗할 수 있나요?

피벗이란 무엇인가요?

  • DataFrame을 long에서 와이드 형식
  • 허용 하나 이상의 열을 기반으로 값이 집계되는 새 DataFrame 생성

어떻게 피벗하나요?

  • DataFrame:

    • pd.DataFrame.pivot_table
    • pd.DataFrame.groupby pd.DataFrame.unstack
    • pd.DataFrame.set_index pd.DataFrame.unstack
    • pd.DataFrame.pivot(적음 유연함)
    • pd.crosstab(교차표용)
    • pd.factorize np.bincount(고급, 고성능)
    • pd.get_dummies pd.DataFrame.dot(교차표) 표)

긴 형식에서 와이드 형식으로?

  • 긴 형식:

    • 각 관찰이 차지 한 행
    • 다른 것을 나타내는 여러 열 속성/측정
  • 넓은 형식:

    • 각 관측치가 하나의 열을 차지합니다
    • 다양한 행을 나타내는 여러 행 속성/측정

질문 1: 왜 ValueError: Index에 중복된 항목이 포함되어 있으며 형태를 변경할 수 없습니까?

  • 이는 중복 키가 있는 DataFrame을 피벗하려고 할 때 발생합니다. 피벗
  • 예: df에 행과 열에 대한 중복 항목이 있고 df.pivot(index='row', columns='col')으로 피벗하면 오류가 발생합니다.

질문 2: col 값이 열이고, 행 값이 인덱스이고, val0의 평균이 인덱스가 되도록 df를 피벗하려면 어떻게 해야 합니까? 값이 있습니까?

  • pd.DataFrame.pivot_table 사용:

    df.pivot_table(values='val0', index='row', columns='col', aggfunc='mean')

질문 3: 누락된 값이 0이 되도록 하려면 어떻게 해야 합니까? ?

  • fill_value 인수 사용 pd.DataFrame.pivot_table:

    df.pivot_table(values='val0', index='row', columns='col', fill_value=0, aggfunc='mean')

질문 4: 평균이 아닌 합과 같은 다른 것을 얻을 수 있나요?

  • 다른 aggfunc 인수 pd.DataFrame.pivot_table:

    df.pivot_table(values='val0', index='row', columns='col', fill_value=0, aggfunc='sum')

질문 5: 한 번에 두 개 이상의 집계를 수행할 수 있나요?

  • 목록 제공 aggfunc 인수에 대한 호출 가능 항목 pd.DataFrame.pivot_table:

    df.pivot_table(values='val0', index='row', columns='col', fill_value=0, aggfunc=[np.size, np.mean])

질문 6: 여러 값 열에 대해 집계할 수 있나요?

  • 여러 열 이름을 값 목록 pd.DataFrame.pivot_table:

    df.pivot_table(values=['val0', 'val1'], index='row', columns='col', fill_value=0, aggfunc='mean')

질문 7: 여러 열로 세분화할 수 있나요?

  • 여러 열 이름을 목록으로 전달 인덱스 또는 열 pd.DataFrame.pivot_table:

    df.pivot_table(values='val0', index=['row', 'item'], columns='col', fill_value=0, aggfunc='mean')

질문 8: 또는

  • 다음을 사용하여 인덱스와 열의 여러 열로 세분화할 수 있습니다. pd.DataFrame.pivot_table:

    df.pivot_table(values='val0', index=['key', 'row'], columns=['item', 'col'], fill_value=0, aggfunc='mean')

질문 9: "교차표"라고도 불리는 열과 행이 함께 나타나는 빈도를 집계할 수 있습니까?

  • pd.crosstab 사용:

    df.pivot_table(values='val0', index='row', columns='col', aggfunc='mean')

질문 10: 두 개의 열만 피벗하여 DataFrame을 긴 형식에서 넓은 형식으로 변환하려면 어떻게 해야 합니까?

df.pivot_table(values='val0', index='row', columns='col', fill_value=0, aggfunc='mean')

질문 11: 여러 열을 평면화하려면 어떻게 해야 합니까? 피벗 후 단일 인덱스로 인덱스를 변경하시겠습니까?

  • 단일 문자열로 구성된 다중 부분 인덱스:

    df.pivot_table(values='val0', index='row', columns='col', fill_value=0, aggfunc='sum')

위 내용은 Pandas DataFrame을 피벗하는 방법: 데이터 재구성에 대한 종합 가이드?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.