INPUT | USE | RETURN |
시리즈 원소 | apply | 단일 값, 시리즈 |
시리즈 객체 (데이터프레임의 행 or 열) | 단일 값, 시리즈, 데이터프레임 (통합) | |
데이터프레임의 원소 | applymap | (동일한 형태의) 데이터프레임 |
데이터프레임 객체 | pipe | 단일 값, 시리즈, 데이터프레임 |
판다스를 하면서 헷갈리는 메서드 중 하나가 apply라고 해도 과언이 아니다.
예제를 통해 이해해보자
데이터 불러오기
타이타닉 데이터에 ten이라는 컬럼을 추가하고 값을 10으로 모두 맞춰놓았다.
함수 생성
개별 원소에 함수 적용 (시리즈 원소에 함수 적용) : apply
df['age'] 시리즈에 두개의 함수를 적용해보았다.
add_10 함수를 적용하면 기존 시리즈의 값(원소)에 10씩 더한 새로운 시리즈를 반환한다.
add_two_obj 함수를 이용해 100씩 더한 것도 마찬가지로
기존 시리즈 원소 값에 100씩 더한 새로운 시리즈를 반환한다.
시리즈 객체에 함수 적용 (데이터프레임의 각 '열') : apply
매핑할 함수 조건 : 시리즈를 입력받고 '시리즈'를 반환
함수 생성
위 함수를 데이터프레임에 매핑해보자
각 열 별로 함수를 적용한다음 세 열을 합쳐 데이터프레임으로 반환한 것이다.
1. age열 함수 적용 - 시리즈 반환
2. fare열 함수 적용 - 시리즈 반환
3. ten열 함수 적용 - 시리즈 반환
4. 3개의 시리즈를 연결해 '데이터프레임'으로 통합
시리즈 객체에 함수 적용 (데이터프레임의 각 '열') : apply
매핑할 함수 조건 : 시리즈를 입력받고 '값'을 반환
함수 생성
1. age열 함수 적용 - 값 반환 (16)
2. fare열 함수 적용 - 값 반환 (64.)
3. ten열 함수 적용 - 값 반환 (0)
4. 이들 값을 하나의 '시리즈'로 통합
시리즈 객체에 함수 적용 (데이터프레임의 각 행) : apply
lambda함수 이용
새로운 열은(added) 각 인덱스별로
age컬럼의 값과 ten컬럼의 값을 더한 것이다.
0번 행은 22.0 + 10 = 32.0이 된 것이다.
applymap과 pipe는 다음 포스팅으로 연결!
https://steadiness-193.tistory.com/29
'Pandas > 응용' 카테고리의 다른 글
판다스 - apply, applymap, pipe(응용1) (0) | 2020.06.21 |
---|---|
판다스 - apply, applymap, pipe(2) (0) | 2020.06.20 |
판다스 - 여러 대용량 데이터 처리하기 : glob (0) | 2020.06.20 |
판다스 - 인덱스로 데이터프레임 병합 : merge, join (0) | 2020.06.20 |
판다스 - merge (0) | 2020.06.20 |