판다스는 데이터 요약을 위해 groupby 함수를 제공합니다. 하나의 칼럼을 원하는 방법으로 요약하기에 좋지만, 여러 개의 칼럼을 서로 다른 기준으로 요약하려고 하면 막상 방법이 잘 떠오르지 않습니다. 파이썬 판다스 groupby 여러 개 기준으로 쉽게 요약하는 방법을 알아보았습니다.
연습을 위해 kospi 200 데이터를 판다스 데이터 프레임으로 가져왔습니다.
import pandas as pd
df= pd.read_html('https://stock.infoking.site/kospi200info/')[0]
df = df[df['PER']!='-']
df['PER'] = df['PER'].astype(float)
df['PBR'] = df['PBR'].astype(float)
1. 하나의 칼럼 요약값 구하기
보통 칼럼명을 입력하고, 요약 함수를 넣어서 많이 사용합니다. 칼럼명을 넣지 않으면, 모든 칼럼에 대해서 요약 값을 구합니다. 업종별로 PER최솟값을 구해봤습니다. 직관적이고 사용하기 좋지만, 여러 요약 값을 구할 수 없다는 단점이 있습니다.
df.groupby('업종명')['PER'].mean()
2. 여러 개의 요약값 구하기
agg함수를 이용하면 됩니다. 리스트로 필요한 요약값을 구할 수 있는 함수를 입력합니다. 문자열로 입력해야 하는 것이 특이합니다. 여러 개의 칼럼에 다수의 요약 함수를 적용할 수 있습니다. 하지만 칼럼 별로 다른 요약 값을 적용할 수 없다는 단점이 있습니다.
df.groupby('업종명')['PER'].agg(['min', 'mean', 'max'])
3. 칼럼별로 다른 요약값 구하기
이 때는 agg함수에 딕셔너리 자료형으로 입력합니다. 칼럼명에 필요한 요약값을 키와 값 형태로 넣습니다.
df.groupby('업종명').agg({"PER":"mean", "PBR":"max"})
4. 여러 칼럼, 여러 요약값 만들기
딕셔너리 자료형의 값에 필요한 요약값을 리스트 자료형으로 넣습니다. 가장 자유도가 높게 요약값을 구할 수 있는 방법입니다.
df.groupby('업종명').agg({"PER":['min', 'mean', 'max']
,"PBR":['min', 'mean', 'max']})
5. apply함수 이용하기
apply함수를 이용하면 그룹별로 원하는 계산을 할 수 있습니다. 예를 업종별로 최소 최대 변환을 한다면, 아래와 같이 할 수 있지요.
df.groupby('업종명')['PER'].apply(lambda x:(x - x.min())/(x.max()-x.min()))
파이썬 판다스 groupby 여러 개 기준으로 쉽게 요약하는 방법을 알아보았습니다. 가장 자유도가 높은 건 네 번째 방법입니다. 원하는 칼럼에 원하는 요약 값을 구할 수 있습니다. 하지만 매번 저렇게 사용하기는 번거롭습니다. 다른 방법도 알아둬서 원하는 수준의 방법을 이용하는 것이 좋겠습니다.
'데이터 > 데이터 분석' 카테고리의 다른 글
파이썬 대화형 그래프 쉽게 그리기, plotly express 이용 방법은?! (0) | 2022.04.26 |
---|---|
파이썬 판다스 데이터 프레임 만들기 5가지 방법과 추천방법은?! (0) | 2022.04.24 |
파이썬 plotly 그래프 x축,y축 등 변경 update_layout은?! (0) | 2022.04.20 |
의료 데이터 수집 및 조회 가능한 사이트 알아보기 (0) | 2022.04.05 |
파이썬 판다스 데이터프레임 출력, 모든 데이터 확인하는 3가지 방법 (0) | 2022.04.03 |
파이썬 히트맵 그리는 손쉬운 2가지 방법 (0) | 2022.03.28 |
판다스 데이터프레임 칼럼 이름 변경하는 5가지 방법은?! (0) | 2022.03.16 |
K-Means 클러스터링 군집 개수 정하는 방법은?! (0) | 2022.02.09 |