import numpy as np
import pandas as pd
def squares(x):
return x ** 2
def doubles(x):
return x * 2
result1, result2 = squares(3), doubles(3)
print(result1, result2)
9 6
array = np.array([1, 2, 3])
result1 = squares(array) # np.array ** 2
result2 = doubles(array) # np.array * 2
print(result1, result2)
[1 4 9] [2 4 6]
df = pd.DataFrame({
'a': [1, 2, 3],
'b': [4, 5, 6]
})
print(df)
print(squares(df))
a b
0 1 4
1 2 5
2 3 6
a b
0 1 16
1 4 25
2 9 36
일반 리스트의 경우
result = [[1, 2, 3], [4, 5, 6]]
print(squares(result))
TypeError: unsupported operand type(s) for ** or pow(): 'list' and 'int'
result = [[1, 2, 3], [4, 5, 6]]
print(doubles(result))
[[1, 2, 3], [4, 5, 6], [1, 2, 3], [4, 5, 6]]
axis = 0: column(열) 을 함수의 파라미터에 전달한다.
result = df.apply(np.sum, axis = 0)
print(result)
a 6
b 15
axis = 1 : row(행) 을 함수의 파라미터에 전달한다.
result = df.apply(squares, axis=1) # 데이터프레임을 함수의 파라미터로 넣는 함수 apply
print(result)
a b
0 1 16
1 4 25
2 9 36
# 함수의 리턴값을 돌려받음
# agg(aggregate) 함수는 집계 함수들만 사용 가능
# apply는 DataFrame과 GroupBy 객체 모두에서 사용 가능
emp = pd.read_csv('emp_df.csv')
print(emp.agg(np.mean)) # 집계 함수는 숫자 타입의 컬럼만 자동으로 선택
# emp.apply(np.mean)
# apply 함수는 모든 컬럼 또는 행을 함수의 파라미터에 전달하기 때문에,
# 집계 함수(mean, sum, ...)가 제대로 동작하지 않을 수도 있음.
EMPNO 7726.571429
MGR 7739.307692
SAL 2073.214286
COMM 550.000000
DEPTNO 22.142857
dtype: float64