數(shù)據(jù)結(jié)構(gòu) 索引對象
·?pandas的索引對象負(fù)責(zé)管理軸標(biāo)簽和其他元數(shù)據(jù)(比如軸名稱等)。
構(gòu)建Series或DataFrame時千贯,所用到的任何數(shù)組或其他序列的標(biāo)簽都會被轉(zhuǎn)換成一個Index。
·?Index對象是不可修改的(immutable)搞坝,因此用戶不能對其進行修改搔谴。
不可修改性非常重要,因為這樣才能使Index對象在多個數(shù)據(jù)結(jié)構(gòu)之間安全共享桩撮。
·?pandas中主要的index對象
·?Index的方法和屬性
#獲取index'
obj = Series(range(3), index = ['a', 'b', 'c'])
index = obj.index
print(index[1:])
# '使用Index對象'
index = Index(np.arange(3))
obj2 = Series([1.5, -2.5, 0], index = index)
print(obj2)
print(obj2.index is index)
#'判斷列和索引是否存在'
pop = {'Nevada':{20001:2.4, 2002:2.9},
'Ohio':{2000:1.5, 2001:1.7, 2002:3.6}}
frame3 = DataFrame(pop)
print('Ohio' in frame3.columns)
print('2003' in frame3.index)
s = Series(['a', 'b', 'c'], index=['No.1', 'No.2', 'No.3'])
ind1 = s.index
print(ind1)
s2 =Series(['a', 'b', 'c', 'd'], index=['No.1', 'No.2', 'No.3', 'No.4'])
ind2 = s2.index
print(ind2)
#difference 計算索引的差集
re1t = ind1.difference(ind2)
print(ret1)
ret2 = ind2.difference(ind1)
print(ret2)
#append(Indexs) #連接另一個Index對象敦第,產(chǎn)生一個新的Index
ret3 = ind1.append(ind2)
print(ret3)
#intersection(Index) 計算交集
ret4 = ind1.intersection(ind2)
print(ret4)
#union(Index) 計算并集
ret5 = ind1.union(ind2)
print(ret5)
#isin(Index) 檢查是否存在與參數(shù)索引中,返回bool型數(shù)組
ret6= ind1.isin(ind2) #[ True True True]
ret7= ind2.isin(ind1)
print(ret6)
print(ret7)
#delete(i) 刪除索引i處元素店量,得到新的Index芜果,不修改源index
ret8 = ind1.delete(0)
print(ret8)
#drop(str) 刪除傳入的值,得到新Index融师,不修改源index
ret9 = ind1.drop('No.1')
print(ret9)
#insert(i,str) 將元素插入到索引i處右钾,得到新Index,不修改源index
ret10 = ind1.insert(0, 'XXX')
print(ret10)
#is_monotonic() 當(dāng)各元素大于前一個元素時旱爆,返回true
ret11 = ind1.is_monotonic #True
print(ret11)
#is_unique() 當(dāng)Index沒有重復(fù)值時舀射,返回true
ret12 = ind1.is_unique #True 說明ind1中沒有重復(fù)值
print(ret12)
#unique 計算index中唯一值的數(shù)組,即去重后的index
ret13 = ind1.unique
print(ret13)
基本功能 重新索引
·?創(chuàng)建一個適應(yīng)新索引的新對象怀伦,該Series的reindex將會根據(jù)新索引進行重排脆烟。
如果某個索引值當(dāng)前不存在,就引入缺失值
·?對于時間序列這樣的有序數(shù)據(jù)房待,重新索引時可能需要做一些插值處理邢羔。
method選項即可達(dá)到此目的驼抹。
·?reindex函數(shù)的參數(shù)
#'重新指定索引及順序'
obj = Series([4.5, 7.2, -5.3, 3.6], index = ['d', 'b', 'a', 'c'])
print(obj)
obj2 = obj.reindex(['a', 'b', 'd', 'c', 'e'])
print(obj2)
print(obj.reindex(['a', 'b', 'd', 'c', 'e'], fill_value = 0)) # 指定不存在元素的默認(rèn)值
#'重新指定索引并指定填元素充方法'
obj3 = Series(['blue', 'purple', 'yellow'], index = [0, 2, 4])
print(obj3)
print(obj3.reindex(range(6), method = 'ffill'))
print(obj3.reindex(range(6), method = 'bfill'))
#'對DataFrame重新指定索引'
frame = DataFrame(np.arange(9).reshape(3, 3),
index = ['a', 'c', 'd'],
columns = ['Ohio', 'Texas', 'California'])
print(frame)
frame2 = frame.reindex(['a', 'b', 'c', 'd'])
print(frame2)
#重新指定column'
states = ['Texas', 'Utah', 'California']
print(frame.reindex(columns = states))
#'對DataFrame重新指定索引并指定填元素充方法'
print(frame.reindex(index = ['a', 'b', 'c', 'd'],
method = 'ffill'))#,columns = states
print(frame.ix[['a', 'b', 'd', 'c'], states])