pandas入門 Seriesの演算

pandasのSeriesには独自に演算が定義されています。あまりこのトピックを扱った資料は少ないのですが、この後学ぶDataFrameの操作でも使用するため、今後の理解の支えになると思います。

スカラー演算

Seriesオブジェクトに対し、スカラーの演算をすることができます。

以下、四則演算のサンプルとなります。

s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
# a    1
# b    2
# c    3
# d    4
# dtype: int64

# 足し算
s + 10
# a    11
# b    12
# c    13
# d    14
# dtype: int64

# 引き算
s - 10
# a   -9
# b   -8
# c   -7
# d   -6
# dtype: int64

# 掛け算
s * 1

# a    1
# b    2
# c    3
# d    4
# dtype: int64

# 割り算
s / 2

# a    0.5
# b    1.0
# c    1.5
# d    2.0
# dtype: float64

演算が定義されていないオブジェクトをSeriesに格納している場合は「TypeError: unsupported operand」が発生します。

Series同士の演算

Series同士も同様に演算を行うことができます。まずは足し算のサンプルです。

s1 = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
# a    1
# b    2
# c    3
# d    4
# dtype: int64

s2 = pd.Series([3, 4, 5, 6], index=['a', 'b', 'c', 'd'])
s1 + s2
# a     4
# b     6
# c     8
# d    10
# dtype: int64

index同士をひも付けて演算が行われます。試しにindexをずらしてみましょう。

s1 = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
s2 = pd.Series([3, 4, 5, 6], index=['c', 'd', 'e', 'f'])

s1 + s2
# a    NaN
# b    NaN
# c    6.0
# d    8.0
# e    NaN
# f    NaN
# dtype: float64

演算対象の2つのSeries双方にindex設定されていない場合はNaNとなります。

引き算、掛け算、割り算も同様なので説明は割愛します。

Seriesの論理演算

最後になりましたが、この後のDataFrameの操作を理解する際に非常に重要になります。

Seriesには論理演算が定義されていて、条件に該当するかどうかでindexごとにbool型の値が設定されます。

例えば、「2より大きいかどうか」という論理演算の結果は以下のようになります。

s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
s > 2
# a    False
# b    False
# c     True
# d     True
# dtype: bool

また、indexに対して論理演算をすることも可能です。indexが'c'かどうか、という論理演算の結果は以下のようになります。

s.index == 'c'
# array([False, False,  True, False], dtype=bool)

ただし、この場合の戻り値の型はnumpy.ndarrayとなります。