일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- algorithm
- angular
- TypeScript
- tensorflow
- Crawling
- pandas
- Method
- 자바스크립트
- analyzing
- 크롤링
- python
- instance
- visualizing
- Scrum
- keras
- Project
- ECS
- Agile
- data
- DANAWA
- 프로젝트
- javascript
- AWS
- 애자일
- opencv
- matplotlib
- 다나와
- data analyze
- webcrawling
- adaptive life cycle
Archives
- Today
- Total
LiJell's 성장기
15.python_stack_unstack_pivot_table 본문
반응형
Modified on Jan 08 2022
# -- coding: utf-8 --
"""
Created on Tue Dec 28 14:26:49 2021
@author: hanju
"""
15. stack, unstack, pivot_table
자료구조 (데이터타입) 형태
long data(tidy data)
각 속성을 컬럼으로 표현
지점
A
B
C
-wide data(cross table : 교차표)
하나의 속성을 갖는 데이터가 각 종류마다 서로 다른 컬럼으로 분리되어 나열함
A B C
판매량
stack / unstack
1. stack
- wide ->> long
2. unstack
- long --> wide
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
pd.read_csv("./data/kimchi_test.csv", encoding = 'cp949')
kimchi = pd.read_csv("./data/kimchi_test.csv", encoding = 'cp949')
kimchi
'''
판매년도 판매월 제품 판매처 수량 판매금액
0 2013 1 총각김치 대형마트 27916 233968900
1 2013 1 총각김치 백화점 11971 99796735
2 2013 1 총각김치 편의점 1603 2264200
3 2013 2 총각김치 대형마트 23057 194593960
4 2013 2 총각김치 백화점 11678 103106940
.. ... ... ... ... ... ...
427 2016 11 무김치 백화점 16818 213580462
428 2016 11 무김치 편의점 1849 2718207
429 2016 12 무김치 대형마트 40806 351917006
430 2016 12 무김치 백화점 11877 139476205
431 2016 12 무김치 편의점 1890 2767080
[432 rows x 6 columns]
'''
# kimchi 데이터를 연도별, 제품별 수량의 총합
kimchi.groupby(['판매년도','제품'])['수량'].sum()
'''
판매년도 제품
2013 무김치 420750
열무김치 419045
총각김치 483735
2014 무김치 447768
열무김치 489359
총각김치 551613
2015 무김치 540809
열무김치 601661
총각김치 742150
2016 무김치 733437
열무김치 637934
총각김치 634155
Name: 수량, dtype: int64
'''
kimchi 데이터를 연도별, 제품별 수량의 총합
df1 = kimchi.groupby(['판매년도','제품'])['수량'].sum()
df1
# 멀티인덱스
# 인덱스나 컬럼이 여러 레벨로 표현
# 상위레벨 : 0, 하위레벨로 갈 수록 숫자 증가
df1.unstack() # long ->> wide
'''
제품 무김치 열무김치 총각김치
판매년도
2013 420750 419045 483735
2014 447768 489359 551613
2015 540809 601661 742150
2016 733437 637934 634155
'''
df2 = df1.unstack()
df2.stack() # wide ->> long
'''
판매년도 제품
2013 무김치 420750
열무김치 419045
총각김치 483735
2014 무김치 447768
열무김치 489359
총각김치 551613
2015 무김치 540809
열무김치 601661
총각김치 742150
2016 무김치 733437
열무김치 637934
총각김치 634155
dtype: int64
'''
df1.unstack(level=0) # 상위레벨 (2013)
'''
판매년도 2013 2014 2015 2016
제품
무김치 420750 447768 540809 733437
열무김치 419045 489359 601661 637934
총각김치 483735 551613 742150 634155
'''
df1.unstack(level=1)
'''
제품 무김치 열무김치 총각김치
판매년도
2013 420750 419045 483735
2014 447768 489359 551613
2015 540809 601661 742150
2016 733437 637934 634155
'''
pivot_table
- 교차표 작성
kimchi.pivot_table(index = '판매월', # index 방향에 배치할 컴럼명
columns = '판매처', # colums 방향에 배치할 컬럼명
values = '수량', # 교차표에 작성할 값을 갖는 컬럼명
aggfunc= 'sum' # 그룹 함수
)
예제 - kimchi 데이터를 이용하셔서, 연도별, 제품별 판매금액의 총 합을 교차표로 작성하세요.
kimchi
kimchi.pivot_table(index = '판매년도', columns = '제품', values = '판매금액', aggfunc = 'sum')
'''
제품 무김치 열무김치 총각김치
판매년도
2013 3809133886 3416217894 4186789117
2014 4111403907 4392490590 5250364301
2015 5212738410 5859079408 7485159996
2016 6903506142 6627888927 6378374872
'''
반응형
'Bigdata > 파이썬_Python' 카테고리의 다른 글
17.python_datetime_expression (0) | 2022.01.10 |
---|---|
16.python_NA_missing_duplicate_value (0) | 2022.01.10 |
14.python.drop_shift_rename (0) | 2022.01.07 |
13.python_merge_concat_join (0) | 2022.01.06 |
12.python_pandas_groupby (0) | 2022.01.05 |
Comments