일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- adaptive life cycle
- 자바스크립트
- Crawling
- Project
- Scrum
- TypeScript
- 다나와
- Agile
- data
- instance
- keras
- DANAWA
- angular
- matplotlib
- algorithm
- visualizing
- ECS
- opencv
- data analyze
- 크롤링
- 애자일
- analyzing
- python
- javascript
- tensorflow
- AWS
- 프로젝트
- pandas
- webcrawling
- Method
Archives
- Today
- Total
LiJell's 성장기
12.python_pandas_groupby 본문
반응형
Modified on Jan 05 2022
# -_- coding: utf-8 -_-
"""
Created on Mon Dec 27 11:15:23 2021
@author: hanju
"""
python pandas groupby
- 그룹연산
- 성별 성적 평균, 학년별 성적 최고점수, 부서별 평균 연봉
- groupby
import pandas as pd
from pandas import Series, DataFrame
kimchi = pd.read_csv("./data/kimchi_test.csv", encoding='cp949')
'''
kimchi.groupby(by=None, # 그룹핑 할 컬럼(기준)
axis= 0, # 그룹핑 연산 방향
level = None) # 멀티 인덱스일 경우, 특정 레벨의 값을 그룹핑 컬럼으로 사용
'''
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.groupby(by=['제품']).sum()
#<pandas.core.groupby.generic.DataFrameGroupBy object at 0x000001F7F407E5E0>
# 판매년도 판매월 수량 판매금액
# 제품
# 무김치 290088 936 2142764 20036782345
# 열무김치 290088 936 2147999 20295676819
# 총각김치 290088 936 2411653 23300688286
kimchi.groupby(by=['제품', '판매처']).sum()
# 판매년도 판매월 수량 판매금액
# 제품 판매처
# 무김치 대형마트 96696 312 1550027 14243851204
# 백화점 96696 312 510114 5675796839
# 편의점 96696 312 82623 117134302
# 열무김치 대형마트 96696 312 1491864 14272706507
# 백화점 96696 312 567129 5897836502
# 편의점 96696 312 89006 125133810
# 총각김치 대형마트 96696 312 1649486 16512153282
# 백화점 96696 312 658442 6639524485
# 편의점 96696 312 103725 149010519
kimchi.groupby(by=['제품', '판매처'])['수량'].sum()
# 제품 판매처
# 무김치 대형마트 1550027
# 백화점 510114
# 편의점 82623
# 열무김치 대형마트 1491864
# 백화점 567129
# 편의점 89006
# 총각김치 대형마트 1649486
# 백화점 658442
# 편의점 103725
# Name: 수량, dtype: int64
kimchi.groupby(by=['제품'])[['수량', '판매금액']].sum()
# FutureWarning: Indexing with multiple keys (implicitly converted to a tuple of keys) will be deprecated, use a list instead.
# list 형식으로 index에 접근해야한다 치명적인 에러가 발생하지는 않지만 2차원 이기때문에 열을 가져오려면 list로 접근 해야한다.
# 수량 판매금액
# 제품
# 무김치 2142764 20036782345
# 열무김치 2147999 20295676819
# 총각김치 2411653 23300688286
멀티인덱스
kimchi_2 = kimchi.groupby(by=['제품','판매처'])['수량'].sum()
'''
제품 판매처
무김치 대형마트 1550027
백화점 510114
편의점 82623
열무김치 대형마트 1491864
백화점 567129
편의점 89006
총각김치 대형마트 1649486
백화점 658442
편의점 103725
Name: 수량, dtype: int64
'''
- agg : 여러 함수를 동시에 전달
예제) 제품별, 판매처별(김치별) 수량 총 합, 평균 (총합과 평균을 구하고 싶은면 aggregate 함수인 agg()를 사용한다.))
kimchi.groupby(by=['제품','판매처'])['수량'].agg(['sum','mean'])
'''
sum mean
제품 판매처
무김치 대형마트 1550027 32292.229167
백화점 510114 10627.375000
편의점 82623 1721.312500
열무김치 대형마트 1491864 31080.500000
백화점 567129 11815.187500
편의점 89006 1854.291667
총각김치 대형마트 1649486 34364.291667
백화점 658442 13717.541667
편의점 103725 2160.937500
'''
예제) 제품별 판매처별(김치별) 수량, 판매금액 총합, 평균
kimchi.groupby(by=['제품','판매처'])[['수량','판매금액']].agg(['sum','mean'])
'''
수량 판매금액
sum mean sum mean
제품 판매처
무김치 대형마트 1550027 32292.229167 14243851204 2.967469e+08
백화점 510114 10627.375000 5675796839 1.182458e+08
편의점 82623 1721.312500 117134302 2.440298e+06
열무김치 대형마트 1491864 31080.500000 14272706507 2.973481e+08
백화점 567129 11815.187500 5897836502 1.228716e+08
편의점 89006 1854.291667 125133810 2.606954e+06
총각김치 대형마트 1649486 34364.291667 16512153282 3.440032e+08
백화점 658442 13717.541667 6639524485 1.383234e+08
편의점 103725 2160.937500 149010519 3.104386e+06
'''
예제) 제품별, 판매처별(김치별) 수량은 총합, 판매금액 평균만 >> dict() 사용 특정 값만 알고 싶을때!!!
kimchi.groupby(by=['제품', '판매처'])[['수량','판매금액']].agg({'수량':'sum','판매금액': 'mean'})
'''
수량 판매금액
제품 판매처
무김치 대형마트 1550027 2.967469e+08
백화점 510114 1.182458e+08
편의점 82623 2.440298e+06
열무김치 대형마트 1491864 2.973481e+08
백화점 567129 1.228716e+08
편의점 89006 2.606954e+06
총각김치 대형마트 1649486 3.440032e+08
백화점 658442 1.383234e+08
편의점 103725 3.104386e+06
'''
멀티 레벨을 갖는 경우의 groupby 연산
kimchi_2
'''
제품 판매처
무김치 대형마트 1550027
백화점 510114
편의점 82623
열무김치 대형마트 1491864
백화점 567129
편의점 89006
총각김치 대형마트 1649486
백화점 658442
편의점 103725
Name: 수량, dtype: int64
'''
type(kimchi_2) # series이다.
'''
pandas.core.series.Series
'''
kimchi_2.groupby(level=0).sum() # 제품별 총합
'''
제품
무김치 2142764
열무김치 2147999
총각김치 2411653
Name: 수량, dtype: int64
'''
kimchi_2.groupby(level='제품').sum() # 제품별 총합 # 이런 방식으로도 접근 가능
'''
제품
무김치 2142764
열무김치 2147999
총각김치 2411653
Name: 수량, dtype: int64
'''
kimchi_2.groupby(level=1).sum() # 판매처 별
'''
판매처
대형마트 4691377
백화점 1735685
편의점 275354
Name: 수량, dtype: int64
'''
반응형
'Bigdata > 파이썬_Python' 카테고리의 다른 글
14.python.drop_shift_rename (0) | 2022.01.07 |
---|---|
13.python_merge_concat_join (0) | 2022.01.06 |
11.python_pandas_sort (0) | 2022.01.04 |
10.python_replace_method (0) | 2022.01.03 |
09.python_pandas_arithmetic_method (0) | 2022.01.02 |
Comments