INPUT | USE | RETURN |
시리즈 원소 | apply | 단일 값, 시리즈 |
시리즈 객체 (데이터프레임의 행 or 열) | 단일 값, 시리즈, 데이터프레임(통합) | |
데이터프레임의 원소 | applymap | (동일한 형태의)데이터프레임 |
데이터프레임 객체 | pipe | 단일 값, 시리즈, 데이터프레임 |
데이터 불러오기
데이터 살펴보기
총 891행, 15열
컬럼의 자료형도 확인할 수 있다.
함수 정의
count_missing 함수는 데이터프레임의 컬럼별 null의 개수를 구한다.
우선 결과부터 보자
잘 나온 것을 볼 수 있다.
시리즈로 리턴이 되었으니, applymap은 이용할 수 없다.
그렇다면 pipe를 이용해도 될까?
pipe를 이용해도 동일한 결과가 나왔다.(?)
이제 하나하나 뜯어서 보자.
apply
bool_df가 구해지는 것을 하나의 컬럼씩 떼어서 보았다.
(하나의 컬럼 = 시리즈 = 벡터 => 파라미터를 vec로)
survived 컬럼의 null 확인을 위해 bool_df_s라는 변수로 만들었고
결과는 T/F의 시리즈가 나왔다.
bool_df_s의 값들의 합을 구하기 위해 np.sum을 이용했고
모두 더하면 0이 된다.
즉 null이 없다는 것이다.(모두 False)
이렇게 한 컬럼씩 함수를 적용하는 것이 apply이며
단일 값들을 모아 하나의 시리즈로 리턴하게 된다.
이제 pipe를 보자
pipe는 데이터프레임 객체를 받기 때문에 count_missing(d_frame)으로 바꿔줬다.
또한 pipe는 각 시리즈별로 isnull()을 보지 않고
df전체를 한꺼번에 보기에
bool_df를 한번에 isnull() 메서드로 적용했다.
np.sum과 axis=0(디폴트)를 이용하면 각 컬럼별 합을 구할 수 있다.
즉, 이는 pipe과 관련없이,
sum을 했기 때문에 각 컬럼별로 합이 구해진 것이다.
따라서 apply를 쓰든 pipe를 쓰든 결과는 동일하게 된다.
그렇다면 매번 결과가 같을까?
아니다. 아니다의 근거는 다음 포스팅에서 설명!
'Pandas > 응용' 카테고리의 다른 글
판다스 - apply, applymap, pipe(응용3) (0) | 2020.06.22 |
---|---|
판다스 - apply, applymap, pipe(응용2) (0) | 2020.06.21 |
판다스 - apply, applymap, pipe(2) (0) | 2020.06.20 |
판다스 - apply, applymap, pipe(1) (2) | 2020.06.20 |
판다스 - 여러 대용량 데이터 처리하기 : glob (0) | 2020.06.20 |