index이름, column 이름을 기준으로 정렬
- sort_index(axis, ascending=True)
- axis
- index 이름 기준 정렬(행) : 'index' 또는 0 (기본값)
- column 이름 기준 정렬(열) : 'columns' 또는 1
- ascending
- 정렬방식
- True(기본): 오름차순, False: 내림차순
- inplace
- 원본에 적용 여부
- False(기본): 변경한 복사본 반환
- True : 원본을 변경
특정 컬럼(열)의 값을 기준으로 정렬
- sort_values(by, ascending, inplace)
- by
- 정렬 기준 컬럼이름을 문자열로 지정
- 여러 컬럼에 대해 정렬할 경우 리스트에 담아 전달
- ascending
- 정렬방식
- True(기본): 오름차순, False: 내림차순
- 여러 컬럼에 대해 정렬할 경우 정렬방식도 리스트에 담아 전달
- inplace
- 원본에 적용 여부
- False(기본): 변경한 복사본 반환
- True : 원본을 변경
- 결측치는 방식과 상관없이 마지막에 나온다.
기술통계 메소드들을 이용한 데이터 집계
주요 기술통계 메소드
함수 | 설명 |
---|
sum() | 합계 |
mean() | 평균 |
median() | 중위수 |
mode() | 최빈값 |
quantile() | 분위수 |
std() | 표준편차 |
var() | 분산 |
count() | 결측치를 제외한 원소 개수 |
min() | 최소값 |
max() | 최대값 |
idxmax() | 최대값 index |
idxmin() | 최소값 index |
unique() | 고유값 |
nunique() | 고유값의 개수 |
cf) value_counts()는 Series에만 사용할 수 있다.
- DataFrame에 위의 기술 통계 메소드들을 적용할 경우 컬럼별로 계산한다.
- sum(), mode(), max(), min(), unique(), nunique(), count()는 문자열에 적용가능하다.
- idxmax(), idxmin() 는 문자열 컬럼에 사용할 수 없다. (문자열의 경우 넘파이의 argmax(), argmin() 함수를 사용한다.)
- 공통 매개변수
- skipna=True(기본값)
- 결측치(NA)를 포함해서 계산할지 여부 설정.
- True가 기본값으로 결측치(NA)를 제외하고 처리한다.
- 결측치 제외하지 않으려면 skipna=False로 설정하는데 결측치가 있으면 결과는 결측치가 된다.
- axis
- DataFrame에 적용할 때 계산방향을 설정
- 0 또는 'index' (기본값): 컬럼 방향으로 집계
- 1 또는 'columns': 행 방향으로 집계
aggregate(func, axis=0, *args, **kwargs) 또는 agg(func, axis=0, *args, **kwargs)
- DataFrame, Series의 메소드로 집계결과를 다양한 형태로 묶어서 볼 때 사용한다.
- 사용자 정의 집계메소드를 사용할 때도 편리하다.
- 매개변수
- func
- 집계 함수 지정
- 함수명/함수리스트 (문자열)
- 판다스 제공 집계메소드들은 문자열로, 사용자정의 집계함수는 함수 객체로 전달
- Dictionary : {'집계할컬럼' : 집계함수, ... }
- axis
- DataFrame에 적용할 때 0 방향으로 계산할 지 1 방향으로 계산할지 설정
- 0 또는 'index' (기본값): 컬럼 방향으로 집계
- 1 또는 'columns': 행 방향으로 집계
- *args, **kwargs
- 함수에 전달할 매개변수.
- 집계함수는 첫번째 매개변수로 Series를 받는다. 그 이외의 매개변수가 있는 경우.
ex) aggregate 사용
# 판다스가 제공하는 집계 메소드(함수)를 사용할 경우 함수명을 문자열로 지정
flight["ARR_DELAY"].aggregate(["min", "max"])
flight['ARR_DELAY'].aggregate(['mean', 'std'])
Groupby
- 특정 열을 기준으로 같은 값을 가지는 행끼리 묶어서 group화 한다.
- ~~ 별 집계를 할 때 사용한다. (성별, 직급별, 등급별 ...)
- Group으로 묶을 기준 열은 범주형타입(category)을 사용한다.
- 구문
DF.groupby('그룹으로묶을기준컬럼')
- DataFrameGroupby 객체를 반환한다.
- DataFrameGroupby 객체는 어떤 행끼리 묶여있는지 정보를 가진다. 이 객체의 집계함수를 사용하면 그룹별 집계를 할 수 있다.
DataFrameGroupby객체['집계할 컬럼'].집계함수()
- groupby에 여러개의 컬럼을 기준으로 나눌 경우 리스트에 묶어서 전달한다.
- 집계할 컬럼이 여러개인 경우 리스트로 묶어준다.
- 집계함수
- 기술통계 함수들
- agg()/aggregate()
- 여러 다른 집계함수 호출시(여러 집계를 같이 볼경우)
- 사용자정의 집계함수 호출시
- 컬럼별로 다른 집계함수들을 호출할 경우
Group 별 집계결과에서 특정 조건의 항목만 조회
- Groupby 집계 후 boolean indexing 처리한다.
사용자 정의 집계함수를 만들어 적용
사용자 정의 집계 함수 정의
- 매개변수
- Series 또는 DataFrame을 받을 매개변수(필수)
- 필요한 값을 받을 매개변수를 선언한다. (선택)
agg() 를 사용해 사용자 정의 집계 함수 호출
- DataFrame.agg(func=None, axis=0, *args, **kwargs)
- axis : 사용자 정의 함수에 전달할 값들(Series)의 축 지정
- Series.agg(func=None, axis=0, *args, **kwargs)
- DataFrame의 agg와 매개변수 구조를 맞추기 위해 axis 지정한다. (kwargs를 이용해 매개변수 전달할 경우 axis는 생략해도 된다. - axis기본값 0을 그냥 쓰면 되므로. - keyword 인자 뒤에 position 인자는 안되서 *args로 값 전달시에는 axis를 지정해야 한다.)
- DataFrameGroupBy.agg(func, *args, **kwargs) :
- axis 지정안함.
- 사용자 함수에 Series를 group 별로 전달한다.
- SeriesGroupBy.agg(func=None, *args, **kwargs)
- axis 지정안함
- 사용자 함수에 Series를 group 별로 전달한다.
- *args, **kwargs는 사용자 정의 함수에 선언한 매개변수가 있을 경우 전달할 값을 전달한다.
- 키워드 인자를 이용해 가변인자로 전달하는 것이 편하다.