일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 공모주
- 2월공모주
- 사회조사분석사 2급 접수
- 사회조사분석사 2급 기출문제집
- 머신러닝
- 사회조사분석사2급실기신청꿀팁
- 너비우선탐색
- 백준
- 현대엔지니어링
- 공모주 청약
- 알고리즘
- 백준 알고리즘
- 그리디
- 오미크론 자가격리
- 사회조사분석사2급실기신청
- 사이킷런
- 사회조사분석사 2급
- BFS
- 시물레이션
- 사회조사분석사 2급 독학
- DFS
- 현대엔지니어링 수요예측
- 정렬
- 파이썬 정렬
- 사회조사분석사 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
[Pandas] 판다스 - 파일을 DataFrame으로 불러오기, 기본 API
새로운 주피터 노트북을 생성하고 판다스 모듈을 임포트 한다. import pandas as pd 다음으로 데이터 파일을 판다스의 DataFrame으로 로딩할 것이다. 사용할 데이터 파일은 캐글의 대표 연습 파일인 타
data-flower.tistory.com
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 |