Pandas 層次化索引
1. 前言
上一節(jié)我們學(xué)習(xí)了字符串的一些操作函數(shù),對(duì)于字符串?dāng)?shù)據(jù)的分析有一定的幫助,有利于我們?cè)跀?shù)據(jù)值上的處理和分析。在這之前我們接觸到的數(shù)據(jù)集的索引都是單個(gè)層次,行索引或者列索引,除此之外,Pandas 庫(kù)中的數(shù)據(jù)集還存在層次化的索引,極大的提升了數(shù)據(jù)集所能表現(xiàn)的數(shù)據(jù)維度,下面將詳細(xì)學(xué)習(xí) Pandas 庫(kù)中的層次化索引知識(shí)。
2. 什么是層次化索引
層次化索引是 Pandas 的一個(gè)重要功能,是指在一個(gè)軸上有至少兩個(gè)級(jí)別的索引值,層次化索引的好處是我們可以方便的使用低緯度索引形式去表示高緯度的數(shù)據(jù),下面我們看一下層次化索引的具體數(shù)據(jù)表現(xiàn):
# 1. 構(gòu)造了一個(gè) Series 數(shù)據(jù)集
obj=pd.Series([12,23,34,45],index=[["a","a","b","b"],[1,2,3,4]])
print(obj)
# --- 輸出結(jié)果 ---
a 1 12
2 23
b 3 34
4 45
# 結(jié)果解析:可以看到這里和我們第5小節(jié)講到的 Series 有點(diǎn)不一樣的地方,在他的索引列前面還有一列,值為 'a','b' 這也是索引,有兩層索引,因此之前的二維數(shù)據(jù)結(jié)構(gòu) Series 通過層次化的索引,就可以表示3維的數(shù)據(jù)集。
# 2. 構(gòu)造了一個(gè) DataFrame 數(shù)據(jù)集
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年'],['語(yǔ)文','數(shù)學(xué)','英語(yǔ)','語(yǔ)文','數(shù)學(xué)','英語(yǔ)']],columns=[['上學(xué)期','上學(xué)期','下學(xué)期','下學(xué)期'],['期中考試','期末考試','期中考試','期末考試']])
print(df1)
# --- 輸出結(jié)果 ---
上學(xué)期 下學(xué)期
期中考試 期末考試 期中考試 期末考試
2018年 語(yǔ)文 96 92 83 94
數(shù)學(xué) 85 86 77 88
英語(yǔ) 69 90 91 82
2019年 語(yǔ)文 83 84 85 86
數(shù)學(xué) 83 84 85 86
英語(yǔ) 83 84 85 86
# 結(jié)果解析:這里我們構(gòu)造了一個(gè) DataFrame 數(shù)據(jù)集,在行索引和列索引我們均設(shè)置了層次化的索引,這樣能更加有效的表示高緯度的數(shù)據(jù)。
3. 層次化索引數(shù)據(jù)的選取
對(duì)于 Pandas 庫(kù)數(shù)據(jù)集具有多層索引值,我們可以對(duì)一級(jí)索引通過 loc () 函數(shù)獲取數(shù)據(jù)子集:
# df1 原數(shù)據(jù)集,是上面我們自己創(chuàng)建的具有兩層列索引和兩層行索引的數(shù)據(jù)集
print(df1.loc['2018年','上學(xué)期'])
# --- 輸出結(jié)果 ---
期中考試 期末考試
語(yǔ)文 96 92
數(shù)學(xué) 85 86
英語(yǔ) 69 90
# 結(jié)果解析:我們通過 loc() 函數(shù)傳入行和列的一級(jí)索引,可以看到得到了一個(gè) DataFrame 數(shù)據(jù)子集
print(df1.loc[:,'上學(xué)期'])
# --- 輸出結(jié)果 ---
期中考試 期末考試
2018年 語(yǔ)文 96 92
數(shù)學(xué) 85 86
英語(yǔ) 69 90
2019年 語(yǔ)文 83 84
數(shù)學(xué) 83 84
英語(yǔ) 83 84
# 結(jié)果解析:這里我們獲取了列索引中的上學(xué)期的子集,可以看到輸出結(jié)果中行索引還是兩級(jí)索引
4. 小結(jié)
本節(jié)課程我們主要學(xué)習(xí)了 Pandas 庫(kù)中的層次化索引,利用數(shù)據(jù)集的層次化索引,我們可以表示更高維度的數(shù)據(jù)集,用于處理更復(fù)雜的數(shù)據(jù)。本節(jié)課程的重點(diǎn)如下:
- 了解 Pandas 層次化索引在數(shù)據(jù)集中的具體表現(xiàn)形式;
- 掌握 Pandas 層次化索引中數(shù)據(jù)子集的獲取方式。