함수 적용과 매핑
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 |