1. 程式人生 > >pandas中層次化索引與切片

pandas中層次化索引與切片

Pandas層次化索引

 

1. 建立多層索引

隱式索引:

常見的方式是給dataframe建構函式的index引數傳遞兩個或是多個數組

 

Series也可以建立多層索引

Series多層索引

B =Series(np.random.randint(0,150,size=10),index=pd.MultiIndex.from_product([list("ABCDE"),["期中","期末"]]))

B

 

Dataframe多層索引的建立(推薦使用)

 

多層行索引

A = DataFrame(np.random.randint(0,150,size=(10,3)),columns=["數學","語文","英語"],

             index=pd.MultiIndex.from_product([list("ABCDE"),["期中","期末"]]))

A

 

 

 

物件方式多行列索引

B= DataFrame(np.random.randint(0,150,size=(3,20)),index=["數學","語文","英語"],columns=pd.MultiIndex.from_product([list("ABCDE"),["期中","期末"],["上","下"]]))

B

 

 

元祖方式建立多層索引

A = DataFrame(np.random.randint(0,150,size=(4,3)),columns=["數學","語文","英語"],

             index=pd.MultiIndex.from_tuples([("A","期中"),("A","期末"),("B","期中"),("B","期末")]))

A

 

陣列方式建立多層索引

 

多層索引的物件的索引和切片

 

Datafrane多層索引

行索引:

A.loc["A","期中"]

B.loc["A","期中","上"]

列索引:

B["A","期中","上"]

 

Series多層索引

  

行切片以下兩種都適用

D["A","期中"]

D.loc["A","期中"]

 

  

 

多層索引的切片

注:對於多層索引的切片必須排好順序,才能進行切片,使用sort_index()函式對索引進行排序(單層索引可以切片可以不考慮索引的順序)。

 

對行進行切片

A.loc["A":"C"]

 

 

A.iloc[1:3]

 

對列進行切片同行切片一樣,使用顯性索引和隱形索引對資料第二維進行切片

 

 

對資料進行排序是,使用sort_values()對資料進行排序

如:A.sort_values(by=["數學"])  #對按數學成績進行排序