본문으로 바로가기

 

 


 

 

차례

1. 데이터프레임.groupby(ⓐ, ⓑ, ⓒ, ⓓ, ⓔ, ⓕ, ⓖ)

2. count / size 함수 차이 

3. 데이터형태 변환 (size → to_frame → unstack)

4. head / tail

5. 평균 구하기 mean

6. 집계함수 agg

 

 


 

 

Python | Pandas dataframe.groupby()

Pandas에서 제공하는 groupby 함수는 카테고리에 따른 데이터를 그룹화하여 반환합니다..

또한 데이터를 효율적으로 집계하는 데 도움을 줍니다.

한마디로 데이터프레임을 효과적으로 편집할 수 있는 일종의 엑셀이라 생각하시면 편합니다. 

 

예제파일

videoInfo.csv
1.01MB

 

 

 

1. 데이터프레임.groupby(ⓐ, ⓑ, ⓒ, ⓓ, ⓔ, ⓕ, ⓖ)

 

문법 

DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False)

 

매개변수

ⓐ by : mapping, function, str, or iterable

ⓑ axis : int, default 0

ⓒ level : If the axis is a MultiIndex (hierarchical), group by a particular level or levels

as_index : For aggregated output, return object with group labels as the index. Only relevant for DataFrame input. as_index=False is effectively “SQL-style” grouped output

ⓔ sort : Sort group keys. Get better performance by turning this off. Note this does not influence the order of observations within each group. groupby preserves the order of rows within each group.

ⓕ group_keys : When calling apply, add group keys to index to identify pieces

ⓖ squeeze : Reduce the dimensionality of the return type if possible, otherwise return a consistent type

 

 

import pandas as pd
import numpy as np

df = pd.read_csv('videoInfo.csv')
df

데이터프레임을 확인합니다.

 

print(df.groupby('videoname'))
print(df.groupby(['videoname']))

'videoname'을 기준으로 그룹화를 합니다.

 

print(df.groupby('videoname', 'videopk'))

여러 개의 키워드를 기준으로 그룹화하고 싶은 경우 아래와 같이 리스트를 사용하지 않으면 오류가 발생합니다.

 

print(df.groupby(['videoname', 'videopk']))

by에 해당되는 복수의 인자가 리스트형식으로 적용되었습니다. 

 

 

 

2. count / size 함수 차이 

 

count는 함수이고, size는 데이터프레임의 속성입니다. 

size는 공간 그 자체를 이해하기 위한 도구입니다. 즉, 호출된 객체의 크기 또는 길이를 반환합니다.

count()는 NaN 값을 무시하여 계산하고, size()는 NaN이 있는 부분도 포함합니다.

 

df.groupby(['videoname']).count()

 

df.groupby(['videoname']).size()

 

 

 

3. 데이터형태 변환 (size → to_frame → unstack)

 

데이터의 타입과 출력을 확인합니다. 

print(type(df.groupby(['videoname']).size()))
df.groupby(['videoname']).size()

size 함수는 Series형태(1차원)를 반환합니다.

 

print(type(df.groupby(['videoname']).size().to_frame()))
df.groupby(['videoname']).size().to_frame()

to_frame 함수는 Series형태(1차원)의 데이터를 DataFrame형태(2차원)로 만들어줍니다.

 

print(type(df.groupby(['videoname']).size().to_frame().unstack()))
df.groupby(['videoname']).size().to_frame().unstack()

unstack 함수는 DataFrame형태(2차원)의 데이터를 Series형태(1차원)로 만들어줍니다.

 

print(type(df.groupby(['videoname']).size().to_frame()))
df.groupby(['videoname']).size().to_frame().T

2차원 데이터프레임 경우. T 를 입력하는 경우 행(인덱스) 열(칼럼)이 뒤바뀝니다.

 

 

 

4. head / tail

 

groupbyhead / tail 함수와 함께 사용하는 경우 기준값(by)을 기준으로 결과값을 반환합니다.

df.groupby(['videoname']).head()

 

df.groupby(['videoname']).tail(1)

 

 

5. 평균 구하기 mean

 

df.groupby(['videoname']).mean()

 

df.groupby(['videoname'])[['likecnt']].mean()

 

df.groupby(['videoname'])[['likecnt', 'dislikecnt']].mean()

 

 

6. 집계함수 agg

 

여러 개의 함수를 복수의 칼럼에 적용할 수 있는 그룹연산 방법입니다.

groupby 사용하여 생성된 그룹객체에 대해 적용합니다. 

 

pandas에 기본적으로 내장된 기본 집계함수를 사용할 수 있습니다

(예: mean, max(), min, sum, count, std)

 

df2 = df[['videoname', 'viewcnt', 'likecnt', 'dislikecnt']]
df2

새로운 데이터프레임('df2')을 만듭니다.

 

df2.groupby(['videoname']).agg([max])

videoname을 기준으로 그룹을 만든 후, 최댓값을 구하는 max 함수를 적용합니다.

 

df2.groupby(['videoname']).agg([max, min])

videoname을 기준으로 그룹을 만든 후, 최댓값과 최솟값을 구하는 max, min 함수를 적용합니다.

 

 

df2.groupby(['videoname', 'viewcnt']).agg([max])

videoname, viewcnt을 기준으로 그룹을 만든 후, 최댓값을 구하는 max 함수를 적용합니다.

 

df2.groupby(['videoname', 'viewcnt']).agg([max, min])

videoname, viewcnt을 기준으로 그룹을 만든 후, 최댓값과 최솟값을 구하는 max, min 함수를 적용합니다.

 

 

 


판다스 groupby, 판다스 groupby count, 판다스 groupby 시각화, 판다스 groupby 여러개, 판다스 groupby 정렬, 판다스 groupby 조건, 판다스 groupby 평균, 판다스 groupby agg, 판다스 groupby 함수, 판다스 groupby 그래프, groupby agg 함수, groupby agg aggreagate, grouby agg count, grouby agg pandas, grouby aggfunc, grouby agg sum, grouby agg lambda