본문 바로가기

데이터 사이언스/데이터 분석

[NIPA AI 교육/기본] Pandas 분석용 함수 - 집계함수

Count

- 데이터 개수 확인하는 함수이며, default는 NaN 값을 제외함

df.count(axis=0)   # 열 기준
df.count(axis=1)   # 행 기준

Max, Min

- 최대, 최소값을 반환하는 함수이며, default는 NaN 값을 제외함

- 이 때 반환되는 값은 float 값

df.max()   # 최대값
df.min()   # 최소값

Sum, Mean

- 합계 및 평균을 계산하며, default는 열 기준으로, NaN 값은 제외됨

- 이 때 반환되는 값은 float 값

df.sum()   # 합계
df.mean()   # 평균

- axis 인자를 활용하면 행 기준으로 합계 및 평균 계산이 가능해짐

- skipna 인자를 활용하면 NaN 값을 포함하여 계산할 수 있음 -> 대신에, 60 + NaN = NaN 반환

df.sum(axis=1)   # 행 합계
df.mean(axis=1, skipna=False)   # 평균

- NaN값을 대체시킬 수도 있음 -> fillna 함수를 사용하여 NaN값이 존재하는 Column의 평균을 구해 NaN 값을 대체

avg_value = df['column name'].mean()

df['column name'] = df['column name'].fillna(avg_value)

groupby

- 조건부 집계를 하고 싶은 경우 사용

df.groupby('column name').sum()

df.groupby(['column name list']).sum()

aggregate

- groupby를 통해서 집계를 한번에 계산

- aggregate 메소드에는 함수의 이름을 매개변수로 넣어주며, 이 때 min, max, mean, count 등의 특정 함수들은 문자열 형태로 넘겨줄 수 있음

- 이 때, 함수를 직접 호출하겠다는 것이 아니라 해당 모듈을 사용하겠다는 의미로, median(), max()로 쓰지 않기로 주의!

df.groupby('column name').aggregate(['min', np.median, max])
			           # 집계함수  numpy 함수 pandas 내장함수

filter

- groupby를 통해서 그룹 속성을 기준으로 데이터 필터링

def filter_by_sum(df):
	return df['data1'].sum() > 10
    
df.groupby('column name').filter(filter_by_sum)

apply, lambda

- groupby를 통해서 묶인 데이터에 함수 적용

df.groupby('column name').apply(lambda x: x.max() - x.min())

- 데이터 프레임을 'key' 칼럼으로 묶고, data1의 최솟값, data2의 합계를 출력하고 싶다면 다음과 같이 실행해보자.

import pandas as pd

def func(df):
	data = {}
    data['data1_min'] = df['data1'].min()
    data['data2_min'] = df['data2'].sum()
    return pd.Series(data, index=['data1_min', 'data2_sum'])
    # return pd.Series(data)
    
    
 df.groupby('key').apply(func)

 

혹은 다음과 같이 간단하게 표현할 수도 있음

df.groupby('key').aggregate({'data1':min, 'data2':sum})

get_group

- groupby로 묶인 데이터에서 key값으로 데이터를 가져올 수 있음

df.groupby('column name').get_group('column name')

df.groupby('시도').get_group('경기')