Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- programmablesearchengine
- fastapi #python웹개발
- 비지도학습
- deeplearning
- 파이토치
- 파이썬
- 머신러닝
- fastapi
- chatGPT
- 랭체인
- NLP
- 사이킷런
- HTML
- 자연어분석
- 파이썬웹개발
- 판다스
- sklearn
- MachineLearning
- Python
- pytorch
- 파이토치기본
- fastapi #파이썬웹개발
- pandas
- python 정렬
- 판다스 데이터정렬
- langchain
- OpenAIAPI
- 딥러닝
- konlpy
- 챗gpt
Archives
- Today
- Total
Data Navigator
[pandas] groupby를 이용한 조건부 통계 본문
groupby를 활용한 조건부 통계¶
pivot_table과 groupby의 차이점¶
In [2]:
import os
import pandas as pd
os.chdir(r"D:\bigdata\jupyter\data_preprocessing\1. 데이터 핸들링\데이터")
In [3]:
df = pd.read_csv("온라인_판매기록.csv", encoding="ANSI", engine='python')
df.head()
Out[3]:
쇼핑몰 | 제품 | 수량 | 판매금액 | 쇼핑몰 유형 | |
---|---|---|---|---|---|
0 | 쿠팡 | 제품_16 | 8 | 1134400 | 쿠팡 |
1 | 쿠팡 | 제품_57 | 8 | 439200 | 쿠팡 |
2 | 쿠팡 | 제품_25 | 4 | 495200 | 쿠팡 |
3 | 쿠팡 | 제품_18 | 4 | 578000 | 쿠팡 |
4 | 쿠팡 | 제품_90 | 2 | 75000 | 쿠팡 |
쇼핑몰 유형에 따른 수량의 평균¶
In [7]:
# as_index를 False로 지정하지 않으면 '쇼핑몰 유형'은 인덱스로, 평균값은 시리즈 형태의 값으로 출력됨
df.groupby(['쇼핑몰 유형'])['수량'].mean()
Out[7]:
쇼핑몰 유형 동물병원 5.512889 온라인II 5.807143 온라인사이트 5.477670 유통대리점 5.493333 전시회 5.556701 쿠팡 5.396389 할인점 5.288525 할인점II 5.469565 Name: 수량, dtype: float64
쇼핑몰 유형에 따른 수량의 평균 as_index=False¶
In [6]:
# as_index=False로 하면 인덱스는 숫자로 들어감
df.groupby(['쇼핑몰 유형'], as_index=False)['수량'].mean()
Out[6]:
쇼핑몰 유형 | 수량 | |
---|---|---|
0 | 동물병원 | 5.512889 |
1 | 온라인II | 5.807143 |
2 | 온라인사이트 | 5.477670 |
3 | 유통대리점 | 5.493333 |
4 | 전시회 | 5.556701 |
5 | 쿠팡 | 5.396389 |
6 | 할인점 | 5.288525 |
7 | 할인점II | 5.469565 |
쇼핑몰 유형에 따른 수량의 평균, 최대값¶
In [10]:
# mean과 max 두 개의 연산 함수를 사용하므로 agg를 써야 함
df.groupby(['쇼핑몰 유형'])[['수량','판매금액']].agg(['mean','max'])
Out[10]:
수량 | 판매금액 | |||
---|---|---|---|---|
mean | max | mean | max | |
쇼핑몰 유형 | ||||
동물병원 | 5.512889 | 10 | 439390.844444 | 1515000 |
온라인II | 5.807143 | 10 | 475726.428571 | 1530000 |
온라인사이트 | 5.477670 | 10 | 454746.019417 | 1533000 |
유통대리점 | 5.493333 | 10 | 462627.384615 | 1530000 |
전시회 | 5.556701 | 10 | 447135.051546 | 1486000 |
쿠팡 | 5.396389 | 10 | 433447.802198 | 1533000 |
할인점 | 5.288525 | 10 | 427162.295082 | 1533000 |
할인점II | 5.469565 | 10 | 440754.782609 | 1515000 |
쇼핑몰 유형과 제품에 따른 수량, 판매금액의 최대값-최소값을 구하는 사용자 함수적용¶
In [12]:
def my_func(value):
return max(value) - min(value)
df.groupby(['쇼핑몰 유형', '제품'])[['수량','판매금액']].agg(my_func)
Out[12]:
수량 | 판매금액 | ||
---|---|---|---|
쇼핑몰 유형 | 제품 | ||
동물병원 | 제품_01 | 7 | 512400 |
제품_02 | 8 | 129600 | |
제품_03 | 9 | 351900 | |
제품_04 | 8 | 341600 | |
제품_05 | 8 | 860800 | |
... | ... | ... | ... |
할인점II | 제품_93 | 0 | 0 |
제품_95 | 2 | 194600 | |
제품_97 | 0 | 0 | |
제품_98 | 0 | 0 | |
제품_99 | 0 | 0 |
762 rows × 2 columns
In [13]:
# as_index=False로 해서 인덱스를 숫자로 만드는 경우
def my_func(value):
return max(value) - min(value)
df.groupby(['쇼핑몰 유형', '제품'], as_index=False)[['수량','판매금액']].agg(my_func)
Out[13]:
쇼핑몰 유형 | 제품 | 수량 | 판매금액 | |
---|---|---|---|---|
0 | 동물병원 | 제품_01 | 7 | 512400 |
1 | 동물병원 | 제품_02 | 8 | 129600 |
2 | 동물병원 | 제품_03 | 9 | 351900 |
3 | 동물병원 | 제품_04 | 8 | 341600 |
4 | 동물병원 | 제품_05 | 8 | 860800 |
... | ... | ... | ... | ... |
757 | 할인점II | 제품_93 | 0 | 0 |
758 | 할인점II | 제품_95 | 2 | 194600 |
759 | 할인점II | 제품_97 | 0 | 0 |
760 | 할인점II | 제품_98 | 0 | 0 |
761 | 할인점II | 제품_99 | 0 | 0 |
762 rows × 4 columns
'Python > Pandas' 카테고리의 다른 글
[pandas] 판다스 DataFrame정렬 sort_values() (0) | 2021.04.13 |
---|---|
[pandas] Series 데이터 정렬하기 sort_values(), .value_counts(), .unique() (0) | 2021.04.12 |
[pandas] pivot_table을 이용한 조건별 변수별 통계량 파악 (0) | 2021.04.09 |
[pandas] concat, os.listdir, openpyxl을 이용한 데이터 통합 (0) | 2021.04.08 |
[pandas] merge로 데이터 프레임 합치기 (0) | 2021.04.07 |