series的索引

引言:
sereis有兩套索引模式:
1). 標籤索引:像dictionary一樣通過non-numeric 的index(類似於字典的key)索引
2). 位置索引:像list一樣根據position切片(像numpy中的數組一樣沿着固定的軸)
兩套索引模式其實是很容易讓人迷惑,pandas官方文檔建議通過.loc.iloc屬性來索引對象。
注意⚠️:
如果index設定爲數字,那麼位置的索引就失效了

1. ilocloc

1.1 位置索引 iloc(i - index position)

  • 直接以‘位置數字’索引
    eg: george.iloc[0](george.iloc[4] 當超出index範圍時會報錯)
  • 直接以'區間'切片
    eg:george.iloc[0:3]
  • 使用'標籤列表'切片
    eg:george.iloc[[0,1]]


1.2 標籤索引的 loc (l- lable)

類似於python中的字典,但是功能更豐富,可以接受布爾矩陣 boolean arrays, 切片slices,和標籤列表a list of lables.

  • 類似於字典的索引
    eg: george.loc['1968']
  • 使用標籤列表索引
    eg: george.loc[['1968','1979']] (如果標籤不存在,會輸出NaN)
  • 使用標籤切片
    eg: george.loc['1968':]

2. .at.iat

與剛剛提到的.loc.iloc功能相似
但是我們認爲loc系列更好用,這裏提一個注意點:
當檢索時,存在duplicate index對應不同的值時,at輸出的是數組,而loc輸出的是series

3. ix的使用

(類似於[] indexing)#不建議使用

.ix這個方法,功能很強大,既可以支持位置檢索,又可以通過lable檢索,簡直是 ilocloc的合體。因此,當index比較混亂(index positon + lable)時可以使用它。
適用於 pivot tables 和 stacking(說實話,這句話是照搬書上的內容,�我不太懂這兩個是什麼東西,懂的夥伴給我留言
pandas認爲,‘explicit is better than implicit’

這裏是教材的總結截圖(沒辦法自己太懶了)


4.多聊聊切片[]

切片可以應用在ilocloc,以[起始,終止,步長]的形式使用,通常可以獲得一個新的series

以下內容也是與切片[]相關的

series的廣播運算與切片

series 類似於numpy中的數組,是可以做廣播運算的

舉例:
mask = george > 7 (獲得一個布爾值組成的新series-- mask,它的index與george對應,而且該運算並不影響george的原值)
george + 2 等數值運算

series的布爾組合運算與切片

除此之外,多個布爾運算還可以合併在一起


不過需要注意的是⚠️:多個布爾運算合併時,邏輯關係要清晰,例如george[mask | george<=2] |<=區分不出優先級,從而造成了錯誤輸出

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章