Base/Python

[Python] Pandas 사용법 - 그룹화 및 그룹 함수 (groupby, qcut, cut, transfrom )

반응형

그룹화 (groupby)

#사용법
value = dataframe.groupby(dataframe['컬럼'])

 

 

기본적인 함수들을 import 해주고 

 

 

데이터 프레임을 생성해준다.

 

 

 

그다음 grouping을 해보자. 여기서는 학과를 기준으로 groupby 해주었다. 지금은 묶인 상태이고 여기서 어떻게 사용하냐에 따라 값이 나온다.

 

 

 

묶어놨던 그룹의 size를 확인해 본다. 해당 값들이 몇 개가 있는지가 나온다.

 

 

. mean()이라는 명령어를 통해 평균을 볼 수도 있다.

 

 

. sum을 통해 합계를 볼 수도 있다.. 이런 다양한 집계 함수가 가능하다.(max, min, sum, mean 등등)

 

 

 

멀티로 group을 묶을 수도 있다.

 

예제)

seaborn 을 통해 iris 데이터를 받아온다.

 

이렇게 기본적으로 제공해주는 집계 함수 사용이 가능하다. 

 

. describe()는 데이터의 개략적인 값을 볼 때 사용된다.

 

 

 

 

# agg()

 

groupby 된 값에 사용자 정의 함수를 정의해서 사용할 수 있다.

모든 열에 여러 함수를 매핑 : group객체. agg([함수 1, 함수 2, 함수 3,…])
각 열마다 다른 함수를 매핑 : group객체. agg({‘열 1’: 함수 1, ‘열 2’:함수 2, …})

 

이런 식으로 내가 정의한 함수를 사용할 때는 agg를 사용한다. 열을 지정해주지 않는다면 모든 함수에 적용된다.

 

 

 

# apply()

사용자 정의 함수를 적용할 수 있다. agg와의 차이는 agg는 여러 개의 집계 함수를 사용할 수 있는 반면 apply는 하나의 집계 함수만 사용 가능하다.

해당 값에 sort_values를 통해 정렬을 하는데 기준을 petal_length로 잡았다.

그리고 ascending=Fase로 내림차순으로 만든다.

그 후 이것들을 groupby를 하는데 그 기준을 종에 따라 group을 묶는다.

그 뒤 head(3)으로 앞에서 3개의 값을 가져온다.

 

apply 함수를 통해 적용하는 방법이다.

 

 

 

 

# cut() , quct()

- cut() : 동일 길이로 나누어서 범주를 만들어서 그룹에 대한 통계량

- quct() : 동일 개수로 나누어서 범주를 만들어서 그룹에 대한 통계량 그룹에 대한 통계량

 

함수로 정의해보았다. s는 value고 이것을 3개의 labels(대, 중, 소) 구분 지어 나눈다. 그 후 astype으로 str으로 변환은 해주었다.

 

 

그 값을 이렇게 받고 transform을 이용해 데이터 프레임 자체로 변경한 후 칼럼을 추가한다. 그리고 그 함수는 cat3_petal_length를 넣는다.

 

그러면 위와 같이 데이터 프레임 형태가 바뀌고 소중대 가 추가된 걸 볼 수 있다.

 

 


참조 : yganalyst.github.io/data_handling/Pd_13/#3-2-%EC%97% B0% EC%82% B0-%ED% 9B%84-%EA% B8% B0% EC% A1% B4-%EB% 8D% B0% EC% 9D% B4% ED%84% B0% ED%94%84% EB% A0%88% EC% 9E%84% EC% 9D%98-%ED%98%95% ED%83% 9C% EB% A1%9C--transfrom

반응형