def main(): ser = Series(np.arange(3.)) ser2 = Series(np.arange(3.), index=list('abc')) print ser print ser2 print '','' # print ser[-1] print ser2[-1] print '','' print ser.ix[:1] print '','' ser3 = Series(range(3), index=[-5, 1, 3]) print ser3 print '','' print ser3.iget_value(2) print '','' frame = DataFrame(np.arange(6).reshape((3, 2)), index=[2, 0, 1]) print frame print '','' print frame.irow(0) # panel # u'3次元のデータフレーム/パネルの各項目(列)はデータフレーム print '','----------------------' lst = ['AAPL', 'MSFT'] # , 'DELL', 'GOOG' pdata = pd.Panel(dict((stk, pd.io.data.get_data_yahoo(stk, '1/1/2009', '6/1/2012')) for stk in lst)) if not pdata.empty: print pdata pdata = pdata.swapaxes('items', 'minor') print '','' print pdata['Adj Close'] print '','' print pdata.ix[:, '6/1/2012', :] print '','' print pdata.ix['Adj Close', '5/22/2012', :] print '', '' print type(pdata.ix[:, '5/30/2012', :]) # DataFrame if hasattr(pdata.ix[:, '5/30/2012', :], 'to_frame'): stacked = pdata.ix[:, '5/30/2012', :].to_frame() print stacked print '','' print stacked.to_panel() if hasattr(pdata, 'to_frame'): f1 = pdata.to_frame() print f1 print '','' print f1.to_panel() print '',''
data.w # 选择表格中的'w'列,使用点属性,返回的是Series类型 data[['w']] # 选择表格中的'w'列,返回的是DataFrame属性 data[['w', 'z']] # 选择表格中的'w'、'z'列 data[0:2] # 返回第1行到第2行的所有行,前闭后开,包括前不包括后 data[1:2] # 返回第2行,从0计,返回的是单行,通过有前后值的索引形式, # 如果采用data[1]则报错 data.ix[1:2] # 返回第2行的第三种方法,返回的是DataFrame,跟data[1:2]同 data['a':'b'] # 利用index值进行切片,返回的是**前闭后闭**的DataFrame, # 即末端是包含的 data.irow(0) # 取data的第一行 data.icol(0) # 取data的第一列 data.head() # 返回data的前几行数据,默认为前五行,需要前十行则dta.head(10) data.tail() # 返回data的后几行数据,默认为后五行,需要后十行则data.tail(10) ser.iget_value(0) # 选取ser序列中的第一个 ser.iget_value(-1) # 选取ser序列中的最后一个,这种轴索引包含索引器的series不能采用ser[-1]去获取最后一个,这回引起歧义。 data.iloc[-1] # 选取DataFrame最后一行,返回的是Series data.iloc[-1:] # 选取DataFrame最后一行,返回的是DataFrame data.loc['a', ['w', 'x']] # 返回‘a’行'w'、'x'列,这种用于选取行索引列索引已知 data.iat[1, 1] # 选取第二行第二列,用于已知行、列位置的选取。
dtype: float64 ''' # non-integer index: no ambiguity ser2[-1] # 2.0 # # .iget_value: position-based indexing (Series) # # .irow, .icol: (DataFrame) ser3=Series(range(3), index=[-5,1,3]); ser3 ''' -5 0 1 1 3 2 dtype: int64 ''' ser3.iget_value(2) # 2 s=Series([4,9,1,3,8,2]); s ''' 0 4 1 9 2 1 3 3 4 8 5 2 dtype: int64 ''' s.iget_value(1); s.iget_value(4); s.iget_value(0) # 9, 8, 4
frame frame.sum(level="key1") frame = DataFrame(np.arange(12).reshape((4, 3)), index=[['a', 'a', 'b', 'b'], [1, 2, 1, 2]], columns=[['Ohio', 'Ohio', 'Colorado'], ['Green', 'Red', 'Green']]) frame.index.names = ['key1', 'key2'] frame.columns.names = ['state', 'color'] frame.sum(level="color", axis=1) frame.sum(level="state", axis=1) ser = Series(np.arange(3.), index=list("abc")) ser ser[-1] ser.iget_value(2) import pandas.io.data as web pdata = pd.Panel( dict((stk, web.get_data_google(stk, "1/1/2012", "12/30/2014")) for stk in ["AAPL", "GOOG", "MSFT", "DELL"])) pdata pdata = pdata.swapaxes("items", "minor") pdata pdata.ix[:, "12/3/2012", :] import statsmodels.api as sm import numpy as np import matplotlib.pyplot as plt nsample = 100 x = np.linspace(0, 10, 100)
data1[:,2] data1.unstack() data1.unstack().stack() data2 = pd.DataFrame(np.random.rand(5,3),index=[list('aabcb'),[1,2,1,2,2]], columns=[['id','rate','runtime'],['d2','d1','d2']]) data2.index.names = ['genre', 'level' ] data2.columns.names = ['feature', 'native' ] MultiIndex.from_arrays([[],[]],name=[])###################### data2.swaplevel('genre', 'level') data2.sort_index(level=1) data2.sum(level='genre',axis=1) df1 = pd.DataFrame({'a':range(7), 'b':range(7,0,-1), 'c':['one','one','one']+['two']*4, 'd':[0,1,2]*2+[3]}) df2 = df1.set_index(['c','d']) df3 = df1.set_index(['c','d'], drop=False) df2.reset_index() ########################## others ################################ # integer index se1 = pd.Series(np.arange(3)) se2 = pd.Series(np.arange(3.), index=list('abc')) se3 = pd.Series(np.arange(3.), index=[6,-1,3]) se3.iget_value(2)#? # panel data structure import pandas_datareader.data as web start = '1/1/2007' end = '1/1/2010' pdata = pd.Panel(dict((stk,web.get_data_yahoo(stk, start,end)) for stk in ['IBM', 'MSFT', 'GOOG']))
frame = DataFrame({'a':range(7),'b':range(7,0,-1), 'c':['one','one','one','two','two','two','two'],'d':[0,1,2,0,1,2,3]}) frame frame2 = frame.set_index('c','d']) frame2 = frame.set_index(['c','d']) frame2 frame2 = frame.set_index(['c','d'],drop=False) frame2 frame2.reset_index() ser = Series(np.arange(3)) ser ser[-1] ser2 = Series(np.arange(3.),index=['a','b','c']) ser2[-1] ser.ix[:1] ser3=Series(range(3),index=[-5,1,3]) ser3.iget_value(2) ser3.iloc(2) ser3.iloc[i] ser3.iloc[2] ser3.iat[2] ser3 ser3.iloc[1] ser3.iloc[0] ser3.iloc[3] ser3.iraw(0) frame = DataFrame(np.arange(6).reshape(3,2)),index=[2,0,1]) frame = DataFrame(np.arange(6).reshape((3,2)),index=[2,0,1]) frame.irow(0) frame.iloc[0] frame frame.iloc[3]
ser_neg = Series(np.arange(3.), index=[-1, 2, 3]) print '含有-1的索引直接访问的就是-1索引的值', ser_neg[-1] # 可以指定为字符型索引,使得索引的解释性提升 ser2 = Series(np.arange(3.), index=['a', 'b', 'c']) # 对于字符型索引-1不会有二义性 print '字母索引可以直接使用-1来访问最后一个', ser2[-1] # 如果轴索引含有索引器, 那么根据整数进行数据选取操作,是面向标签的,不是面向排序的 print '3是面向标签的,不是面向位置的', ser_neg.ix[:3] # 可靠的,不考虑索引类型和基于位置的索引 # 使用Series的iget_value ser3 = Series(range(3), index=[-5, 1, 3]) # 这个future可能会被取消,尽量使用等价的那个 print ser3.iget_value(2) # 等价于 print ser3.iloc[2] # 对于frame可以使用irow frame = DataFrame(np.arange(6).reshape(3, 2), index=[2, 0, 1]) # 下面这个future可能会被取消,所以尽量使用等价的那一个 print frame.irow(0) print frame.iloc(0) # 面板数据 # pandas有一个Panel数据结构, 可以理解为一个三维版本的DataFrame pdata = pd.Panel(dict((stk, web.get_data_yahoo(stk, '1/1/2009', '6/1/2012')) for stk in ['AAPL', 'GOOG', 'MSFT', 'DELL'])) print 'Panel', pdata # Panel的每一项都是DataFrame # 交换2个轴 pdata = pdata.swapaxes('items', 'minor')
#获取索引 print ser2[-1] # 2.0 print ser2['c'] # 2.0 print ser2[2] # 2.0 #通过索引获取值 print ser.ix[:1] # 0 0 # 1 1 #series的iget_value只基于位置的索引 ser3 = Series(range(3), index=[-5, 1, 3]) print ser3.iget_value(2) # 2 # frame = DataFrame(np.arange(6).reshape(3, 2), index=[2, 0, 1]) print frame # 0 1 # 2 0 1 # 0 2 3 # 1 4 5 #获取第一行 print frame.irow(0) # 0 0 # 1 1 # Name: 2
a[0] #元素 #%% 使用index访问元素 a['a'] #元素 #%% 使用切片过滤系列 a[0:5:2] #系列 #%% 使用索引切片(如果索引非数字其切片是闭区间) a['b':'i':2] #系列 #%% 使用布尔值系列进行过滤 a[(a>5)&(a<9)] #系列 #%% 使用reindex函数 a.reindex(list(letters[5:15])) #系列 #%% 使用get_value,set_vavlue访问 a.set_value('a',2) # 元素 a.get_value('a') # 元素 #%% 使用iget_value访问 a.iget_value(0) # 元素 #%% 使用get访问 a.get('c') # 元素 #%% 使用iget访问 a.iget(0) # 元素 #%% 使用truncate a.truncate(5,9) # 系列 #%% 使用item访问 a.item(9) # 元素 a.itemset(9,100) # 元素 #%% a.idxmax() #%%
############################################################### ser = Series(np.arange(3.)) print(ser) print('\n') ser2 = Series(np.arange(3.), index=['a','b','c']) print(ser2) print('\n') print(ser2[-1]) print('\n') print(ser.ix[:1]) print('\n') ser3 = Series(range(3), index=[-5,1,3]) print(ser3.iget_value(2)) print('\n') ############################################################### frame = DataFrame(np.arange(6).reshape(3,2), index=[2,0,1]) print(frame.irow(0))
# print frame # frame2 = frame.set_index(['c', 'd']) # print frame2 # print frame.set_index(['c', 'd'], drop=False) # print frame2.reset_index() # No.52 ser = Series(np.arange(3.)) print ser try: print ser[-1] except Exception, e: print e print ser.iget_value(-1) ser2 = Series(np.arange(3.), index=['a', 'b', 'c']) print ser2 try: print ser2[-1] except Exception, e: print e ser3 = Series(range(3), index=[-5, 1, 3]) print ser3.iget_value(-1) frame = DataFrame(np.arange(6).reshape(3, 2), index=[2, 0, 1]) print frame print frame.irow(0)