pandas入门(1)

pandas层次化索引,在轴上拥有多个级别索引。

MultiIndex(Hierarchical indexing)

import pandas as pd

from pandas import Series,DataFrame

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]])

data
Out[6]:
a 1 -0.409894
   2 -0.887154
   3 2.168980
b 1 0.307506
   2 -2.130029
   3 1.322515
c 1 1.666894
   2 0.090972
d 2 -1.662580
   3 1.677856
dtype: float64

可以看到index的数据类型

data.index
Out[7]:
MultiIndex(levels=[[u'a', u'b', u'c', u'd'], [1, 2, 3]],
labels=[[0, 0, 0, 1, 1, 1, 2, 2, 3, 3], [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 1, 2]])

 

对于层次化索引对象,可以在内层索引data[:,2]得到索引值为2的数据,也可以通过data['a'],data.ix[]在外层索引。

 

对于DataFrame每条轴都可以有层次化索引:

frame = DataFrame(np.arange(12).reshape((4,3)),index=[['a','a','b','b'],[1,2,3,4]],columns=[['O','O','C'],['G','R','G']])

frame
Out[36]:
     O    C
     G R G
a 1 0 1 2
   2 3 4 5
b 3 6 7 8
   4 9 10 11

可以通过轴的索引获取数据frame['O']获得O列的数据,frame.ix['a']获得a行的数据。

可以给轴的索引指定名字

frame.index.names=['key1','key2']

frame.columns.names=['state','color']

可以通过frame.swaplevel('key1','key2')交换分级顺序,也可以使用sortlevel进行排序。

frame.swaplevel(0,1).sortlevel(0)

Out[47]:
state O C
color G R G
key2 key1
1 a 0 1 2
2 a 3 4 5
3 b 6 7 8
4 b 9 10 11

 

还可以通过

frame.sum(level='color',axis=1)汇总统计

posted on 2016-10-25 09:25  Minstrel  阅读(163)  评论(0)    收藏  举报