파이썬 버전 3.8 기준
pandas 버전 1.1.1 기준
요소별 함수의 적용 applymap(), map() 메서드 |
pandas의 객체에 다른 라이브러리의 함수를 적용하는 방법이 존재한다.
아래의 메서드는 다른 라이브러리의 함수를 적용하는데 사용되는 메서드들이다.
○ 테이블형태로 정리해주는 함수 어플리케이션: pipe()
○ 행 혹은 열로 정리해주는 함수 어플리케이션: apply()
○ 집합 API: agg(), transform()
○ 요소별 적용 함수: applymap()
본 포스팅에서는 applymap(), map() 메서드의 사용법에 대해 다루도록 한다.
applymap(), map() 메서드 |
applymap(), map() 메서드는 요소별로 함수를 적용하는 메서드이다.
○ applymap() 메서드는 DataFrame에 적용되는 메서드이다.
○ map() 메서드는 Series에 적용되는 메서드이다.
아래 형식은 메서드 사용 형식을 보여준다.
메서드 사용 형식)
result=DataFrame.applymap(func)
result=Series.map(arg)
각 입력 객체별 설명은 다음과 같다.
○ func: 이 입력변수는 pandas 객체에 적용할 함수를 입력받는다.
○ arg: 이 입력변수는 pandas 객체에 적용할 함수나 맵핑시킬 딕셔너리와 같은 자료형을 입력받는다.
applymap(), map() 메서드 사용 예제 |
예제를 수행하기 위해 다음과 같이 모듈 import와 DataFrame을 정의한다.
모듈의 import 및 예제용 DataFrame의 정의)
# pandas와 numpy의 import
In[2]: import pandas as pd
In[3]: import numpy as np
# 예제용 DataFrame의 정의
In[4]: sample_df= pd.DataFrame([[9.1, 1.2, 1.3, 1.4], [2.1, 9.2, 9.3, 2.4], [3.1, 3.2, 3.3, 3.4]], index=['a', 'b', 'c'], columns=['A','B','C','D'])
In[5]: sample_df
Out[5]:
A B C D
a 9.1 1.2 1.3 1.4
b 2.1 9.2 9.3 2.4
c 3.1 3.2 3.3 3.4
아래 예제는 applymap(), map()메서드를 적용하는 예를 보여준다.
DataFrame에 기반을 둔 applymap()메서드와 Series를 기반한 map() 메서드는 Python 함수가 하나의 값을 입력받고 하나의 값을 반환할 수 있도록 한다.
메서드 사용 예제)
# 예제용 함수의 정의
In[6]: def ex_f(x):
...: return np.exp(-x)
...:
# ex1-1: map() 메서드의 사용 예
In[7]: sample_df['A'].map(ex_f)
Out[7]:
a 0.000112
b 0.122456
c 0.045049
Name: A, dtype: float64
# ex1-2: applymap() 메서드의 사용 예
In[8]: sample_df.applymap(ex_f)
Out[8]:
A B C D
a 0.000112 0.301194 0.272532 0.246597
b 0.122456 0.000101 0.000091 0.090718
c 0.045049 0.040762 0.036883 0.033373
Series.map() 메서드는 추가적인 기능을 가진다.
mapping데이터를 통해 새로우 값을 Series로 있도록 한다.
mapping의 사용 예)
# 메서드 적용용 Series의 정의
In[9]: sample_s = pd.Series(['one', 'two', 'three', 'four'], index=['a','b','c','d'])
In[10]: sample_s
Out[10]:
a one
b two
c three
d four
dtype: object
# ex2: map() 메서드의 mapping 사용 예
In[11]: s_map = {'one': 1, 'two': 2, 'three': 3, 'four': 4}
In[12]: sample_s.map(s_map)
Out[212]:
a 1
b 2
c 3
d 4
dtype: int64
applymap(), map() 메서드 세부사항 |
DataFrame.applymap(func) |
DataFrame에 함수를 각 요소별로 적용시킨다.
func: callable
파이썬 함수를 입력받는다.
하나의 값으로부터 하나의 값을 반환한다.
즉, DataFrame내에 하나의 값에 대해 함수를 적용하여 그 값들에 대한 결과를 출력한다.
Series.map(arg, na_action=None) |
Series에 함수를 각 요소별로 적용시키거나, 메핑을 통한 치환을 수행한다.
arg: function, Series, mapping 된 자료형(Dict 등)
함수나 메핑을 통한 치환을 위한 데이터를 입력받는다.
하나의 값으로부터 하나의 값을 반환한다.
즉, DataFrame내에 하나의 값에 대해 함수를 적용하여 그 값들에 대한 결과를 출력한다.
na_action: {None, 'ignore'}
기본값은 None이다.
'ignore'를 입력할 경우, mapping된 데이터가 NaN인 경우 함수적용을 하지 않고 NaN 값을 출력한다.
'Python > Pandas' 카테고리의 다른 글
데이터 요약을 위한 describe() 메서드-pandas(37) (2) | 2020.10.12 |
---|---|
pandas에서의 통계함수(메서드)-pandas(36) (0) | 2020.10.11 |
다중(여러개) 함수 적용 transform() 메서드-pandas(34) (0) | 2020.10.09 |
다수(여러개)의 함수 사용을 위한 agg() 메서드-pandas(33) (0) | 2020.10.08 |
행과 열로의 함수 적용을 위한 apply() 메서드-pandas(32) (0) | 2020.10.07 |
댓글