1. 程式人生 > >【Python】【pandas-彙總4】Index的主要屬性和函式

【Python】【pandas-彙總4】Index的主要屬性和函式

1.Index

    pandas的索引物件負責管理軸標籤和其他元資料(比如軸名稱等)。構建Series或DataFrame時,所用到的任何陣列或其他序列的標籤都會被轉換成一個Index。Index物件不可修改,從而在多個數據結構之間安全共享。

1.2.Index屬性

主要的Index物件說明
Index最廣泛的Index物件,將軸標籤表示為一個由Python物件組成的NumPy陣列
Int64Index針對整數的特殊Index
MultiIndex“層次化”索引物件,表示單個軸上的多層索引。可以看做由元組組成的陣列
DatetimeIndex儲存納秒級時間戳(用NumPy的Datetime64型別表示)
PeriodIndex針對Period資料(時間間隔)的特殊Index

1.3Index函式

函式說明
Index([x,y,...])建立索引
append(Index)連線另一個Index物件,產生一個新的Index
diff(Index)計算差集,產生一個新的Index
intersection(Index)計算交集
union(Index)計算並集
isin(Index)檢查是否存在與引數索引中,返回bool型陣列
delete(i)刪除索引i處元素,得到新的Index
drop(str)刪除傳入的值,得到新Index
insert(i,str)將元素插入到索引i處,得到新Index
Index.is_monotonic屬性:當各元素大於前一個元素時,返回true
Index.is_unique屬性:當Index沒有重複值時,返回true
Index.unique屬性:計算Index中唯一值的陣列

2.示例

# -*- coding: utf-8 -*-
"""
@author: 蔚藍的天空Tom
Aim:Index屬性和函式的示例
"""

import pandas as pd
from pandas import Series
from pandas import DataFrame

if __name__=='__main__':
    s = pd.Series(['a', 'b', 'c'], index=['No.1', 'No.2', 'No.3'])
    ind1 = s.index #將軸標籤表示為一個由Python物件組成的NumPy陣列
#Index(['No.1', 'No.2', 'No.3'], dtype='object')
    
    #檢視內容
    ind1[0]         #No.1
    ind1[1]         #No.2
    ind1[-1]        #No.3
    s.index is ind1 #True
    'No.1' in ind1  #True
    
    s2 = pd.Series(['a', 'b', 'c', 'd'], index=['No.1', 'No.2', 'No.3', 'No.4'])
    ind2 = s2.index
#Index(['No.1', 'No.2', 'No.3', 'No.4'], dtype='object')

    #difference 計算索引的差集
    ret = ind1.difference(ind2) #Index([], dtype='object')
    ret = ind2.difference(ind1) #Index(['No.4'], dtype='object')
    
    #append(Indexs) #連線另一個Index物件,產生一個新的Index
    ret = ind1.append(ind2)
#Index(['No.1', 'No.2', 'No.3', 'No.1', 'No.2', 'No.3', 'No.4'], dtype='object')

    #intersection(Index) 計算交集
    ret = ind1.intersection(ind2) #Index(['No.1', 'No.2', 'No.3'], dtype='object')
    
    #union(Index) 計算並集
    ret = ind1.union(ind2) #Index(['No.1', 'No.2', 'No.3', 'No.4'], dtype='object')
    
    #isin(Index) 檢查是否存在與引數索引中,返回bool型陣列
    ind1 #Index(['No.1', 'No.2', 'No.3'], dtype='object')
    ind2 #Index(['No.1', 'No.2', 'No.3', 'No.4'], dtype='object')
    ret = ind1.isin(ind2) #[ True  True  True]
    ret = ind2.isin(ind1) #[ True  True  True False]
    
    #delete(i) 刪除索引i處元素,得到新的Index,不修改源index
    ret = ind1.delete(0) #Index(['No.2', 'No.3'], dtype='object')
    
    #drop(str) 刪除傳入的值,得到新Index,不修改源index
    ret = ind1.drop('No.1') #Index(['No.2', 'No.3'], dtype='object')
    
    #insert(i,str) 	將元素插入到索引i處,得到新Index,不修改源index
    ret = ind1.insert(0, 'XXX') #Index(['XXX', 'No.1', 'No.2', 'No.3'], dtype='object')
    
    #is_monotonic() 當各元素大於前一個元素時,返回true
    ret = ind1.is_monotonic #True
    
    #is_unique() 當Index沒有重複值時,返回true
    ret = ind1.is_unique #True 說明ind1中沒有重複值
    
    #unique 計算index中唯一值的陣列,即去重後的index
    ret = ind1.unique
#<bound method IndexOpsMixin.unique of Index(['No.1', 'No.2', 'No.3'], dtype='object')>

(end)