層次化索引(hierarchical indexing)是pandas的一項重要功能,它使你能在乙個軸上擁有多個(兩個以上)索引級別。抽象點說,它使你能以低維度形式處理高維度資料。我們先來看乙個簡單的例子:建立乙個series,並用乙個由列表或陣列組成的列表作為索引。
from pandas import series
import numpy as np
data = series(np.random.randn(10)
, index=[[
'a',
'a',
'a',
'b',
'b',
'b',
'c',
'c',
'd',
'd'],[
1,2,
3,1,
2,3,
1,2,
2,3]
])print
(data)
#output
a 1
1.1570652-
1.0750273-
0.800397
b 1
1.255714
20.0353683-
0.833140
c 1
-0.8810682-
0.943168
d 2
-0.2885073-
0.130029
dtype: float64
這就是帶有multiindex索引的series的格式化輸出形式。索引之間的「間隔」表示「直接使用上面的標籤」:
print
(data.index)
#output
multiindex(levels=[[
'a',
'b',
'c',
'd'],[
1,2,
3]],
labels=[[
0,0,
0,1,
1,1,
2,2,
3,3]
,[0,
1,2,
0,1,
2,0,
1,1,
2]])
對於乙個層次化索引的物件,選取資料子集的操作很簡單:
print
(data[
'a']
)print
(data[
'a':
'c']
)print
(data.ix[
['a'
,'c']]
)#output1-
1.3067842-
1.172157
30.773601
dtype: float64
a 1
-1.3067842-
1.172157
30.773601
b 1
-0.488442
21.447765
30.165453
c 1
0.9241122-
1.192613
dtype: float64
a 1
-1.3067842-
1.172157
30.773601
c 1
0.9241122-
1.192613
dtype: float64
有時甚至還可以在「內層」中進行選取:
in [
267]
: data[:,
2]out[
267]
:a 0.852965
b -2.304234
c -1.332610
d 1.074623
層次化索引在資料重塑和基於分組的操作(如透視表生成)中扮演著重要的角色。比如說,這段資料可以通過其unstack方法被重新安排到乙個dataframe中:
print
(data.unstack())
#output12
3a -
0.184154
1.268789
0.330326
b -0.313369
-0.103031
-1.093874
c 0.037298
-2.274778 nan
d nan -
2.220444
0.769246
unstack的逆運算是stack:
in [
269]
: data.unstack(
).stack(
)out[
269]
:a 1
0.670216
20.8529653-
0.955869
b 1-
0.0234932-
2.3042343-
0.652469
c 1-
1.2183022-
1.332610
d 21.074623
30.723642
對於乙個dataframe,每條軸都可以有分層索引:
frame = dataframe(np.arange(12)
.reshape((4
,3))
, index=[[
'a',
'a',
'b',
'b'],[
1,2,
1,2]
],columns=[[
'ohio'
,'ohio'
,'colorado'],
['green'
,'red'
,'green']]
)print
(frame)
print
(frame[
'ohio'])
#output
ohio colorado
green red green
a 1012
2345
b 1678
291011
green red
a 1012
34b 1672
910
暫略 利用python進行資料分析
目錄 10 minutes to pandas 翻譯 pandas中loc iloc ix的區別 pandas dropna函式 pandas中dataframe的stack unstack 和pivot 方法的對比 pandas中關於set index和reset index的用法 python匿...
利用python進行資料分析
利用python進行資料分析,需要了解一些基本的方法,比如掌握回歸分析的方法,通過線性回歸和邏輯回歸,其實你就可以對大多數的資料進行回歸分析,並得出相對精確地結論。這部分需要掌握的知識點如下 回歸分析 線性回歸 邏輯回歸 基本的分類演算法 決策樹 隨機森林 樸素貝葉斯 基本的聚類演算法 k mean...
《利用Python進行資料分析》筆記
之前的筆記一直記在我的印象筆記上,今天突然想到 不如直接記在部落格上,印象筆記只記錄生活上的事,這樣也分工明確一些。同時也能和大家分享,也許可以幫助到別人。由於這個學習筆記系列主要還是用於個人學習總結用,所以會比較凌亂,望大家理解!2017 9 23 p151 pd.dropna thresh 其中...