groupby 함수는 다양한 옵션 및 기능이 있지만 여기서는 기본적인 기능에 대해서만 알아보겠습니다.
df
----------------------------------------------
테마 종목명 PER PBR
0 2차전지(생산) SK이노베이션 10.19 1.29
1 해운 팬오션 21.23 0.95
2 시스템반도체 티엘아이 35.97 1.12
3 해운 HMM 21.52 3.20
4 시스템반도체 아이에이 37.32 3.55
5 2차전지(생산) LG화학 83.06 3.75
df1 = df[df["테마"] == "2차전지(생산)"]
df2 = df[df["테마"] == "해운"]
df3 = df[df["테마"] == "시스템반도체"]
df1
----------------------------------------------
테마 종목명 PER PBR
0 2차전지(생산) SK이노베이션 10.19 1.29
5 2차전지(생산) LG화학 83.06 3.75
df2
----------------------------------------------
테마 종목명 PER PBR
1 해운 팬오션 21.23 0.95
3 해운 HMM 21.52 3.20
df3
----------------------------------------------
테마 종목명 PER PBR
2 시스템반도체 티엘아이 35.97 1.12
4 시스템반도체 아이에이 37.32 3.55
mean1 = df1["PER"].mean()
mean2 = df2["PER"].mean()
mean3 = df3["PER"].mean()
import pandas as pd
data = [mean1, mean2, mean3]
index = ["2차전지(생산)", "해운", "시스템반도체"]
s = pd.Series(data=data, index=index)
s
----------------------------------------------
2차전지(생산) 46.625
시스템반도체 36.645
해운 21.375
dtype: float64
# 평균연산을 적용할 수 없는 "종목명" 컴럼은 자동으로 제거됨
# df.groupby("테마")[["PER", "PBR"]].mean()
df.groupby("테마").mean()
----------------------------------------------
PER PBR
테마
2차전지(생산) 46.625 2.520
시스템반도체 36.645 2.335
해운 21.375 2.075
기본적인 groupby 함수 사용 예시.
df.groupby("테마").get_group("2차전지(생산)")
----------------------------------------------
테마 종목명 PER PBR
0 2차전지(생산) SK이노베이션 10.19 1.29
5 2차전지(생산) LG화학 83.06 3.75
# 특정필드만 추출해서 "테마"로 그룹핑.
temp = df[["테마", "PER", "PBR"]].groupby("테마").get_group("2차전지(생산)")
temp
----------------------------------------------
테마 PER PBR
0 2차전지(생산) 10.19 1.29
5 2차전지(생산) 83.06 3.75
# "테마"로 그룹핑 후 특정필드만 추출.
temp = df.groupby("테마")[ ["테마", "PER", "PBR"] ].get_group("2차전지(생산)")
(temp)
----------------------------------------------
테마 PER PBR
0 2차전지(생산) 10.19 1.29
5 2차전지(생산) 83.06 3.75
아래의 조건은 같은 결과를 출력합니다.
평균연산을 적용할 수 없는 "종목명" 컴럼은 자동으로 제거됨
df.groupby("테마")[["PER", "PBR"]].mean()
----------------------------------------------
PER PBR
테마
2차전지(생산) 46.625 2.520
시스템반도체 36.645 2.335
해운 21.375 2.075
# 평균연산을 적용할 수 없는 "종목명" 컴럼은 자동으로 제거됨
df.groupby("테마").mean()
----------------------------------------------
PER PBR
테마
2차전지(생산) 46.625 2.520
시스템반도체 36.645 2.335
해운 21.375 2.075
agg 메서드를 이용하면 다양한 함수를 사용 가능하다. 컴럼의 이름을 key, 적용할 함수의 이름은 value 로 전달한다.
numpy 를 이용하면 표준편차와 분산도 쉽게 계산이 가능하다.
df
----------------------------------------------
테마 종목명 PER PBR
0 2차전지(생산) SK이노베이션 10.19 1.29
1 해운 팬오션 21.23 0.95
2 시스템반도체 티엘아이 35.97 1.12
3 해운 HMM 21.52 3.20
4 시스템반도체 아이에이 37.32 3.55
5 2차전지(생산) LG화학 83.06 3.75
df.groupby("테마").agg({"PER": max, "PBR": min})
----------------------------------------------
PER PBR
테마
2차전지(생산) 83.06 1.29
시스템반도체 37.32 1.12
해운 21.52 0.95
# 표준편차와 분산 계산
import numpy as np
df.groupby("테마").agg({"PER": [min, max], "PBR": [np.std, np.var]})
----------------------------------------------
PER PBR
min max std var
테마
2차전지(생산) 10.19 83.06 1.739483 3.02580
시스템반도체 35.97 37.32 1.718269 2.95245
해운 21.23 21.52 1.590990 2.53125
'Python > Data analysis' 카테고리의 다른 글
[Python] Data Analysis - DataFrame - merge (0) | 2023.04.05 |
---|---|
[Python] Data Analysis - DataFrame - add data (0) | 2023.04.04 |
[Python] Data Analysis - DataFrame - sort, rank (0) | 2023.04.04 |
[Python] Data Analysis - DataFrame - Filter (0) | 2023.04.04 |
[Python] Data Analysis - DataFrame - Query (0) | 2023.04.04 |