在上一篇文章中已經介紹了Series的基礎,在這邊要介紹Series的計算方法以及如何取值。這在之後學習Dataframe上很重要,因為在使用Dataframe時常常會用到Series的計算。
數值運算
對Pandas的Series可以直接用數值進行四則運算。可以看到下面的例子。
import pandas as pd
s = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
print(s+10)
print(s-10)
print(s*3)
print(s/2)
上面的代碼分別對Series的值做了加減乘除,輸出之後會看到下面的結果。
a 11
b 12
c 13
d 14
e 15
dtype: int64
a -9
b -8
c -7
d -6
e -5
dtype: int64
a 3
b 6
c 9
d 12
e 15
dtype: int64
a 0.5
b 1.0
c 1.5
d 2.0
e 2.5
dtype: float64
Series與Series計算
Series同樣也可以與Series做四則運算,但要注意的是index名稱是否相同。我們先來看當index名稱相同時的運算結果。
import pandas as pd
s1 = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
s2 = pd.Series([6, 7, 8, 9, 10], index=['a', 'b', 'c', 'd', 'e'])
print(s1+s2)
print(s1-s2)
print(s1*s2)
print(s1/s2)
a 7
b 9
c 11
d 13
e 15
dtype: int64
a -5
b -5
c -5
d -5
e -5
dtype: int64
a 6
b 14
c 24
d 36
e 50
dtype: int64
a 0.166667
b 0.285714
c 0.375000
d 0.444444
e 0.500000
dtype: float64
接著我們再來看看當index名稱不同時會發生什麼變化。
import pandas as pd
s1 = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
s2 = pd.Series([6, 7, 8, 9, 10], index=['c', 'd', 'e', 'f', 'g'])
print(s1+s2)
print(s1-s2)
print(s1*s2)
print(s1/s2)
a NaN
b NaN
c 9.0
d 11.0
e 13.0
f NaN
g NaN
dtype: float64
a NaN
b NaN
c -3.0
d -3.0
e -3.0
f NaN
g NaN
dtype: float64
a NaN
b NaN
c 18.0
d 28.0
e 40.0
f NaN
g NaN
dtype: float64
a NaN
b NaN
c 0.500000
d 0.571429
e 0.625000
f NaN
g NaN
dtype: float64
由以上結果我們可以得知當index名稱不同時,只有兩個Series有共同名稱的index值才會被計算,不同名稱的index值會變成NaN。
Sereis的邏輯演算
最後要來介紹的是在Dataframe中很常用到的邏輯演算。我們可以對各個index做邏輯演算,來判斷他的bool是True還是Fasle。
例如:透過下面的代碼我們可以判斷各個index的數值是否比 3還要大。
import pandas as pd
s = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
s>3
a False
b False
c False
d True
e True
dtype: bool
另外,我們也可以使用.index來判斷index名稱。例如:判斷index名稱是否為’c’。
import pandas as pd
s = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
s.index == 'c'
array([False, False, True, False, False])
但是這邊要特別注意,使用.index的輸出結果是numpy的ndarray。
留言