pandas_function_mapping

함수 적용과 매핑

import pandas as pd
from pandas import Series, DataFrame
import numpy as np
df = DataFrame(np.random.randn(4,3),
              columns=list('bde'),
              index=['seoul', 'busan', 'daegu', 'incheon'])
df

b d e
seoul 1.308334 -1.880615 1.231262
busan -0.595209 -0.737108 -0.358211
daegu -0.780211 0.210827 -1.634598
incheon 0.981662 -0.760076 -2.558003

 

  • numpy.random 모듈에 있는 randn함수는 정규분포 데이터를 생성
  • numpy.abs: 절대값으로 표현
df = np.abs(df)
df

b d e
seoul 1.308334 1.880615 1.231262
busan 0.595209 0.737108 0.358211
daegu 0.780211 0.210827 1.634598
incheon 0.981662 0.760076 2.558003

 

1. 함수의 적용

1) 행에 대해 함수 적용

f = lambda x:x.max() - x.min()
df.apply(f)
b    0.713126
d    1.669789
e    2.199793
dtype: float64

 

2) 열에 대해 함수 적용

df.apply(f, axis=1)
seoul      0.649353
busan      0.378897
daegu      1.423772
incheon    1.797927
dtype: float64

 

3) 함수 생성 후 적용

df

b d e
seoul 1.308334 1.880615 1.231262
busan 0.595209 0.737108 0.358211
daegu 0.780211 0.210827 1.634598
incheon 0.981662 0.760076 2.558003

 

def f(x):
    return Series([x.min(), x.max()], index=['min', 'max'])
df.apply(f)

b d e
min 0.595209 0.210827 0.358211
max 1.308334 1.880615 2.558003

 

2. 매핑

df

b d e
seoul 1.308334 1.880615 1.231262
busan 0.595209 0.737108 0.358211
daegu 0.780211 0.210827 1.634598
incheon 0.981662 0.760076 2.558003

 

format = lambda x: '%.2f' % x

1) DataFrame 객체에 적용: applymap 함수를 이용

  • 실수값을 문자열 포맷으로 변환
df.applymap(format)

b d e
seoul 1.31 1.88 1.23
busan 0.60 0.74 0.36
daegu 0.78 0.21 1.63
incheon 0.98 0.76 2.56

 

2) Series 객체에 적용: map 함수 이용

df['e'].map(format)
seoul      1.23
busan      0.36
daegu      1.63
incheon    2.56
Name: e, dtype: object

 

'AI&BigData > Basics' 카테고리의 다른 글

[Pandas] 기술통계 계산 2  (0) 2018.06.03
[Pandas] 기술통계 계산 1  (0) 2018.06.03
Confusion matrix, accuracy, f1 score, precision, recall  (0) 2018.05.28
[Pandas] 정렬과 순위  (1) 2018.05.06
[Pandas] Operation  (0) 2018.05.06
[Pandas] Index 객체, reindex  (0) 2018.05.06
[Pandas] DataFrame  (0) 2018.04.30
[Pandas] Series 객체  (0) 2018.04.29
[Numpy] 브로드캐스트. 기타활용  (0) 2018.04.24