pandas層次化索引

2021-08-03 00:20:10 字數 2413 閱讀 5018

import numpy as np

import pandas as pd

from pandas import series,dateframe

dd=dataframe(np.random.rand(4,2),columns=['data1','data2'],index=[['a','a','b','b'],['1','2','1','2']])

ddfrom_tuples()

population=[1233443,3322324,134566,57568768,13324234,5467577]

index=[('california',2000),('california',2010),('newyork',2000),('newyork',2010),('texas',2000),('texas',2010)]

mindex=pd.multiindex.from_tuples(index)

pop=dataframe(population,index=mindex)

pop

from_product()

mindex=pd.multiindex.from_product([['california','newyork','texas'],[2000,2010]])

pop2=dataframe(population,index=mindex)

pop2

3. 多層索引物件的索引與切片操作

1)series的操作

【重要】對於series來說,直接中括號與使用.loc()完全一樣,因此,推薦使用中括號索引和切片。

1))索引

pop['california']

2))切片

pop['california':'newyork']

california  2000    33871648

2010    37253956

new york    2000    18976457

2010    19378102

dtype: int64

pop['california':,2000]

california    33871648

new york      18976457

texas         20851820

dtype: int64

(2) 使用行索引需要用ix(),loc()等函式

pop.loc['california'] 0

20001233443

20103322324

(3)使用pd.indexslice

【極其重要】最好的方法是:pd.indexslice+.loc()方法

行索引:

idx=pd.indexslice

pop.loc[idx['california'],idx[:]] 0

20001233443

20103322324

列索引:

idx=pd.indexslice

pop.loc[idx[:2000],idx[:]]

4. 索引的堆(stack)

stack()

unstack()  #【小技巧】使用unstack()的時候,level等於哪乙個,哪乙個就消失,出現在列裡。

ddd=pd.dataframe(np.random.rand(4,4),

columns=['0','1','2','3'],

index=['1','2','3','4'])

ddd

ddd.stack().unstack(level=0)

5. 聚合操作

【注意】

需要指定level

【小技巧】和unstack()相反,聚合的時候,level等於哪乙個,哪乙個就保留。

ddd1=ddd.stack()

ddd1

1  0    0.259452

1    0.410411

2    0.324261

3    0.506320

2  0    0.556484

1    0.674575

2    0.457297

3    0.145511

3  0    0.088966

1    0.402123

2    0.420650

3    0.481422

4  0    0.532261

1    0.812724

2    0.468918

3    0.170312

dtype: float64

ddd1.mean(level=0)

1    0.375111

2    0.458467

3    0.348290

4    0.496054

dtype: float64

pandas層次化索引

import pandas as pd import numpy as np from numpy import nan as na df pd.dataframe np.random.randn 7,3 index a b c d e f g columns q w t in 106 df out...

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...

小呆學資料分析 pandas中的層次化索引

層次化索引應用場景 例子王小呆的女朋友李小妹是高三老師,高考結束可以查分後,李小妹讓班級裡面的同學將查分結果彙總給她,形式都是 張三.csv 李四.csv 王五.csv,內容如下 張三.csv 姓名,科目,分數 張三,英語,128 張三,語文,110 張三,數學,125 張三,理綜,238李四.cs...