[Python.Pandas] DataFrame.apply, DataFrame.applymap
2020. 12. 21. 05:00ㆍPython과 머신러닝/Pandas 데이터 분석
0. 이전 포스트
- 2020/12/19 - [Python과 머신러닝/Pandas 데이터 분석] - [Python.Pandas] Lambda함수와 Map함수 이해하기 - Series.map
- 2020/12/20 - [Python과 머신러닝/Pandas 데이터 분석] - [Python.Pandas] Map 함수 실전편 + .replace함수 사용하기
1. DataFrame.Apply - 하나의 Series가 아닌 전체 DataFrame에 함수를 적용하고 싶을 때
In [1]:from pandas import Series, DataFrame
import pandas as pd
import numpy as np
In [2]:df = pd.read_csv("wages.csv")
df.head()
Out[2]:
earn height sex race ed age
0 79571.299011 73.89 male white 16 49
1 96396.988643 66.23 female white 16 62
2 48710.666947 63.77 female white 16 33
3 80478.096153 63.22 female other 16 95
4 82089.345498 63.08 female white 17 43
In [3]:df_info=df[['earn', 'height', 'age']]
df_info.head()
Out[3]:
earn height age
0 79571.299011 73.89 49
1 96396.988643 66.23 62
2 48710.666947 63.77 33
3 80478.096153 63.22 95
4 82089.345498 63.08 43
In [4]:f1=lambda x:np.mean(x)
In [5]:df_info.apply(f1)
Out[5]:earn 32446.292622
height 66.592640
age 45.328499
dtype: float64
- 지난 포스트에서 각 Series 별로 함수를 적용하는 방법과, 그 함수를 람다 함수로 정의하는 방법을 정리했다
2020/12/20 - [Python과 머신러닝/Pandas 데이터 분석] - [Python.Pandas] Map 함수 실전편 + .replace함수 사용하기
2020/12/19 - [Python과 머신러닝/Pandas 데이터 분석] - [Python.Pandas] Lambda함수와 Map함수 이해하기 - Series.map - 이번 포스트의 .apply 함수는 한 Series가 아닌 DataFrame에 존재하는 모든 Series에 각각 함수를 적용하고 싶을 때 사용하는 함수이다.
- 위 예시에서는 df_info라는 부분 DataFrame을 만들고 (수입, 키, 나이 정보만 추출),
- .apply 함수를 통해 각 정보의 평균을 추출하였다.
2. .apply를 통해서 여러 함수 적용하기
In [6]:def f2(x):
return Series([x.min(), x.max(), x.mean(), sum(x.isnull())],
index=['min', 'max', 'mean', 'null'])
In [7]:df_info.apply(f2)
Out[7]:
earn height age
min -98.580489 57.34000 22.000000
max 317949.127955 77.21000 95.000000
mean 32446.292622 66.59264 45.328499
null 0.000000 0.00000 0.000000
- 한 번에 여러 가지 데이터를 보고 싶다면 어떻게 할까?
- 개별로 함수를 정의하고 apply로 따로 볼 수도 있지만, 위와 같이 여러 함수를 하나의 series로 반환하도록 본 함수를 정의한다면 (f2), 한 번의 apply를 통해 여러 통계 데이터를 볼 수 있다.
- 한 번 이렇게 함수를 정의하면 DataFrame이 변경되어도 재사용할 수 있는 장점이 있다.
3. .applymap - Series별 통계 함수가 아닌 element-wise operatio을 위한 함수
In [8]:f3=lambda x:x//2
In [9]:df_info.applymap(f3).head()
Out[9]:
earn height age
0 39785.0 36.0 24
1 48198.0 33.0 31
2 24355.0 31.0 16
3 40239.0 31.0 47
4 41044.0 31.0 21
- .apply는 DataFrame에서 각 Series에 대해 함수를 적용하였다.
- 그래서 키/나이/수입 등의 정보에 대한 평균 정보를 추출한 것이었다.
- 그에 비해 .applymap 함수는, 해당 함수의 동작을 Element 별로 전부 적용하게 된다.
- 그래서 통계 데이터가 나온다기 보다는, 각각의 값을 변경할 수 있게 된다.
- Series 별로 평균, 표준편차를 구할 때는 .apply함수를 사용하고, 각 element 별로 표준화를 수행할 때는 .applymap을 통해서 DataFrame의 전체 데이터를 한 번에 변경할 수 있다.
4. 관련 포스트
'Python과 머신러닝 > Pandas 데이터 분석' 카테고리의 다른 글
[Python.Pandas] Groupby 함수 이해하기 - 1편 (0) | 2020.12.23 |
---|---|
[Python.Pandas] Built-in Function 이해하기 - .describe() (0) | 2020.12.22 |
[Python.Pandas] Map 함수 실전편 + .replace함수 사용하기 (0) | 2020.12.20 |
[Python.Pandas] Lambda함수와 Map함수 이해하기 - Series.map (0) | 2020.12.19 |
[Python.Pandas] Selection과 Drop (0) | 2020.12.18 |