일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준
- 파이썬 정렬
- 사회조사분석사 2급 기출문제집
- 사이킷런
- 사회조사분석사2급실기신청
- 오미크론 자가격리
- 사회조사분석사 2급 접수
- 현대엔지니어링
- 사회조사분석사2급실기신청꿀팁
- 사회조사분석사 2급 필기 요약정리
- 사회조사분석사 2급 공부방법
- 벽부수고이동하기 파이썬
- DFS
- 현대엔지니어링 수요예측
- 백준 알고리즘
- 공모주 청약
- 너비우선탐색
- 공모주청약
- 2월공모주
- BFS
- 머신러닝
- 사회조사분석사 2급 독학
- 시물레이션
- 사회조사분석사 2급
- 그리디
- 정렬
- 알고리즘
- 사회조사분석사 2급 필기 공부방법
- 사회조사분석사 2급 필기 시험시간
- 공모주
- Today
- Total
세상을 바꾸는 데이터
[Pandas] 판다스 - DataFrame을 정렬, 집계, 그룹하는 방법 본문
이번 포스트에서는 DataFrame을 정렬, 집계, group by하는 방법을 알아보자.
import numpy as np
import pandas as pd
titanic_df = pd.read_csv('titanic_train.csv')
캐글(kaggle)에서 사용되는 연습 데이터셋인 타이타닉(titanic) 데이터를 이용한다.
타이타닉 데이터셋 다운 및 자세한 내용은 다음 포스트를 참고하면 된다.
https://data-flower.tistory.com/9?category=949030
DataFrame, Series 정렬 - sort_values( )
- DataFrame.sort_values( )
DataFrame과 Series의 정렬을 위해서는 sort_values( ) 메서드를 이용한다.
sort_values( )의 주요 입력 파라미터는 by, ascending, inplace이다.
1. by로 특정 칼럼을 입력하면 해당 칼럼으로 정렬을 수행한다.
2. ascending = True로 설정하면 오름차순 정렬, ascending = False로 설정하면 내림차순 정렬한다.
3. inplace = False로 설정하면 sort_values( )를 호출한 DataFrame은 그대로 유지하며 정렬된 DataFrame을 결과로 반환한다. 반대로 inplace = True로 설정하면 호출한 DataFrame의 정렬 결과를 그대로 적용한다.
- 한 개의 컬럼으로 정렬
다음은 titanic_df를 Name 칼럼으로 오름차순 정렬해 반환한 것이다.
titanic_df_sort = titanic_df.sort_values(by=['Name'], ascending = True)
print(titanic_df_sort.head(3))
[Output]
- 여러 개의 칼럼으로 정렬
여러 개의 칼럼으로 정렬하려면 by에 리스트 형식으로 정렬하려는 칼럼을 입력하면 된다. Pclass와 Name을 내림차순으로 정렬한 결과를 반환해보자. 첫 번째로 'Pclass' 칼럼 내림차순 정렬하고, 그다음으로 'Name' 칼럼을 내림차순 정렬한다.
titanic_df.sort_values(by=['Pclass', 'Name'], ascending=False)
[Output]
집계 - Aggregation 함수
- DataFrame.min( )
- DataFrame.max( )
- DataFrame.sum( )
- DataFrame.count( )
모든 칼럼의 데이터 개수를 count로 구해보자. 여기서 NaN값은 count에서 제외된다.
titanic_df.count()
[Output]
특정 칼럼들로 집계 함수를 수행해볼 것이다. 다음은 타이타닉 탑승자의 나이와 요금의 평균을 구한 것이다.
titanic_df[['Age', 'Fare']].mean(axis=0)
[Output]
groupby( )
- DataFrame.groupby( )
Group By 하고자 하는 컬럼을 입력한다. 여러 개의 칼럼으로 Group by 하고자 하면 [ ] 내에 해당 칼럼명을 입력한다. DataFrame에 groupby( )를 호출하면 DataFrameGroupBy 객체를 반환하게 된다.
다음은 Pclass 칼럼을 기준으로 데이터 개수를 계산한 것이다.
titanic_groupby = titanic_df.groupby('Pclass').count()
titanic_groupby
[Output]
Pclass를 기준으로 PassengerId와 Survived 칼럼만 데이터 개수를 세어보자.
titanic_groupby = titanic_df.groupby(by='Pclass')[['PassengerId', 'Survived']].count()
titanic_groupby
[Output]
pandas는 여러 개의 집계(Aggregation) 함수를 적용할 수 있도록 agg( ) 함수를 제공하고 있다.
다음은 Pclass별 나이 칼럼 데이터를 추출하되, Pclass별 나이의 최댓값과 최솟값을 추출한 데이터이다.
titanic_df.groupby('Pclass')['Age'].agg([max, min])
[Output]
Reference
https://github.com/chulminkw/PerfectGuide
'ML > Pandas' 카테고리의 다른 글
[Pandas] 판다스 - 결손 데이터 처리하기 (8) | 2022.01.26 |
---|---|
[Pandas] 판다스 - 데이터 선택 및 필터링 (indexing) (9) | 2022.01.24 |
[Pandas] 판다스 - DataFrame 칼럼 데이터 생성, 수정, 삭제 (10) | 2022.01.23 |
[Pandas] 판다스 - 데이터프레임과 넘파이 상호 변환 (0) | 2022.01.23 |
[Pandas] 판다스 - 파일을 DataFrame으로 불러오기, 기본 API (2) | 2022.01.19 |