본문 바로가기

Pandas/응용

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

반응형

 

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

 

판다스를 하면서 헷갈리는 메서드 중 하나가 apply라고 해도 과언이 아니다.

 

예제를 통해 이해해보자

 

 

 

 

데이터 불러오기

 

타이타닉의 데이터를 잘라 가져와봤다.

 

타이타닉 데이터에 ten이라는 컬럼을 추가하고 값을 10으로 모두 맞춰놓았다.

 

 

 

함수 생성

 

개별 원소에 함수 적용 (시리즈 원소에 함수 적용) : apply

 

 

df['age'] 시리즈에 두개의 함수를 적용해보았다.

 

add_10 함수를 적용하면 기존 시리즈의 값(원소)에 10씩 더한 새로운 시리즈를 반환한다.

 

 

add_two_obj 함수를 이용해 100씩 더한 것도 마찬가지로

 

기존 시리즈 원소 값에 100씩 더한 새로운 시리즈를 반환한다.

 

 

 

 

 

 

 

 

시리즈 객체에 함수 적용 (데이터프레임의 각 '') : apply

 

매핑할 함수 조건 : 시리즈를 입력받고 '시리즈'를 반환

 

함수 생성

 

시리즈에 null이 있는지 True/False를 반환한다.

 

 

위 함수를 데이터프레임에 매핑해보자

 

 

axis=0이므로 각 열에 적용

 

각 열 별로 함수를 적용한다음 세 열을 합쳐 데이터프레임으로 반환한 것이다.

 

 

1. age열 함수 적용 - 시리즈 반환

 

2. fare열 함수 적용 - 시리즈 반환

 

3. ten열 함수 적용 - 시리즈 반환

 

4. 3개의 시리즈를 연결해 '데이터프레임'으로 통합

 

 

 

 

 

시리즈 객체에 함수 적용 (데이터프레임의 각 '') : apply

 

매핑할 함수 조건 : 시리즈를 입력받고 ''을 반환

 

함수 생성

 

시리즈의 최대값에서 최소값을 빼는 함수
axis=0은 기본값이므로 생략 가능

 

1. age열 함수 적용 - 값 반환 (16)

 

2. fare열 함수 적용 - 값 반환 (64.)

 

3. ten열 함수 적용 - 값 반환 (0)

 

4. 이들 값을 하나의 '시리즈'로 통합

 

 

 

 

시리즈 객체에 함수 적용 (데이터프레임의 각 행) : apply

 

lambda함수 이용

 

axis=1, 행

 

새로운 열은(added) 각 인덱스별로

 

age컬럼의 값과 ten컬럼의 값을 더한 것이다.

 

0번 행은 22.0 + 10 = 32.0이 된 것이다.

 

 

 

applymap과 pipe는 다음 포스팅으로 연결!

 

https://steadiness-193.tistory.com/29

 

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

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

steadiness-193.tistory.com

 

반응형