在使用pandas的時候最常使用到的就是索引(index),常常需要在資料表裡找出需要的資料,這時候就需要索引來幫助我們找出我們所需要的資料,在看完文檔後,整理了一下索引的使用方法
可使用的資料類型:Series,DataFrame,Panel
基本的索引:
我們使用[ ]來進行索引,就像下面這樣,左圖為我們建立的資料表,右圖為選取A欄位的結果
或者可以一次傳入多個欄位
還有另外一種方法可以對資料進行索引,利用屬性 . 來進行索引,比如說像下面這樣:
但是這種方法限制比較多所以還是用 [ ] 進行索引會比較好,限制如下:
1.索引名稱必須是valid identifier
2.索引名稱不能和python中存在的函數名稱一樣,例:df.min
3.索引名稱不能是index,major_axis,minor_axis,items,labels
上面用 [ ] 和 . 進行索引的方式是比較直覺的方法,但是常常我們並不事先知道資料的類型,運算上會有一些最佳化的限制,所以pandas提供了下面兩種方法:
1.使用.loc[]
這個方法會使用標籤(label)去尋找資料,總共有五種類型的標籤可輸入
(1)單一標籤,例如:’a’,’b’…..
(2)一個清單(list)或者陣列(array),例如:[“a”,”b”,”c”]
(3)切片標籤(slice object with labels),例如:”a”:”f”(兩側皆有包含)
(4)布林值陣列(boolean array)
(5)可調用函數(callable function)
何時會發生Error:當輸入的標籤找不到資料的時候,會出現KeyError
以下介紹幾個例子來讓大家看看
使用單一標籤
使用一個陣列去索引
使用切片標籤
使用布林值陣列
使用可調用函數
當使用loc的切片索引的時候會將切片範圍中的切片包含進來,若索引排序過後,即使切片範圍的兩邊都沒有在資料裡,還是會把範圍內的資料選取出來,反之若沒排序,就會發生KeyError,舉個例子給大家看看
將Series排序後在選取
2.使用.iloc[]
這個方法會使用整數值去尋找資料,也和.loc一樣有上面這五種類型可以輸入
何時會發生Error:當輸入的整數索引超過資料的索引的時候,會出現IndexError(除了切片索引之外),但是使用.loc時若超過並不會發生Error會把輸入範圍內包含的資料找出來
以下幾個例子給大家看看:
單一整數索引
使用一個陣列去索引
切片索引
布林值陣列
注意:在使用loc和iloc時要注意一件事,pandas會先進行行對齊(column alignment)才會將值進行轉換,什麼意思呢?看下面的例子
本來選取A和B行的值是這樣
如果你想要將這兩行的值互換,按照下面這樣做這樣,pandas會先A行和A行對齊,B行和B行對齊,因此並不會改變A行和B行的值
如果想要將A行和B行的值互換那就必須指定互換的是A行和B行的值,不然pandas會先進行行對齊,值就不會互換
那以上就是關於Pandas索引方法的介紹,如果有什麼問題大家可以在下方留言,我會盡力回答大家!!!如果喜歡我的文章,可以幫我拍拍手哦~~~