열 형태로 만들어진 Series에 있는 데이터를 하나의 표의 구조로 만들어놓은 형태.
판다스를 활용하여 사용할 수 있으며 딕셔너리, 리스트, 튜플과 같은 여러가지 자료형을 이용할 수 있습니다.
- 복잡한 데이터를 어떤 기준에 따라 여러 그룹으로 나누어 분할처리 하는 것
- 그룹 연산은 데이터를 집계, 반환, 필터링 하는데 효율적
- 사용법 : groupby() 메소드를 사용
하나의 컬럼을 기준으로 데이터를 집계, 요약 분석할 수 있습니다.
사용방법은 아래와 같습니다
DataFrame.groupby('columns')
타이타닉이라는 데이터프레임에서
나이로(age 컬럼) 그룹을 묶어서 결과를 보여줌
titanic.groupby('age')
타이타닉이라는 데이터프레임에서
객실등급(class 컬럼)으로 분류한 데이터를 보여줌
titanic.groupby(coulumns)
타이타닉 데이터 프레임의 각 그룹 별 컬럼들의 평균을 구하세요
먼저 데이터 프레임을 class를 기준으로 groupby()합니다
grouped = df.groupby(['class])
print(grouped)
#class는 예약어이기 때문에 level등으로 컬럼 이름을 바꿔서 사용하는 것을 추천합니다.
class를 기준으로 groupby()한 내용으로
평균값을 냅니다.
average = grouped.mean()
average
describe()를 사용하려면 리스트 형태여야 합니다.
따라서 먼저 list로 groupby 했던 객체를 리스트로 묶어줍니다
list(grouped)
2.describe 사용
리스트로 묶은 그룹을
인덱싱을 통해 위치를 지정합니다
li = list(grouped)
li[2][1].describe()
a = grouped.groups['Third]
group3 = df.loc[a]
group3.describe()
group3 = grouped.get_group('Third')
group3.describe()
grouped_two = df.groupby(['age','class'])
grouped_two.describe()
for key, group in grouped_two:
print('*key:', key)
print('*value :', group)
print(grouped_two.describe)
-Third에 있는 female의 정보만 보기
group3 = grouped_two.get_group(('Third', 'female'))
group3
추가로 groupby()를 활용하여
할 수 있는 연산을 알아봅시다.
적용 - 결합
데이터 집계 (aggregation agg)
- agg는 groupby()한 오브젝트를 집계 연산을 처리 할 수 있다
- 사용 방법 :group 객체.agg([함수1, 함수2...])
변환(transform)
- 값의 원래 인덱스와 컬럼 이름을 기준으로 연산한 결과를 보여줌
- 사용 방법 : group객체.transform(매핑함수)
필터링(filter)
- filter는 조건에 맞는 값만 남긴다
- 사용 방법 : group객체.filter(조건함수식)
값에 개별적으로 함수 적용하는 apply
- 판다스의 각각의 값을 특정 함수로 1:1 매칭
- 사용자가 원하는 대부분 연산을 그룹 객체에 적용 (모든 값이 적용대상이 됨)
- 사용 방법 : group객체.apply(매칭시키려는 함수)
def z(x):
return x.max - x.min
y = grouped.agg(z)
display(y.head())
그룹에 조건을 적용 시키는 filter함수를 활용합니다.
사용법 : group객체.filter(조건함수식)
grouped = df.groupby('class')
x = grouped.filter(lambda x: x >= 200)
print(x.head())