피벗 테이블과 교차 집계
pd.pivot_table(), pd.crosstab()으로 요약 통계를 위한 데이터 재구성을 수행합니다.
피벗 테이블과 교차 집계은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
통찰을 위한 형태 변환
피벗 테이블은 긴 형태의 데이터를 격자로 바꾸어 두 범주형 축에 따른 하나의 값을 요약합니다. 익숙한 스프레드시트 피벗 테이블을 프로그래밍 방식으로 사용하는 것입니다.
import pandas as pd
df = pd.DataFrame({
"region": ["E", "E", "W", "W", "E"],
"product": ["A", "B", "A", "B", "A"],
"sales": [10, 20, 30, 40, 50],
})기본 pivot_table
pd.pivot_table은 요약할 숫자인 values, 행을 지정하는 index, 열을 지정하는 columns를 받습니다. 기본적으로 중복 셀의 평균을 계산합니다.
pt = pd.pivot_table(df, values="sales", index="region", columns="product")
print(pt)
# product A B
# region
# E 30.0 20.0
# W 30.0 40.0집계 함수 선택
aggfunc을 설정하면 중복값을 합치는 방식을 제어할 수 있습니다. 합계, 평균, 개수 등이 있으며, 여러 개를 한 번에 사용하려면 목록을 전달합니다.
pt = pd.pivot_table(df, values="sales", index="region",
columns="product", aggfunc="sum")
print(pt)여러 집계 함수
함수 목록을 전달하면 여러 요약 결과를 나란히 계산할 수 있습니다.
pt = pd.pivot_table(df, values="sales", index="region",
aggfunc=["sum", "mean", "count"])
print(pt)누락된 셀 채우기
데이터가 없는 조합은 NaN이 됩니다. fill_value를 사용하면 이를 대체할 수 있으며, 깔끔한 보고서를 위해 보통 0을 사용합니다.
pt = pd.pivot_table(df, values="sales", index="region",
columns="product", aggfunc="sum", fill_value=0)
print(pt)여백(합계)
margins=True를 설정하면 행과 열에 전체 합계를 추가하며, 기본 레이블은 "전체"입니다.
pt = pd.pivot_table(df, values="sales", index="region",
columns="product", aggfunc="sum",
fill_value=0, margins=True)
print(pt)여러 인덱스 수준
index나 columns에 목록을 전달하면 계층형 세부 구성을 만들 수 있습니다. 예를 들어 지역별로 나눈 다음 제품별로 나눌 수 있습니다.
df["channel"] = ["on", "off", "on", "off", "on"]
pt = pd.pivot_table(df, values="sales",
index=["region", "channel"], aggfunc="sum")
print(pt)crosstab을 사용한 교차 집계
pd.crosstab은 두 범주형 변수 조합의 빈도를 COUNTS하는 특수한 피벗 기능이며, 값 열이 필요하지 않습니다.
ct = pd.crosstab(df["region"], df["product"])
print(ct)
# product A B
# region
# E 2 1
# W 1 1crosstab 정규화
normalize 인수는 개수를 비율로 바꿉니다. "index"는 행별, "columns"는 열별, True는 전체 합계 기준으로 정규화합니다.
ct = pd.crosstab(df["region"], df["product"], normalize="index")
print(ct) # each row sums to 1.0값과 함께 사용하는 crosstab
values와 aggfunc을 제공하면 crosstab이 개수를 세는 대신 지표를 요약하도록 만들 수 있어 pivot_table과의 경계가 모호해집니다.
ct = pd.crosstab(df["region"], df["product"],
values=df["sales"], aggfunc="sum")
print(ct)pivot_table과 crosstab 비교
숫자 값을 요약할 때는 pivot_table을 사용하고, 범주 조합의 빈도를 셀 때는 crosstab을 사용합니다. crosstab은 비율로의 정규화도 한 줄로 처리할 수 있습니다.
빠른 확인
데이터 형태 변환에 대한 지식을 확인해 보세요.
복습
형태 변환 도구 모음:
pd.pivot_table(values, index, columns, aggfunc)은 지표를 요약합니다- 빈 셀에는
fill_value, 합계에는margins=True사용 - 계층 구조를 만들려면 index와 columns에 목록 사용
pd.crosstab은 조합을 세고,normalize는 비율을 반환합니다
자주 묻는 질문
“피벗 테이블과 교차 집계” 강의는 무료인가요?
네 — “피벗 테이블과 교차 집계” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
“피벗 테이블과 교차 집계”에서 뭘 배우나요?
pd.pivot_table(), pd.crosstab()으로 요약 통계를 위한 데이터 재구성을 수행합니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“피벗 테이블과 교차 집계” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- GroupBy와 집계
- 피벗 테이블과 교차 집계
- 고급 병합 및 결합
- Pandas의 시계열