Python과 Pandas를 사용하여 GroupBy 객체 출력하기
Python과 Pandas를 사용하여 GroupBy 객체 출력하기
print() 함수 사용하기
가장 간단한 방법은 print()
함수를 사용하는 것입니다.
import pandas as pd
# 데이터 생성
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'],
'age': [30, 25, 22, 33, 27],
'city': ['Seattle', 'San Francisco', 'New York', 'Chicago', 'Boston']}
df = pd.DataFrame(data)
# 그룹화
grouped_data = df.groupby('city')
# 출력
print(grouped_data)
위 코드는 다음과 같은 출력을 생성합니다.
<pandas.core.groupby.GroupBy object at 0x115567200>
이는 GroupBy 객체 자체를 출력하며 실제 데이터는 보여주지 않습니다.
DataFrame으로 변환하기
GroupBy 객체를 DataFrame
으로 변환한 다음 print()
함수를 사용하여 출력할 수 있습니다.
# 그룹별 평균 연령 계산
avg_age = grouped_data['age'].mean()
# DataFrame으로 변환
df_grouped = avg_age.to_frame(name='평균 연령')
# 출력
print(df_grouped)
평균 연령
city
Seattle 30.000000
San Francisco 25.000000
New York 33.000000
Chicago 27.000000
Boston 27.000000
이 방법은 각 그룹에 대한 통계를 출력하는 데 유용합니다.
apply() 함수 사용하기
GroupBy 객체에 apply()
함수를 사용하여 사용자 정의 함수를 적용하고 결과를 출력할 수 있습니다.
def print_group_info(group):
print(f"도시: {group.name}")
print(f"그룹 크기: {len(group)}")
print(f"평균 연령: {group['age'].mean()}")
print()
grouped_data.apply(print_group_info)
도시: Seattle
그룹 크기: 1
평균 연령: 30.0
도시: San Francisco
그룹 크기: 1
평균 연령: 25.0
도시: New York
그룹 크기: 1
평균 연령: 33.0
도시: Chicago
그룹 크기: 1
평균 연령: 27.0
도시: Boston
그룹 크기: 1
평균 연령: 27.0
iterrows() 함수 사용하기
GroupBy 객체의 iterrows()
함수를 사용하여 각 그룹을 반복하고 원하는 정보를 출력할 수 있습니다.
for name, group in grouped_data:
print(f"도시: {name}")
print(group)
print()
도시: Seattle
name age city
0 Alice 30 Seattle
도시: San Francisco
name age city
1 Bob 25 San Francisco
도시: New York
name age city
2 Charlie 22 New York
도시: Chicago
name age city
3 David 33 Chicago
도시: Boston
name age city
4 Emily 27 Boston
결론
예제 코드: 판다스에서 그룹바이 객체 출력하기
print() 함수 사용
import pandas as pd
# 데이터 생성
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'],
'age': [30, 25, 22, 33, 27],
'city': ['Seattle', 'San Francisco', 'New York', 'Chicago', 'Boston']}
df = pd.DataFrame(data)
# 그룹화
grouped_data = df.groupby('city')
# 출력
print(grouped_data)
<pandas.core.groupby.GroupBy object at 0x115567200>
DataFrame으로 변환하기
# 그룹별 평균 연령 계산
avg_age = grouped_data['age'].mean()
# DataFrame으로 변환
df_grouped = avg_age.to_frame(name='평균 연령')
# 출력
print(df_grouped)
평균 연령
city
Seattle 30.000000
San Francisco 25.000000
New York 33.000000
Chicago 27.000000
Boston 27.000000
apply() 함수 사용
def print_group_info(group):
print(f"도시: {group.name}")
print(f"그룹 크기: {len(group)}")
print(f"평균 연령: {group['age'].mean()}")
print()
grouped_data.apply(print_group_info)
도시: Seattle
그룹 크기: 1
평균 연령: 30.0
도시: San Francisco
그룹 크기: 1
평균 연령: 25.0
도시: New York
그룹 크기: 1
평균 연령: 33.0
도시: Chicago
그룹 크기: 1
평균 연령: 27.0
도시: Boston
그룹 크기: 1
평균 연령: 27.0
추가 정보
Pandas에서 GroupBy 객체 출력: 대체 방법
reset_index() 함수 사용
reset_index()
함수를 사용하여 GroupBy 객체를 DataFrame으로 변환하고 print()
함수를 사용하여 출력할 수 있습니다.
# 그룹별 평균 연령 계산
avg_age = grouped_data['age'].mean()
# DataFrame으로 변환하고 인덱스 재설정
df_grouped = avg_age.reset_index()
# 출력
print(df_grouped)
city 평균 연령
0 Seattle 30.000000
1 San Francisco 25.000000
2 New York 33.000000
3 Chicago 27.000000
4 Boston 27.000000
unstack() 함수 사용
# 다차원 그룹화 (예: 'city' 및 'gender' 기준 그룹화)
grouped_data = df.groupby(['city', 'gender'])
# DataFrame으로 변환하고 언스택
df_grouped = grouped_data['age'].unstack()
# 출력
print(df_grouped)
age
gender male female
city
Seattle 30 NaN
San Francisco 25 NaN
New York 33 NaN
Chicago 27 NaN
Boston 27 NaN
to_json() 함수 사용
# 그룹별 평균 연령 계산
avg_age = grouped_data['age'].mean()
# JSON 문자열로 변환
json_data = avg_age.to_json()
# 출력
print(json_data)
{"Seattle": 30.0, "San Francisco": 25.0, "New York": 33.0, "Chicago": 27.0, "Boston": 27.0}
결론
python pandas