Series operation

index 기준으로 연산을 수행한다.

겹치는 index가 없으면 NaN으로 반환한다.

import pandas as pd
import numpy as np
from pandas import Series
from pandas import DataFrame

list_data = [1,2,3,4,5]
list_name1 = ["a", "b", "c", "e", "d"]
list_name2 = ["b", "c", "e", "d", "e", "f"]

s1 = Series(data = list_data, index = list_name1)

s2 = Series(range(5,11), index = list_name2)

s1.add(s2)
a     NaN
b     7.0
c     9.0
d    13.0
e    11.0
e    13.0
f     NaN
dtype: float64

s1+s2
a     NaN
b     7.0
c     9.0
d    13.0
e    11.0
e    13.0
f     NaN
dtype: float64

Dataframe operation

df는 column과 index를 모두 고려한다.

import pandas as pd
import numpy as np
from pandas import Series
from pandas import DataFrame

df1 = DataFrame(np.arange(9).reshape(3,3), columns = list("abc"))

df2 = DataFrame(np.arange(16).reshape(4,4), columns = list("abcd"))

df1
   a  b  c
0  0  1  2
1  3  4  5
2  6  7  8

df2
    a   b   c   d
0   0   1   2   3
1   4   5   6   7
2   8   9  10  11
3  12  13  14  15

df1+df2
      a     b     c   d
0   0.0   2.0   4.0 NaN
1   7.0   9.0  11.0 NaN
2  14.0  16.0  18.0 NaN
3   NaN   NaN   NaN NaN

df1.add(df2, fill_value=0)
      a     b     c     d
0   0.0   2.0   4.0   3.0
1   7.0   9.0  11.0   7.0
2  14.0  16.0  18.0  11.0
3  12.0  13.0  14.0  15.0

fill_value=0 : NaN이 생기는 것을 방지한다.

sub, div, mul 등 다양한 연산 제공한다.


시리즈 데이터와 데이터프레임을 합치면 브로드캐스팅이 발생한다.

import pandas as pd
import numpy as np
from pandas import Series
from pandas import DataFrame

s = Series(np.arange(10,14),index=list("abcd"))

df1 = DataFrame(np.arange(16).reshape(4,4), columns = list("abcd"))

s
a    10
b    11
c    12
d    13
dtype: int32

df1
    a   b   c   d
0   0   1   2   3
1   4   5   6   7
2   8   9  10  11
3  12  13  14  15

df1+s
    a   b   c   d
0  10  12  14  16
1  14  16  18  20
2  18  20  22  24
3  22  24  26  28

axis를 지정하면 row를 기준으로 브로드캐스팅이 되기도 한다.