<Python>/[DataFrame]
파이썬 Pandas DataFrame .groupby.apply vsv .agg
9566
2023. 3. 8. 15:52
728x90
그룹별로 데이터를 처리해야 하는 경우가 종종 있습니다. Pandas DataFrame에서는 groupby 함수를 이용해 그룹별로 데이터를 묶은 후 처리할 수 있습니다. 이번에는 groupby 함수를 이용해 그룹별로 정렬 및 값을 추가하는 방법에 대해 알아보겠습니다.
(1) 그룹별로 x 칼럼을 기준으로 내림차순 정렬하기 groupby 함수를 이용해 데이터를 그룹화한 후 apply 함수를 이용해 그룹별로 정렬을 수행할 수 있습니다. 아래 예제는 group 칼럼을 기준으로 x 칼럼을 내림차순 정렬하는 코드입니다.
import pandas as pd
# 예제 데이터 생성
df = pd.DataFrame({'group': ['A', 'A', 'B', 'B'], 'x': [3, 1, 2, 4]})
# 그룹별로 x 칼럼을 기준으로 내림차순 정렬
df_sorted = df.groupby('group').apply(lambda x: x.sort_values('x', ascending=False)).reset_index(drop=True)
print(df_sorted)
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
group x
0 A 3
1 A 1
2 B 4
3 B 2
(2) 그룹별로 y 칼럼의 첫번째 값, 마지막 값을 DataFrame에 칼럼 추가하기 groupby 함수와 agg 함수를 이용하면 그룹별로 여러 개의 값을 계산하고 DataFrame에 추가할 수 있습니다. 아래 예제는 group 칼럼을 기준으로 y 칼럼의 첫번째 값과 마지막 값을 계산하여 DataFrame에 'y_first'와 'y_last' 칼럼을 추가하는 코드입니다.
import pandas as pd
# 예제 데이터 생성
df = pd.DataFrame({'group': ['A', 'A', 'B', 'B'], 'y': [10, 20, 30, 40]})
# 그룹별로 y 칼럼의 첫번째 값, 마지막 값을 DataFrame에 추가하기
df_agg = df.groupby('group').agg({'y': ['first', 'last']}).reset_index()
df_agg.columns = ['group', 'y_first', 'y_last']
print(df_agg)
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
group y_first y_last
0 A 10 20
1 B 30 40
이와 같이 groupby 함수와 다양한 함수를 조합하여 그룹별로 데이터를 처리할 수 있습니다.
728x90