亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

Pandas 層次化索引

1. 前言

上一節我們學習了字符串的一些操作函數,對于字符串數據的分析有一定的幫助,有利于我們在數據值上的處理和分析。在這之前我們接觸到的數據集的索引都是單個層次,行索引或者列索引,除此之外,Pandas 庫中的數據集還存在層次化的索引,極大的提升了數據集所能表現的數據維度,下面將詳細學習 Pandas 庫中的層次化索引知識。

2. 什么是層次化索引

層次化索引是 Pandas 的一個重要功能,是指在一個軸上有至少兩個級別的索引值,層次化索引的好處是我們可以方便的使用低緯度索引形式去表示高緯度的數據,下面我們看一下層次化索引的具體數據表現:

# 1. 構造了一個 Series 數據集
obj=pd.Series([12,23,34,45],index=[["a","a","b","b"],[1,2,3,4]])
print(obj)
# --- 輸出結果 ---
a  1    12
   2    23
b  3    34
   4    45
# 結果解析:可以看到這里和我們第5小節講到的 Series 有點不一樣的地方,在他的索引列前面還有一列,值為 'a','b' 這也是索引,有兩層索引,因此之前的二維數據結構 Series 通過層次化的索引,就可以表示3維的數據集。

# 2. 構造了一個 DataFrame 數據集
df1=pd.DataFrame([[96,92,83,94],[85,86,77,88],[69,90,91,82],[83,84,85,86],[83,84,85,86],[83,84,85,86]],index=[['2018年','2018年','2018年','2019年','2019年','2019年'],['語文','數學','英語','語文','數學','英語']],columns=[['上學期','上學期','下學期','下學期'],['期中考試','期末考試','期中考試','期末考試']])
print(df1)
# --- 輸出結果 ---
            上學期          下學期     
          	期中考試 期末考試 期中考試 期末考試
2018年  語文   96   	92    83     94
      	數學   85   	86     77     88
      	英語   69   	90     91     82
2019年  語文   83      84    85     86
      	數學   83  	 84    85     86
      	英語   83  	 84    85     86
# 結果解析:這里我們構造了一個 DataFrame 數據集,在行索引和列索引我們均設置了層次化的索引,這樣能更加有效的表示高緯度的數據。

3. 層次化索引數據的選取

對于 Pandas 庫數據集具有多層索引值,我們可以對一級索引通過 loc () 函數獲取數據子集:

# df1 原數據集,是上面我們自己創建的具有兩層列索引和兩層行索引的數據集
print(df1.loc['2018年','上學期'])
# --- 輸出結果 ---
    期中考試 期末考試
語文	 96	    92
數學	 85	    86
英語	 69	    90
# 結果解析:我們通過 loc() 函數傳入行和列的一級索引,可以看到得到了一個 DataFrame 數據子集

print(df1.loc[:,'上學期'])
# --- 輸出結果 ---
             期中考試	期末考試
2018年	語文	  96	 92
         數學	   85	 86
         英語	   69	 90
2019年	語文	  83	84
         數學	  83	 84
         英語	  83	 84
# 結果解析:這里我們獲取了列索引中的上學期的子集,可以看到輸出結果中行索引還是兩級索引

4. 小結

本節課程我們主要學習了 Pandas 庫中的層次化索引,利用數據集的層次化索引,我們可以表示更高維度的數據集,用于處理更復雜的數據。本節課程的重點如下:

  • 了解 Pandas 層次化索引在數據集中的具體表現形式;
  • 掌握 Pandas 層次化索引中數據子集的獲取方式。