본문 바로가기

Pandas/응용

판다스 - apply, applymap, pipe(2)

반응형

 

INPUT USE RETURN
시리즈 원소 apply 단일 값, 시리즈
시리즈 객체 (데이터프레임의 행 or 열) 단일 값, 시리즈, 데이터프레임(통합)
데이터프레임의 원소 applymap (동일한 형태의) 데이터프레임
데이터프레임 객체 pipe 단일 값, 시리즈, 데이터프레임

 

applymap과 pipe를 살펴보자

 

 

 

 

데이터 불러오기

 

 

데이터프레임의 개별 원소에 특정 함수를 매핑할때 applymap을 이용한다.

 

데이터프레임을 반환한다.

 

* 참고 : 시리즈는 각 원소에 적용할 함수를 지정하기 위한 map 메서드를 가지고 있다.

 

 

 

 

 

함수 정의

 

인수 n을 받아 숫자 10을 더한 결과를 리턴하는 함수

 

 

 

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 사용도 고려해볼만 하다.

 

 

반응형