Ch10. 데이터 집계와 그룹 연산

groupby

  • 하나 이상의 키 (함수, 배열, DataFrame의 컬럼 이름)을 이용해서 pandas 객체를 여러 조각으로 나누는 방법

  • 합계, 평균, 표준편차, 사용자 정의 함수 같은 그룹 요약 통계를 계산하는 방법

  • 정규화, 선형회귀, 등급 또는 부분집합 선택 같은 집단 내 변형이나 다른 조작을 적용하는 방법

  • 피벗테이블과 교차알람표를 구하는 방법

  • 변위치 분석과 다른 통계 집단 분석 수행 방법

그룹 연산

1) 분리 : Series, DataFrame 같은 pandas 객체나 다른 객체에 들어있는 데이터를 하나 이상의 키를 기준으로 분리 2) 적용 : 분리하고나서 함수를 각 그룹에 적용시켜 새로운 값을 얻어낸다 3) 결합 : 함수를 적용한 결과를 하나의 객체로 결합

import pandas as pd
import numpy as np
df=pd.DataFrame({'key1':['a','a','b','b','a'],
                 'key2':['one','two','one','two','one'],
                 'data1':np.random.randn(5),
                 'data2':np.random.randn(5)})

--1번 --                 
df  

--그룹화하기 
grouped=df['data1'].groupby(df['key1']) 
grouped 
Out[6]: pandas.core.groupby.generic.SeriesGroupBy object at 0x000001C1DB1EA8C8>

--2번--
grouped.mean() 

--3번--
means=df['data1'].groupby([df['key1'],df['key2']]).mean()
means

그룹간 순회하기 groupby 객체는 이터레이션을 지원하는데, 그룹 이름과 그에 따른 데이터 묶음을 튜플로 변환 색인이 여럿 존재하는 경우 튜플의 첫번 원소개 색인값이 된다

그룹별 데이터를 사전형으로 바꿔서 원하는 데이터만 골라낼 수 있다 ex) pieces = dict(list(df.groupby('key1)))

df데이터 중에서 data2 컬럼에 대해서만 평균을 구하고 싶을 때 df.groupby(['key1', 'key2'])[['data2]].mean

컬럼값을 가지고 매핑할수도 있다. 함수(ex- len) , 색인 단계로 그룹핑할 수 있다. 이 기능 사용하려면 level 예약어를 사용해서 레벨 번호나 이름을 넘기면 된다.

데이터 집계

count, sum, mean, median, std, var, min, max, prod, first, last 등등

컬럼마다 다른 함수를 적용하고 싶을 때, agg 메서드에 컬럼 이름에 대응하는 함수가 들어있는 사전을 넘긴다 ex) grouped.agg({'data1':np.max,'data2':sum})

색인되지 않은 형태로 집계된 데이터 반환하려면 as_index = False 를 넘겨서 색인되지 않도록 할 수 있다

Apply

시리즈 s에서 null 값을 평균값으로 대체하기 ex) s=pd.Series(np.random.randn(6)) s[: : 2]=np.nan s.fillna(s.mean())

Last updated