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)
新聞熱點
疑難解答