numpy array는 matrix와 vector간의 broadcasting 연산을 지원한다.
그렇다면, numpy를 기반으로 하는 pandas에서는 DataFrame과 Series 간의 연산을 어떻게 수행할 수 있을까?
df = pd.DataFrame(np.arange(16).reshape(4,4), columns = list("abcd"))
print(df)
# 출력:
# a b c d
# 0 0 1 2 3
# 1 4 5 6 7
# 2 8 9 10 11
# 3 12 13 14 15
s = pd.Series(np.arange(10, 14))
print(s)
# 출력:
# 0 10
# 1 11
# 2 12
# 3 13
# dtype: int64
print(df + s) # 정상적으로 덧셈이 되지 않음
# 출력:
# a b c d 0 1 2 3
# 0 NaN NaN NaN NaN NaN NaN NaN NaN
# 1 NaN NaN NaN NaN NaN NaN NaN NaN
# 2 NaN NaN NaN NaN NaN NaN NaN NaN
# 3 NaN NaN NaN NaN NaN NaN NaN NaN
+ 연산자를 사용하면 정상적인 방식으로 덧셈이 수행되지 않는다.
# series가 row broadcasting되어 덧셈 실행
print(df.add(s, axis = 0))
# 출력:
# a b c d
# 0 10 11 12 13
# 1 15 16 17 18
# 2 20 21 22 23
# 3 25 26 27 28
add 함수를 사용해야 Series가 row broadcasting이 일어나면서 정상적으로 덧셈이 수행된다.
print(df * s)
# 출력:
# a b c d 0 1 2 3
# 0 NaN NaN NaN NaN NaN NaN NaN NaN
# 1 NaN NaN NaN NaN NaN NaN NaN NaN
# 2 NaN NaN NaN NaN NaN NaN NaN NaN
# 3 NaN NaN NaN NaN NaN NaN NaN NaN
print(df.multiply(s, axis = 0))
# 출력:
# a b c d
# 0 0 10 20 30
# 1 44 55 66 77
# 2 96 108 120 132
# 3 156 169 182 195
마찬가지로 multiply 함수를 사용하면 정상적으로 곱셈이 수행된다.
'AI > Pandas' 카테고리의 다른 글
[Pandas] DataFrame 출력할 때 보여지는 데이터 개수 늘리는 방법 (0) | 2023.03.09 |
---|---|
[Pandas] apply 함수와 applymap 함수 (0) | 2023.03.09 |
[Pandas] map 함수 VS replace 함수 (0) | 2023.03.09 |
[Pandas] DataFrame (0) | 2023.03.09 |
[Pandas] Series (0) | 2023.03.09 |