파이썬 pandas의 pivot table을 생성하는 방법은?
_____A1: 피벗 테이블은 데이터프레임의 데이터를 그룹화하고 집계하여 요약된 형태로 재구성하는 테이블입니다. 특정 열을 행과 열로 설정하고, 집계 함수를 적용해 데이터를 분석하기 쉽도록 만듭니다.
Q2: pandas에서 피벗 테이블을 생성하는 기본 함수는 무엇인가요?
A2: pandas의 `pivot_table()` 함수입니다. 이 함수를 사용해 데이터프레임을 피벗 테이블 형식으로 변환할 수 있습니다.
Q3: pivot_table() 함수의 기본 문법은 어떻게 되나요?
A3:
```python
pd.pivot_table(data, index=None, columns=None, values=None, aggfunc='mean', fill_value=None, margins=False, dropna=True)
```
- `data`: 피벗할 원본 DataFrame
- `index`: 행으로 사용할 컬럼 이름 또는 컬럼 이름 리스트
- `columns`: 열로 사용할 컬럼 이름 또는 컬럼 이름 리스트
- `values`: 집계할 컬럼 이름 또는 리스트
- `aggfunc`: 집계 함수 (기본값은 'mean')
- `fill_value`: 결측값 대체 값
- `margins`: 행과 열의 총합(합계) 포함 여부 (True/False)
- `dropna`: 결과에서 NaN 열 제거 여부 (True/False)
Q4: 피벗 테이블 생성 예시는 어떻게 되나요?
A4:
```python
import pandas as pd
df = pd.DataFrame({
'팀': ['A', 'A', 'B', 'B', 'C', 'C'],
'월': ['1월', '2월', '1월', '2월', '1월', '2월'],
'매출': [100, 150, 80, 120, 90, 110]
})
pivot = pd.pivot_table(df, index='팀', columns='월', values='매출', aggfunc='sum')
print(pivot)
```
결과:
```
팀
A 100 150
B 80 120
C 90 110
```
Q5: 여러 집계함수를 동시에 적용할 수 있나요?
A5: 네, `aggfunc`에 리스트나 딕셔너리를 사용해 여러 집계함수를 지정할 수 있습니다.
```python
pivot = pd.pivot_table(df, index='팀', values='매출', aggfunc=['sum', 'mean'])
```
Q6: 여러 개의 컬럼을 행(index)이나 열(columns)로 지정할 수 있나요?
A6: 네, 리스트 형태로 여러 컬럼을 지정할 수 있습니다.
```python
pivot = pd.pivot_table(df, index=['팀', '월'], values='매출', aggfunc='sum')
```
Q7: 피벗 테이블에 NaN 값을 어떻게 처리하나요?
A7: `fill_value` 파라미터에 원하는 값을 넣으면 NaN을 대체할 수 있습니다. 예:
```python
pivot = pd.pivot_table(df, index='팀', columns='월', values='매출', aggfunc='sum', fill_value=0)
```
Q8: 총합(마진)을 포함시키는 방법은?
A8: `margins=True`를 지정하면 행과 열의 합계가 표시됩니다.
```python
pivot = pd.pivot_table(df, index='팀', columns='월', values='매출', aggfunc='sum', margins=True)
```
Q9: pivot() 함수와 pivot_table()의 차이점은?
A9: `pivot()`은 단순히 행과 열을 재배치하는 기능이고, 집계 연산이 불가능합니다. 반면 `pivot_table()`은 집계 함수(aggfunc)를 사용해 데이터를 요약할 수 있습니다.
Q10: 피벗 테이블 결과를 DataFrame으로 반환하나요?
A10: 네, `pivot_table()`은 결과를 새로운 DataFrame으로 반환합니다. 따라서 별도의 변수에 할당하여 추가 작업을 할 수 있습니다.
Pandas의 `pivot_table` 메서드를 사용하여 데이터를 쉽게 재구성할 수 있습니다.
아래는 pivot table을 생성하는 방법에 대한 단계별 설명입니다.
1. 준비된 데이터프레임 생성 먼저 필요한 라이브러리인 Pandas를 임포트하고, 샘플 데이터를 준비합니다.
```python import pandas as pd 샘플 데이터프레임 생성 data = { '날짜': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02', '2023-01-03'], '제품': ['A', 'B', 'A', 'B', 'A'], '판매량': [10, 20, 30, 15, 25] } df = pd.DataFrame(data) print(df) ```
2. pivot_table 메서드 사용 `pivot_table` 메서드를 사용하여 데이터프레임을 변환합니다.
주요 매개변수는 다음과 같습니다: - `values`: 요약할 데이터 (여기서는 '판매량') - `index`: 새 데이터프레임의 행 인덱스 (여기서는 '날짜'와 같은 열) - `columns`: 새 데이터프레임의 열 (여기서는 '제품') - `aggfunc`: 데이터 집계 함수 (기본값은 'mean', 'sum', 'count' 등) ```python 피벗 테이블 생성 pivot_df = df.pivot_table(values='판매량', index='날짜', columns='제품', aggfunc='sum', fill_value=0) print(pivot_df) ```
3. 결과 해석 위의 코드를 실행하면 다음과 같은 피벗 테이블이 생성됩니다: ``` 제품 A B 날짜 2023-01-01 10 20 2023-01-02 30 15 2023-01-03 25 0 ``` 이 테이블은 날짜별로 각 제품의 판매량을 집계한 것입니다.
`fill_value=0` 설정에 의해 없는 값은 0으로 채워집니다.
4. 추가적인 옵션 - `aggfunc`에 여러 집계 함수를 적용할 수도 있습니다.
예를 들면, `aggfunc=[np.sum, np.mean]`와 같이 지정하여 총합과 평균을 동시에 계산할 수 있습니다.
- `margins=True`를 설정하면 총합 행과 열을 추가할 수 있습니다.
이와 같이 Pandas `pivot_table`을 통해 데이터 분석을 보다 효율적으로 할 수 있습니다.
작성자:
이윤하 [비회원]
| 작성일자: 1년 전
2025-02-10 05:31:02
조회수: 228 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 228 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.