INPUT | USE | RETURN |
시리즈 원소 | apply | 단일 값, 시리즈 |
시리즈 객체 (데이터프레임의 행 or 열) | 단일 값, 시리즈, 데이터프레임(통합) | |
데이터프레임의 원소 | applymap | (동일한 형태의) 데이터프레임 |
데이터프레임 객체 | pipe | 단일 값, 시리즈, 데이터프레임 |
applymap과 pipe를 살펴보자
데이터 불러오기
데이터프레임의 개별 원소에 특정 함수를 매핑할때 applymap을 이용한다.
데이터프레임을 반환한다.
* 참고 : 시리즈는 각 원소에 적용할 함수를 지정하기 위한 map 메서드를 가지고 있다.
함수 정의
applymap을 이용해 함수 적용
df의 각 원소에 숫자 10을 더한 값을 원소로 갖는 데이터프레임이 만들어진다.
여기서 apply와의 차이점이 궁금해지는데,
apply는 각 컬럼별(axis=0) 시리즈 객체에 10씩 더하고
그 시리즈들(3개 컬럼)을 통합해 데이터프레임으로 만들어내는 것이다.
(apply를 이용한 결과)
pipe
pipe 메서드는 데이터프레임 '객체'에 함수를 매핑한다.
applymap과의 차이는 반환하는 결과가 pipe가 더 다양하다는 것이다.
applymap은 데이터프레임 원소에 적용하므로 데이터프레임으로만 리턴되지만
pipe는 사용자 함수의 리턴값에 따라 개별 값, 시리즈, 데이터프레임을 반환할 수 있다.
사용자 함수 지정 후 pipe 적용
(1) 데이터프레임 반환
missing_value 함수는 데이터프레임을 입력받으면 isnull() 메서드를 이용하여
데이터프레임의 각 원소에서 누락 데이터 여부를 T/F로 표현하고 데이터프레임을 반환한다.
(2) 시리즈 반환
missing_count 함수는 데이터프레임을 입력받으면
각 열의 누락 데이터 개수를 시리즈 형태로 리턴한다.
누락된 값이 하나도 없어 모두 False이기에 합한 값은 0만 나오게 된다.
(3) 값 반환
count_sum 함수는 데이터프레임을 입력받으면
각 열의 누락 데이터의 개수를 합산하여 단일 값으로 반환한다.
age 0
fare 0
ten 0
위 시리즈 값의 합을 구한 것이다.
현재 가장 많이 쓰이는 메서드는 apply인데 그 이유는
다양한 형태로 값을 입력 받을 수 있고, 반환하는 형태도 폭이 넓기 때문이다.
결과는 같아보이지만, 시리즈를 이용해 데이터프레임의 행과 열도 이용할 수 있으며
시리즈 그 자체도 함수로 활용할 수 있다.
만약 데이터프레임에 함수를 적용해야한다면 리턴하는 형태가 많은 pipe 사용도 고려해볼만 하다.
'Pandas > 응용' 카테고리의 다른 글
판다스 - apply, applymap, pipe(응용2) (0) | 2020.06.21 |
---|---|
판다스 - apply, applymap, pipe(응용1) (0) | 2020.06.21 |
판다스 - apply, applymap, pipe(1) (2) | 2020.06.20 |
판다스 - 여러 대용량 데이터 처리하기 : glob (0) | 2020.06.20 |
판다스 - 인덱스로 데이터프레임 병합 : merge, join (0) | 2020.06.20 |