1. 程式人生 > >利用Python資料分析:pandas入門(三)

利用Python資料分析:pandas入門(三)

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] # 布林型陣列進行選取而後進行切片
# 算術運算和資料對齊