데이터 그룹화 & 요약! groupby와 피벗테이블로 데이터 분석 전문가 되기 (ft. Pandas)
게시일:
작성자: 자청의 유튜브 추출기
데이터 프레임 그룹화 쉽게 이해하기!
이번 시간에는 데이터를 그룹으로 묶어서 요약하는 방법을 배울 거야. 마치 반 친구들끼리 모여서 평균 점수를 내거나, 학년별로 모여서 좋아하는 과목을 알아보는 것처럼 말이지!
1. 그룹바이는 뭐고, 어떻게 쓸까?
groupby()는 데이터를 특정 기준에 따라 묶어주는 마법 같은 기능이야.
-
학년별 평균 구하기:
- 학년이 1학년, 2학년, 3학년 이렇게 나뉘어 있잖아?
groupby('학년')을 쓰면 1학년끼리, 2학년끼리, 3학년끼리 묶어줘.- 그 다음에
.평균()을 붙이면 각 학년별 평균 점수를 알 수 있지! - 반별로도 똑같이 할 수 있어.
groupby('반').평균()이렇게!
-
여러 기준으로 묶기:
- 학년이랑 반, 두 가지 기준으로 묶고 싶을 때도 있어.
groupby(['학년', '반'])이렇게 리스트 안에 묶고 싶은 기준들을 넣어주면 돼.- 그러면 1학년 A반, 1학년 B반, 2학년 A반, 2학년 B반 이렇게 더 세세하게 묶어준답니다.
2. 여러 가지 요약 한 번에! aggregate()
각 그룹별로 평균, 최댓값, 개수 등 여러 가지 요약을 한 번에 하고 싶을 때 aggregate()를 사용해.
-
학년별 과목별 평균과 최댓값 구하기:
- 학년별로 묶은 다음에, 국어, 영어, 수학 점수의 평균과 최댓값을 동시에 알고 싶을 때!
groupby('학년').aggregate(['평균', '최댓값'])이렇게 쓰면 돼.- 그러면 각 학년별로 국어, 영어, 수학의 평균과 최댓값이 짠! 하고 나타나지.
-
한 컬럼에 여러 함수 적용하기:
- '평균'이라는 컬럼에 대해서 평균, 최소값, 최댓값, 개수를 모두 알고 싶을 때도 있어.
groupby('학년')['평균'].aggregate(['평균', '최소', '최대', '개수'])이렇게 하면 '평균' 컬럼에 대한 다양한 요약 정보를 얻을 수 있어.
3. 그룹별 데이터 개수 세기
각 그룹에 몇 명씩 있는지 알고 싶을 때 size()나 count()를 사용해.
-
학년별 인원수 세기:
groupby('학년').size()를 쓰면 각 학년별로 몇 명인지 알 수 있어.- 1학년은 2명, 2학년은 3명 이런 식으로!
-
반별 인원수 세기:
groupby('반').count()를 쓰면 각 반별로 몇 명인지 셀 수 있지.
4. 결과를 깔끔한 표로 만들기: reset_index()
그룹화한 결과를 다시 일반적인 표(데이터 프레임) 형태로 만들고 싶을 때 reset_index()를 사용해.
- 그룹화하면 학년이나 반 같은 정보가 맨 앞에 인덱스로 붙는데,
reset_index()를 쓰면 이 인덱스가 일반 컬럼으로 바뀌고 새로운 숫자로 된 인덱스가 맨 아래에 붙게 돼.
5. 표를 멋지게 재구성하기: pivot_table()
pivot_table()은 데이터를 더욱 다양하고 유연하게 요약할 수 있는 강력한 기능이야. 마치 엑셀의 피벗 테이블처럼 말이지!
-
학년별, 반별 평균 점수 보기:
index에는 행으로 표시하고 싶은 기준 (예: 학년)을,columns에는 열로 표시하고 싶은 기준 (예: 반)을 넣어줘.values에는 어떤 값을 요약할지 (예: 평균 점수)를,aggfunc에는 어떤 함수로 요약할지 (예: 평균)를 지정하면 돼.- 그러면 각 학년별, 반별 평균 점수를 한눈에 볼 수 있는 표가 만들어져!
-
여러 값 요약하기:
- 평균 점수뿐만 아니라 국어, 영어, 수학 점수의 평균을 한 번에 보고 싶을 때도 있어.
values에 국어, 영어, 수학을 모두 넣어주면 각 과목별 평균을 볼 수 있지.
-
다양한 함수 적용하기:
- 평균뿐만 아니라 최댓값, 최소값, 개수까지 한 번에 보고 싶다면
aggfunc에 여러 함수를 리스트로 넣어주면 돼.aggfunc=['평균', '최대', '최소', '개수']이렇게 말이야.
- 평균뿐만 아니라 최댓값, 최소값, 개수까지 한 번에 보고 싶다면
정리하자면,
groupby(): 데이터를 특정 기준으로 묶어줘.aggregate(): 묶은 데이터에 대해 여러 가지 요약을 한 번에 해줘.size(),count(): 그룹별 데이터 개수를 세줘.reset_index(): 그룹화된 결과를 일반 표로 바꿔줘.pivot_table(): 데이터를 더 유연하고 다양하게 요약하는 표를 만들어줘.
이 내용들이 처음에는 조금 어렵고 헷갈릴 수 있어. 그러니까 꼭 직접 코드를 실행해보면서 하나씩 익혀나가도록 하자!