from pandas import Series,DataFrameimport pandas as pdimport numpy as npfrom numpy import nan as NAdf = DataFrame(np.random.randn(7,3))df.ix[:4,1] = NAdf.ix[:2,2] = NAdfdf.fillna(0) # 将缺失值填充为0df.fillna({1:0.5,3:-1}) # 通过字典来调用fillna 实现对不同的列填充不同的值# fillna会默认返回新的对象,但是也可以对现有的对象就地进行修改_ = df.fillna(0,inplace=True)dfdf = DataFrame(np.random.randn(6,3))df.ix[2:,1] = NA;df.ix[4:,2] = NAdfdf.fillna(method='ffill') # 对reindex有效的插值方法也可以用于fillnadf.fillna(method='ffill', limit=2) # 只填充第三列data = Series([1,NA,3.5,NA,7])data.fillna(data.mean())# 层次化索引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'''a 1 -1.455854 2 -0.847865 3 2.115079b 1 -1.227672 2 0.355481 3 0.301750c 1 -0.214539 2 -0.653013d 2 -0.145661 3 -0.374012'''# 这就是带有 MultiIndex索引的Series的格式化输出data.index'''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, 1, 2]])'''data['b'] # 子集选取data['b':'c']data.ix[['b','d']]data[:,2] # 在内层进行选取data.unstack() # 通过unstakck方法重新安排到一个dataframe中data.unstack().stack() # unstack的逆运算是stackframe = DataFrame(np.arange(12).reshape((4,3)), index=[['a','a','b','b'],[1,2,1,2]], columns=[['Ohio','Ohio','Colorado'],['Green','red','Green']])frame # 每条轴也可以有层次索引''' Ohio Colorado Green red Greena 1 0 1 2 2 3 4 5b 1 6 7 8 2 9 10 11'''frame.index.names = ['key1','key2'] # 每一层的名字frame.columns.names = ['state','color']frame'''color Green redkey1 key2a 1 0 1 2 3 4b 1 6 7 2 9 10'''frame['Ohio']# 重排分级顺序frame.swaplevel('key1','key2') # 对这两层的索引进行交换'''state Ohio Coloradocolor Green red Greenkey2 key11 a 0 1 22 a 3 4 51 b 6 7 82 b 9 10 11'''frame.sortlevel(1) # 根据单个级别中的值对数据进行排序frame.swaplevel(0,1).sortlevel(0)# 根据级别的总计frame.sum(level ='key2') # 根据不同的级别进行合计计算frame.sum(level ='color',axis = 1)
新闻热点
疑难解答