pandas學習筆記(2) 多層索引

2021-10-13 03:06:18 字數 3722 閱讀 7085

#用from_product

series(np.random.randint(0,150,size = 8),index = pd.multiindex.from_product([['a','b','c','d'],['期中','期末']]))

out[23]:

a 期中 51

期末 133

b 期中 132

期末 115

c 期中 65

期末 91

d 期中 30

期末 138

#用from_arrays

series(np.random.randint(0,150,size = 8),

index = pd.multiindex.from_arrays([['a','a','b','b','c','c','d','d'],['期中','期末','期中','期末','期中','期末','期中','期末']]))

df = dataframe(data = np.random.randint(0,150,size = (8,3)),

columns = ['python','math','english'],

index = pd.multiindex.from_product([['a','b','c','d'],['期中','期末']]))

df#三層也是同理,用乘法原理兩兩組合就行

out[33]:

python math english

a 期中 108 14 138

期末 78 136 84

b 期中 16 3 73

期末 116 57 137

c 期中 2 125 124

期末 122 5 53

d 期中 28 101 68

期末 0 66 33

#多層索引可以是行,也可以是列。

df2 = dataframe(data = np.random.randint(0,150,size = (5,6)),

columns = pd.multiindex.from_product([['python','math','english'],['期中','期末']]),

index = list('abcde'))

df2out[34]:

python math english

期中 期末 期中 期末 期中 期末

a 74 83 24 149 13 35

b 43 132 141 51 106 66

c 137 45 107 140 38 124

d 14 117 106 115 5 16

e 69 73 44 122 53 35

df.iloc[0]

out[5]:

python 2

math 43

english 118

name: (a, 期中), dtype: int32

df.loc['a','期末']['python']#索引某個元素

df['a':'c']#切片

out[6]:

python math english

a 期中 2 43 118

期末 63 140 85

b 期中 117 0 94

期末 22 126 82

c 期中 123 24 0

期末 19 85 146

df.iloc[0:3]

out[7]:

python math english

a 期中 2 43 118

期末 63 140 85

b 期中 117 0 94

#聚合操作

df.mean(axis = 0,level = 0)#用level確定對第幾層索引進行聚合函式

out[9]:

python math english

a 32.5 91.5 101.5

b 69.5 63.0 88.0

c 71.0 54.5 73.0

d 63.0 85.5 119.0

df.mean(axis = 0,level = 1)

out[10]:

python math english

期中 73.5 22.50 76.00

期末 44.5 124.75 114.75

#索引的堆

df.unstack()#行變列

python math english

期中 期末 期中 期末 期中 期末

a 2 63 43 140 118 85

b 117 22 0 126 94 82

c 123 19 24 85 0 146

d 52 74 23 148 92 146

df2.stack()#列變行

out[12]:

english math python

a 期中 74 54 49

期末 109 73 39

b 期中 137 54 128

期末 107 84 138

c 期中 80 149 127

期末 142 19 40

d 期中 132 64 70

期末 83 132 107

e 期中 36 147 97

期末 137 128 79

df.unstack(level = 0)#如果有很多層索引df.unstack(level = [0,1])可換多層索引

out[13]:

python math english

a b c d a b c d a b c d

期中 2 117 123 52 43 0 24 23 118 94 0 92

期末 63 22 19 74 140 126 85 148 85 82 146 146

##使用stack或unstack時,level = 什麼,什麼就消失,出現在行/列裡

學習筆記 Pandas索引 切片

dataframe物件操作 上回說到series可以看做是帶索引的一維陣列,也可以看做是字典,下面來分別說不同看法下的series物件可以有哪些操作。建立乙個series物件 data pd.series np.linspace 0.25,1 4 index a b c d print data p...

Pandas學習筆記 03 索引

第三章 索引 總結 目錄4 索引運算 5 索引切片 5.2 多級索引切片 列選擇 loc 基於元素 iloc 基於位置 query 減少 長度 行索引和列索引都是multiindex型別,索引中的元素是元組。索引的名字和值屬性可以通過names和values獲得。通過get level values...

pandas 設定設定多層次索引

多層次索引 series 生成的excel格式 生成的html格式 對應的 import pandas as pd tup 34 21 4000 0003 34 21 4000 0004 36 15 1900 0011 index pd.multiindex.from tuples tup,name...