피벗 테이블(Pivot Table)
데이터 프레임에서 두 개의 열을 이용하여 행과 열 인덱스를 재배치하여 새로운 형태의 테이블을 만드는 것
이 피벗테이블은 사용자의 새로운 기준으로 데이터가 집계되어 나타난 것입니다.
기능
- 데이터 재구성: 원본 데이터프레임의 행과 열을 새로운 형태로 재배치
- 새로운 기준에 따른 집계: 특정 열(들)을 행과 열 인덱스로 사용하여 새로운 기준으로 데이터를 그룹화하고 집계
- 요약 정보 제공: 피벗 테이블은 주어진 데이터를 기반으로 특정 기준에 따른 집계된 정보를 제공하여 데이터의 특성과 패턴을 더 잘 이해할 수 있도록 도와줍니다.
생성 방법
1. pivot_table() 메서드 사용:
- Pandas DataFrame 객체의 pivot_table() 메서드를 활용하여 피벗 테이블을 생성
- 데이터프레임을 가지고 피벗 테이블을 만들 때 주로 사용
- pivot_table() 함수는 데이터를 인덱스, 컬럼, 값을 기준으로 재구성하여 집계 가능
2. pivot() 메서드 사용:
- pivot() 메서드를 활용하여 피벗 테이블을 만들 수 있습니다.
- 이 방법은 특정 데이터프레임에 대해 특정한 구조의 피벗 테이블을 생성할 때 사용됩니다.
코드 예시
print('그룹 연산 : pivot table - 데이터 열 중에서 두개의 열(key)을 사용해 데이터를 재구성하여 새로운 집계 테이블을 작성할 수 있다.')
data={'city':['강남','강북','강남','강북'],
'year':[2000,2001,2002,2002],
'population':[3.3,2.5,3.0,2.0]
}
df=pd.DataFrame(data)
print(df)
print()
print(df.pivot(index='city',columns='year',values='population')) #행 열,연산데이터
print(df.pivot(index='year',columns='city',values='population')) #행 열,연산데이터
print()
hap=df.groupby(['city'])
print(hap)
print()
print(df.groupby(['city']).sum()) # groupby를 사용하여 위 두줄을 한줄로 표현
print()
print(df.groupby(['city']).agg('sum'))
print(df.groupby(['city']).agg(['sum','mean']))
print()
print(df.groupby(['city','year']).mean())
print()
print('DataFrame.pivot_table : pivot과 groupby 명령의 중간적 성격')
print(df)
print()
print(df.pivot_table(index=['city'])) # 기본 연산은 np.mean()
print()
print(df.pivot_table(index=['city'],aggfunc=np.mean)) #상동
print()
print(df.pivot_table(index=['city','year'],aggfunc=[len,np.sum]))
print()
print(df.pivot_table(values=['population'],index='city'))
print()
print(df.pivot_table(values=['population'],index='city',aggfunc=np.mean)) #상동
print()
print(df.pivot_table(values=['population'],index=['year'],columns=['city']))
print()
print(df.pivot_table(values=['population'],index=['year'],columns=['city'],margins=True)) #행과 열의 합
print()
print(df.pivot_table(values=['population'],index=['year'],columns=['city'],margins=True,fill_value=0)) #행과 열의 합, NaN을 0으로 채움
print()