일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 리눅스
- 리눅스 명령어
- 코딩테스트
- python algorithm
- sql
- Python DataFrame
- 파이썬 데이터프레임
- VirtualBox
- 알고리즘
- csharp
- 파이썬
- Python 라이브러리
- 오라클
- it용어
- tibero
- C#
- Algorithm
- putty
- dbeaver
- Oracle
- RFP
- linux
- HTML
- 파이썬 알고리즘
- PYTHON
- MariaDB
- 데이터베이스
- Oracle VM VirtualBox
- 파이썬 전처리
- it 용어
- Today
- Total
오경석의 개발노트
Python_pivot_table 본문
피봇 테이블 함수 : pivot_table()
피봇 테이블(pivot table)이란 데이터 열 중에서 두 개의 열을 각각 행 인덱스, 열 인덱스로 사용하여 데이터를 조회하여 펼쳐놓은 것을 말한다.
Pandas는 피봇 테이블을 만들기 위한 pivot 메서드를 제공한다. 첫 번째 인수로는 행 인덱스로 사용할 열 이름, 두 번째 인수로는 열 인덱스로 사용할 열 이름, 그리고 마지막으로는 데이터로 사용할 열 이름을 넣는다. Pandas는 지정된 두 열을 각각 행 인덱스와 열 인덱스로 바꾼 후 행 인덱스의 라벨 값이 첫 번째 키의 값과 같고 열 인덱스의 라벨 값이 두 번째 키의 값과 같은 데이터를 찾아서 해당 칸에 넣는다. 만약 주어진 데이터가 존재하지 않으면 해당 칸에 NaN값을 넣는다.
pivot_table() 함수의 기본 구성요소
- 행 인덱스 : index
- 열 인덱스 : columns
- 데이터 값 : values
- 데이터 집계함수 : aggfunc
각 구성요소에 적용할 데이터프레임의 열을 각각 함수의 인자로 전달한다. 4가지 구성요소를 적절히 입력하고 피벗테이블을 생성해보자. pivot_table은 세로 데이터를 가로 데이터로 변경해주는 역할을 한다. 먼저 테스트용 DataFrame을 생성하자.
테스트용 DataFrame
import pandas as pd
dt = pd.DataFrame({
'date': [20201201, 20201201, 20201201, 20201201, 20201202, 20201202, 20201202, 20201202, 20201203, 20201203, 20201203, 20201203],
'item_id': [1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2],
'item_name': ['a', 'a', 'b', 'b', 'a', 'a', 'b', 'b', 'a', 'a', 'b', 'b'],
'price': [1000, 1100, 10000, 10010, 1100, 1070, 10500, 10700, 1050, 950, 10300, 1150]
})
dt
이 데이터는 각 item들의 일자별 가격정보를 담고 있다. a와 b 두 종류의 아이템이 있으며 총 3일간의 가격 변화 데이터이다. 또한 위 데이터는 날짜 컬럼인 data 컬럼이 존재하며 이 날짜는 위에서 아래로 내려가며 점점 증가한다.
근데 만약 각각의 날짜를 컬럼으로 하여 각 아이템들의 날짜별 평균 가격을 알고 싶으면 어떻게 해야 할까? 다음처럼 pivot_table method를 이용하면 날짜가 컬럼이 되며 가로 데이터로 바뀌었다.
각 아이템들의 날짜별 평균 가격
pdf = pd.pivot_table(df, # 피벗할 데이터프레임
index = ['item_id', 'item_name'], # 행 위치에 들어갈 열
columns = 'date', # 열 위치에 들어갈 열
values = 'price', # 데이터로 사용할 열
aggfunc = 'mean', # 데이터 집계함수
dropna = False) # 결측치 출력여부
pdf
하나의 예시를 더 들어보자. 새로운 데이터프레임을 생성하자.
테스트용 DataFrame2
df2 = pd.DataFrame({
'반' : [1, 1, 1, 1, 2, 2, 2, 2],
'성별' : ['남', '남', '여', '여', '남', '남', '여', '여'],
'전공' : ['이과', '이과', '이과', '문과', '문과', '문과', '문과', '이과'],
'국어' : [90, 80, 85, 95, 100, 85, 95, 90],
'수학' : [88, 96, 92, 84, 80, 92, 88, 100]})
df2
1. 반과 전공을 기준으로 그룹을 나누어 각 그룹의 국어 성적 평균을 조회한 예시
pdf2_1 = pd.pivot_table(df2,
values='국어',
index='반',
columns='전공',
aggfunc=np.mean)
pdf2_1
2. 위의 테이블에서 수학 성적의 평균도 추가로 같이 조회한 예시
pdf2_2 = pd.pivot_table(df2,
values=['국어', '수학'],
index='반',
columns='전공',
aggfunc=np.mean)
pdf2_2
3. 위의 테이블에서 인덱스에 성별 정보도 추가하여 조회한 예시
pdf2_3 = pd.pivot_table(df2,
values=['국어', '수학'],
index=['반', '성별'],
columns='전공',
aggfunc=np.mean)
pdf2_3
4. 위의 테이블에서 성별 정보를 인덱스가 아닌 컬럼에 추가하여 조회한 예시
pdf2_4 = pd.pivot_table(df2,
values=['국어', '수학'],
index='반',
columns=['전공', '성별'],
aggfunc=np.mean)
pdf2_4
5. 위의 테이블에서 평균에 표준편차 정보도 얻기 위해 aggfunc 인자에 원하는 연산을 추가하여 조회한 예시
pdf2_5 = pd.pivot_table(df2,
values=['국어', '수학'],
index='반',
columns=['전공', '성별'],
aggfunc=[np.mean, np.std])
pdf2_5
출처 : https://cosmosproject.tistory.com/29
Python Pandas : pandas.pivot_table (pivot, 세로 데이터를 가로 데이터로 변경)
pandas.pivot_table pivot_table은 세로 데이터를 가로 데이터로 변경해주는 역할을 합니다. 먼저 테스트용 DataFrame을 생성합시다. import pandas as pd dict_1 = { 'dt': [20201201, 20201201, 20201201, 20201..
cosmosproject.tistory.com
4.7 피봇테이블과 그룹분석 — 데이터 사이언스 스쿨
.ipynb .pdf to have style consistency -->
datascienceschool.net
출처 : https://jimmy-ai.tistory.com/220
[Pandas] 파이썬 피벗테이블 생성 : pd.pivot_table 함수 사용법 정리
파이썬 판다스 pivot_table 함수 사용 예제 파이썬 pandas 모듈의 pd.pivot_table 함수로 피벗테이블을 원하는대로 생성하는 방법을 values, index, columns, fill_value 및 aggfunc 인자의 기능을 위주로 정리해..
jimmy-ai.tistory.com
'프로그래밍 언어 > Python' 카테고리의 다른 글
Python_코드 실행시간(소요시간) 측정 (0) | 2022.10.10 |
---|---|
Python_Jupyter Notebook 경로 변경 (0) | 2022.10.07 |
Python_에러 종류 (0) | 2022.09.24 |
Python_예외처리(try, except, else, finally) (0) | 2022.09.23 |
Python_DataFrame merge, join, concat (0) | 2022.09.15 |