| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |
- DataFrameGroupBy
- Python
- 이미지
- Docker Compose
- PowerShell
- 정렬
- vim
- cli
- uv init
- FileChannel
- Webpack
- docker
- json schema
- RandomAccessFile
- Ollama
- tauri
- podman
- Typescript
- vscode
- 출력 폭
- Vite
- CSS
- curl
- Java
- UV
- json
- pandas
- io
- yaml
- uv pin
- Today
- Total
워로디스
Pandas. DataFrameGroupBy 객체 내용 확인 본문
DataFrameGroupBy 객체는 그대로 출력해도 내부 데이터가 보이지 않습니다.
grouped = df.groupby("지역")
print(grouped)
# <pandas.core.groupby.generic.DataFrameGroupBy object at ...>
대신 그룹 구조를 볼지, 각 그룹의 실제 데이터를 볼지, 집계 결과를 볼지에 따라 확인 방법을 선택하면 됩니다.
1. 그룹 이름과 행 위치 확인: .groups
grouped.groups
예를 들어:
{
"부산": Index([2, 3], dtype="int64"),
"서울": Index([0, 1], dtype="int64")
}
각 그룹에 어떤 원본 인덱스가 포함됐는지 확인할 수 있습니다.
그룹 키만 보고 싶다면:
grouped.groups.keys()
list(grouped.groups)
2. 각 그룹의 실제 데이터 확인: 반복문
가장 확실한 방법입니다.
for name, group in grouped:
print("그룹:", name)
print(group)
name은 그룹 키이고, group은 해당 그룹의 DataFrame입니다.
그룹이 너무 많을 때는 일부만 봅니다.
for i, (name, group) in enumerate(grouped):
print("그룹:", name)
print(group.head())
if i == 2:
break
3. 특정 그룹만 확인: .get_group()
grouped.get_group("서울")
여러 열을 기준으로 그룹화했다면 튜플을 사용합니다.
grouped = df.groupby(["지역", "상품"])
grouped.get_group(("서울", "A"))
실무에서 특정 그룹의 이상 데이터를 조사할 때 유용합니다.
4. 그룹별 행 개수 확인: .size()
그룹이 제대로 나뉘었는지 빠르게 확인하기 가장 좋은 방법 중 하나입니다.
grouped.size()
예:
지역
부산 2
서울 2
dtype: int64
결과를 일반적인 DataFrame으로 받고 싶다면:
grouped.size().reset_index(name="행개수")
size()는 결측값 여부와 관계없이 그룹의 전체 행 수를 셉니다.
5. 각 그룹의 앞부분 확인: .head()
grouped.head(2)
주의할 점은 그룹마다 앞의 2행을 반환하지만, 결과는 원본 DataFrame과 비슷한 형태라는 것입니다. 그룹별로 구분되어 출력되지는 않습니다.
그룹별 첫 행만 확인하려면:
grouped.first()
하지만 first()는 열별 첫 번째 결측값이 아닌 값을 선택할 수 있으므로, 실제 첫 번째 행과는 차이가 날 수 있습니다.
실제 각 그룹의 첫 번째 행을 원한다면:
grouped.nth(0)
또는:
grouped.head(1)
6. 그룹별 요약 통계 확인: .agg() 또는 .describe()
숫자형 열을 빠르게 점검하려면:
grouped["매출"].agg(["count", "sum", "mean", "min", "max"])
전체 기술통계는:
grouped["매출"].describe()
여러 열을 각각 다르게 집계할 수도 있습니다.
grouped.agg(
매출합계=("매출", "sum"),
평균수량=("수량", "mean"),
행개수=("매출", "size")
)
7. GroupBy 객체의 주요 속성 확인
grouped.ngroups
전체 그룹 개수를 반환합니다.
grouped.indices
.groups와 비슷하지만, 그룹별 위치를 NumPy 배열 형태로 제공합니다.
grouped.obj
그룹화하기 전의 원본 DataFrame을 확인합니다.
grouped.grouper
내부 그룹화 정보를 볼 수 있지만, 일반적인 분석에서는 자주 쓸 필요가 없습니다. 또한 pandas 버전에 따라 내부 API는 변경될 수 있으므로 디버깅 외에는 의존하지 않는 편이 좋습니다.
추천 확인 순서
실무에서는 대개 아래 순서로 확인하면 충분합니다.
grouped = df.groupby("지역")
# 1. 그룹 수
print(grouped.ngroups)
# 2. 그룹별 데이터 개수
print(grouped.size())
# 3. 그룹 이름
print(list(grouped.groups))
# 4. 특정 그룹 확인
print(grouped.get_group("서울"))
# 5. 그룹별 일부 데이터 확인
for name, group in grouped:
print(name)
print(group.head(2))
핵심적으로는 다음 세 가지를 가장 많이 사용합니다.
| 확인 목적 | 방법 |
|---|---|
| 그룹별 행 개수 | grouped.size() |
| 특정 그룹의 데이터 | grouped.get_group(key) |
| 모든 그룹의 실제 내용 | for name, group in grouped |
단순히 객체 내부를 살펴보는 목적이라면 size()와 반복문 조합이 가장 이해하기 쉽습니다.
'Data Science > Pandas' 카테고리의 다른 글
| Pandas. stack() 과 unstack() (0) | 2026.08.06 |
|---|---|
| Pandas. 데이터 재구조화 pivot 과 pivot_table (0) | 2026.08.03 |
| Pandas. 데이터프레임 출력 폭(Width) 조절 방법 (0) | 2026.08.02 |
| Pandas. 연산 함수와 drop 함수의 axis 동작 원리 차이 (0) | 2026.08.02 |
| pandas. IQR을 이용한 이상치 판정 (0) | 2026.06.19 |
