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)汇总统计
浙公网安备 33010602011771号