利用Python資料分析:pandas入門(三)
阿新 • • 發佈:2018-12-27
obj = Series(range(3),index=['a','b','c']) index = obj.index index index[1:] index[1] = 'd' # index物件是不能被修改的 Index does not support mutable operations index = pd.Index(np.arange(3)) obj2 = Series([1.5,-2.5,0],index=index) obj2.index is index # 索引是否為索引? pop ={'Nevada':{2001:2.4,2002:2.9}, 'Ohio':{2000:1.5,2001:1.7,2002:3.6}} #這是一個巢狀字典 frame3 = DataFrame(pop)# 巢狀字典轉成Dataframe的時候外層的鍵作為列內層的鍵作為索引 frame3 'Ohio' in frame3.columns # 類似於陣列的固定大小的集合方法 2003 in frame3.index #重新索引 obj = Series([4.5,7.2,-5.3,3.6,],index=['d','b','a','c']) obj obj2 = obj.reindex(['a','b','c','d','e']) obj2 obj.reindex(['a','b','c','d','e'],fill_value=0) #把空值設定成0 obj3 = Series(['blue','purple','yellow'],index=[0,2,4]) obj3.reindex(range(6),method='ffill')#重新索引時候需要做一些插值處理 method引數可以達到這個目的 frame = DataFrame(np.arange(9).reshape((3,3)),index=['a','c','d'], columns=['Ohio','Teaxs','Carlifornia']) frame frame2 = frame.reindex(['a','b','c','d']) #如果只傳入一個序列就只重新索引行 frame2 states = ['Teaxs','Utah','Carlifornia'] # 使用columns關鍵字進行列的重新索引 frame.reindex(columns=states) frame.reindex(index=['a','b','c','d'],method='ffill', columns=states) #對行列進行重新索引但是插值只適用與行 frame.ix[['a','b','c','d'],states] #用ix同樣可以做到重新索引
obj = Series(np.arange(5.),index=['a','b','c','d','e']) # 建立一個series new_obj = obj.drop('c') # 丟棄掉索引C上的元素 new_obj obj.drop(['d','c']) data = DataFrame(np.arange(16).reshape((4,4)), index=['Ohio','Colorado','Utah','New York'], columns=['one','two','three','four']) # 建立一個 DataFrame data.drop(['Colorado','Ohio']) # 丟棄掉索引為這兩個的行 data.drop('two',axis=1) # 丟棄列 data.drop(['two','four'],axis=1) # 在丟棄列的時候需要指定丟棄的軸 # 索引的選取和過濾 #Series的索引是obj[...] obj = Series(np.arange(4.),index=['a','b','c','d']) # 建立一個series obj['b'] obj[1] # 這裡和上面是等效的series預設是從0~n-1的索引 obj[2:4] # 這裡使用的是Python的普通的切片 不包含末端也就是開區間 obj[['b','a','d']] # 指定順序 obj[[1,3]] obj[obj<2] # 布林型的方式進行處理 obj['b':'c'] # 利用標籤進行切片這裡同普通的Python切片不同之處在於它是一個閉區間 obj['b':'c'] = 5 # 進行賦值操作 obj data = DataFrame(np.arange(16).reshape((4,4)), index=['Ohio','Colorado','Utah','New York'], columns=['one','two','three','four']) # 建立一個 DataFrame data data['two'] # 選取‘two這一列’ data[['three','one']] # 選取兩列 同series 一樣的用法 data[:2] # 使用切片選取前兩行 data[data['three']>5] # 內層是一個布林陣列 第三列<5的行剔除 data<5 data[data<5] = 0 data # 這段程式碼的意義在於讓dataframe更像ndarray # 使用ix 的索引欄位來選取行列子集 data.ix['Colorado',['two','three']] # Colorado 這一行的‘two’和'three'這兩列 data.ix[['Colorado','Utah'],[3,0,1]] # 和上面的相似,只不過這裡用數字的方法進行選取 data.ix[2] # 選取的是axis = 0軸上的也就是第二行utah的 data.ix[:'Utah','two'] # 喵? data.ix[data.three>5,:3] # 布林型陣列進行選取而後進行切片 # 算術運算和資料對齊