pandas 學習 第6篇:索引

索引是DataFrame和Series的行標籤,而且能夠有一個或多個索引。若是DataFrame和Series有一個索引,稱做單級別索引;若是有多個索引,稱做多級別索引。索引相似於DataFrame和Sereis的一列數據,能夠有多種數據類型。索引的類型有:整數索引(Numeric Index)、分類索引(Category Index)、日期時間索引(DateTime Index、Timedelta Index)、時期索引(Period Index)、範圍索引(Range Index)、間隔索引(Interval Index)、多級索引(Multi-level Index)。html

多級索引(Multi-Level Index)是指序列(Series)或數據框(DataFrame)有多個索引,多級索引相似於二維關係表,也就是說,Series或DataFrame有一個相似於DataFrame結構的索引。數組

最經常使用的索引是整數索引、分類索引和日期索引。函數

一,基礎函數

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

pandas.Index(data,dtype=object,copy,name,tupleize_cols=True)

參數註釋:spa

  • data:相似於一維數組的對象,用於建立索引,索引是有序的。
  • dtype:默認值是object,用於表示索引元素的類型
  • copy:對輸入的data進行復制
  • name:索引的名稱,默認值是Index
  • tupleize_cols:若是設置爲True,嘗試建立多級索引(MultiIndex)。

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

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

二,索引的屬性

索引相似於二維關係表的一列,具備特定的屬性:code

  • values:索引的值
  • is_monotonic、is_monotonic_increasing、is_monotonic_decreasing:單調
  • is_nuique、has_duplicates:惟一值、重複值,
  • hasnans:是否有NA值
  • dtype:索引元素的數據類型
  • name:索引的名稱屬性,
  • names:若是索引是多級(MultiLevel)的,那麼每一級都有一個name
  • size:索引元素的數量
  • T:索引的轉置

三,索引的缺失值

檢查缺失值,isna() 對索引中的每一個值進行檢查,當值是NA時,返回True;當值不是NA時,返回False。 notna()對索引中的每一個值進行檢查,當值不是NA時,返回True;當值是NA時,返回False。htm

Index.isna(self)
Index.notna(self)

填充缺失值,用標量值來填充NA值,downcast表示向下類型兼容:對象

Index.fillna(self, value=None, downcast=None)

刪除缺失值,參數how表示如何刪除缺失值,有效值是any和all:blog

Index.dropna(self, how='any')

四,索引的排序

按照索引的值進行排序,可是返回索引值的下標,參數 *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))

五,索引的轉換

 能夠把索引轉換爲List、DataFrame、序列、數組(ndarray)等,ravel()函數用於把索引值展開成數組形式。

Index.to_list(self)
Index.to_frame(self, index=True, name=None)
Index.to_series(self, index=None, name=None)
Index.ravel(self, order='C')

把索引值的類型轉換爲指定的類型:

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

六,索引值的操做

對索引值能夠進行一系列的操做,下面列出最經常使用的索引操做的函數:

1,返回索引值的最大值或最小值所在的索引

Index.argmin(self, axis=None, skipna=True, *args, **kwargs)
Index.argmax(self, axis=None, skipna=True, *args, **kwargs)

2,刪除索引值

刪除指定的索引值

Index.delete(self, loc)
Index.drop(self, labels, errors='raise')

3,重複值

drop_duplicates()函數用於把重複的值刪除,keep參數的有效值是first、false和False,frist表示保留第一次、last表示保留最後一次、False表示把重複的值刪除。

Index.drop_duplicates(self, keep='first')

檢查索引值是不是重複的,當出現重複值時,把索引值相應位置的值設置爲True。

Index.duplicated(self, keep='first')

4,插入新值

Index.insert(self, loc, item)

5,重命名索引的name屬性

Index.rename(self, name, inplace=False)

6,索引的惟一值

Index.unique(self, level=None)

7,獲取索引的下標

第一種方式是傳遞索引值列表:

Index.get_indexer(self, target, method=None, limit=None, tolerance=None)

參數註釋:

target:索引列表

method:None, ‘pad’/’ffill’, ‘backfill’/’bfill’, ‘nearest’

  • None表示徹底匹配:
  • pad/ffill:若是沒有匹配,找到前一個非NA值
  • backfill/bfill:若是沒有匹配到,找到後一個非NA值
  • nearest:若是沒有匹配,找到最近的非NA值

limit:在target中不能徹底匹配的連續標籤的最大數量

tolerance:不能徹底匹配的原始索引和新索引之間的最大距離, 匹配位置處的索引值最知足方程 abs(index [indexer]-target)<=tolerance。

 第二種方式是傳遞一個索引的標量值,返回該標量值在索引中的位置:

Index.get_loc(self, key, method=None, tolerance=None)

七,其餘類型的索引

  • 1,整數索引
  • 二、分類索引
  • 3,日期索引

 

 

參考文檔:

pandas index

相關文章
相關標籤/搜索