pandas 學習 第8篇:Index 對象 - (創建、轉換、排序)


Index對象負責管理軸標簽、軸名稱等元數據,是一個不可修改的、有序的、可以索引的ndarry對象。在構建Sereis或DataFrame時,所用到的任何數據或者array-like的標簽,都會轉換為一個Index對象。Index對象是一個從索引到數據值的映射,當數據是一列時,Index是列索引;當數據是一行數據時,Index是行索引。

一,基礎函數

用於創建索引的最基礎的構造函數:

pandas.Index(data,dtype=object,name)

參數注釋:

  • data:類似於一維數組的對象
  • dtype:用於設置索引元素的類型,默認值是object
  • name:索引的名稱,默認值是Index

舉個例子,創建一個整數索引:

>>> pd.Index([1, 2, 3])
Int64Index([1, 2, 3], dtype='int64')

索引是一個ndarray對象,元素的類型相同,每一個Index對象,常用的屬性有:

  • values:索引的值
  • array:以數組形式返回索引元素的值
  • dtype:索引元素的數據類型
  • name:索引的名稱屬性
  • shape:索引的形狀

二,索引的轉換

索引是一個ndarray對象,不僅元素類型可以轉換,其對象本身也可以強轉為其他like-array類型,比如list、Series和DataFrame。

1,強轉索引值的類型

顯式把索引元素的類型強制轉換成其他數據類型:

Index.astype(self, dtype, copy=True)

2,把索引轉換成list

list是由索引的值構成的:

Index.to_list(self)

3,把索引轉換成Series

Series的索引值和數據值相同,是由原索引的數據值構成的:

Index.to_series(self, index=None, name=None)

參數index 表示新建Sereis的索引,默認值是None,表示新建Sereis的索引就是原索引。

>>> idx = pd.Index(['Ant', 'Bear', 'Cow'], name='animal')
>>> idx.to_series()
animal
Ant      Ant
Bear    Bear
Cow      Cow
Name: animal, dtype: object

4,把索引轉換成DataFrame

創建一個新的DataFrame對象,列的值是由索引值構成的,默認情況下,新DataFrame的索引就是原索引:

Index.to_frame(self, index=True, name=None)

參數index表示是否把原索引作為新創建的DataFrame對象的索引,默認值是True。

>>> idx = pd.Index(['Ant', 'Bear', 'Cow'], name='animal')
>>> idx.to_frame()
       animal
animal
Ant       Ant
Bear     Bear
Cow       Cow

5,把索引展開為ndarray對象

該方法和numpy.ravel() 相同,把Index對象展開為一維的ndarray對象:

Index.ravel(self, order='C')

三,索引的排序

按照索引的值進行排序,但是返回索引值的下標,參數 *args和 **kwargs都是傳遞給numpy.ndarray.argsort函數的參數。

Index.argsort(self, *args, **kwargs)

按照索引的值進行排序,返回排序的副本,參數return_indexer 表示是否返回索引值的下標:

Index.sort_values(self, return_indexer=False, ascending=True)

舉個例子,有如下索引:

>>> idx = pd.Index(['b', 'a', 'd', 'c'])
Index(['b', 'a', 'd', 'c'], dtype='object')

按照索引值進行排序,返回排序索引的下標:

>>> order = idx.argsort()
>>> order
array([1, 0, 3, 2])

通過下標來查看索引的排序值:

>>> idx[order]
Index(['a', 'b', 'c', 'd'], dtype='object')

當然,也可以直接返回已排序的索引:

>>> idx.sort_values()
Index(['a', 'b', 'c', 'd'], dtype='object')

如果要返回已排序的索引和對應的下標,需要設置參數return_indexer=True:

>>> idx.sort_values(return_indexer=True)
(Index(['a', 'b', 'c', 'd'], dtype='object'), array([1, 0, 3, 2], dtype=int64))

 

參考文檔:

pandas index


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM