Python數(shù)據(jù)分析基礎(chǔ)與應(yīng)用電子活頁(yè)5-21重塑層次化索引_第1頁(yè)
Python數(shù)據(jù)分析基礎(chǔ)與應(yīng)用電子活頁(yè)5-21重塑層次化索引_第2頁(yè)
Python數(shù)據(jù)分析基礎(chǔ)與應(yīng)用電子活頁(yè)5-21重塑層次化索引_第3頁(yè)
Python數(shù)據(jù)分析基礎(chǔ)與應(yīng)用電子活頁(yè)5-21重塑層次化索引_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Python數(shù)據(jù)分析基礎(chǔ)與應(yīng)用模塊電子活頁(yè)5-21重塑層次化索引【技能訓(xùn)練5-21】重塑層次化索引【訓(xùn)練要求】在JupyterNotebook開(kāi)發(fā)環(huán)境中創(chuàng)建j5-21.ipynb,然后編寫(xiě)代碼實(shí)現(xiàn)重塑層次化索引?!緦?shí)施過(guò)程】1.使用stack()函數(shù)將數(shù)據(jù)的列索引轉(zhuǎn)換為行索引將具有單層索引的DataFrame對(duì)象重塑為具有兩層索引的Series對(duì)象,也就是將列索引轉(zhuǎn)換成內(nèi)層行索引,代碼如下:importnumpyasnpimportpandasaspd#創(chuàng)建DataFrame對(duì)象data1=pd.DataFrame(np.arange(4).reshape((2,2)),index=pd.Index(['row1','row2'],name='rows'),columns=pd.Index(['col1','col2'],name='cols'))print(data1)#使用stack()函數(shù)改變data1的層次化索引result1=data1.stack()print('列索引轉(zhuǎn)換為內(nèi)層行索引\n',result1)print('類(lèi)型為:',type(result1))輸出結(jié)果:colscol1col2rowsrow101row223列索引轉(zhuǎn)換為內(nèi)層行索引rowscolsrow1col10col21row2col12col23dtype:int32類(lèi)型為:<class'pandas.core.series.Series'>從上述輸出結(jié)果可以看出,DataFrame對(duì)象已經(jīng)被轉(zhuǎn)換為Series對(duì)象。2.使用unstack()函數(shù)將數(shù)據(jù)的行索引轉(zhuǎn)換為列索引(1)使用unstack()函數(shù)將重塑的Series對(duì)象轉(zhuǎn)換為DataFrame對(duì)象將前面示例中重塑的Series對(duì)象恢復(fù)原樣,即將其轉(zhuǎn)換為DataFrame對(duì)象,代碼如下:print('操作內(nèi)層索引\n',result1.unstack())print('操作外層索引\n',result1.unstack(0))print('操作行索引\n',result1.unstack('rows'))輸出結(jié)果:操作內(nèi)層索引colscol1col2rowsrow101row223操作外層索引rowsrow1row2colscol102col213操作行索引rowsrow1row2colscol102col213(2)使用unstack()函數(shù)將Series對(duì)象轉(zhuǎn)換為DataFrame對(duì)象代碼如下:#創(chuàng)建Series對(duì)象s1=pd.Series([0,1,2,3],index=['a','b','c','d'])s2=pd.Series([4,5,6],index=['c','d','e'])data2=pd.concat([s1,s2],keys=['one','two'])print(data2)#使用unstack()函數(shù)改變data2的層次化索引result2=data2.unstack()print('將數(shù)據(jù)的行索引轉(zhuǎn)換為列索引\n',result2)print('類(lèi)型為:',type(result2))輸出結(jié)果:onea0b1c2d3twoc4d5e6dtype:int64將數(shù)據(jù)的行索引轉(zhuǎn)換為列索引abcdeone0.01.02.03.0NaNtwoNaNNaN4.05.06.0類(lèi)型為:<class'pandas.core.frame.DataFrame'>(3)使用stack()函數(shù)將數(shù)據(jù)的列索引轉(zhuǎn)換為行索引,并刪除缺失值對(duì)應(yīng)的行代碼如下:result3=data2.unstack().stack()print('刪除缺失值對(duì)應(yīng)的行\(zhòng)n',result3)print('類(lèi)型為:',type(result3))輸出結(jié)果:刪除缺失值對(duì)應(yīng)的行onea0.0b1.0c2.0d3.0twoc4.0d5.0e6.0dtype:float64類(lèi)型為:<class'pandas.core.series.Series'>(4)使用stack()函數(shù)將數(shù)據(jù)的列索引轉(zhuǎn)換為行索引,不刪除缺失值對(duì)應(yīng)的行代碼如下:result4=data2.unstack().stack(dropna=False)print('不刪除缺失值對(duì)應(yīng)的行\(zhòng)n',result4)輸出結(jié)果:不刪除缺失值對(duì)應(yīng)的行onea0.0b1.0c2.0d3.0eNaNtwoaNaNbNaNc4.0d5.0e6.0dtype:float64(5)使用字典創(chuàng)建DataFrame對(duì)象,然后分別使用unstack()、stack()函數(shù)進(jìn)行行索引與列索引的轉(zhuǎn)換代碼如下:df1=pd.DataFrame({'left':result1,'right':result1+5},columns=pd.Index(['left','right'],name='side'))print(df1)#使用unstack()、stack()函數(shù)result4=df1.unstack('rows')print('將數(shù)據(jù)的行索引轉(zhuǎn)換為列索引\n',result4)print('類(lèi)型為:',type(result4))result5=result4.stack('side')print('將數(shù)據(jù)的列索引轉(zhuǎn)換為行索引\n',result5)print('類(lèi)型為:',type(result5))輸出結(jié)果:sideleftrightrowscolsrow1col105col216row2col127col238將數(shù)據(jù)的行索引轉(zhuǎn)換為列索引sideleftrightrowsrow1row2row1row2colscol10257col21368類(lèi)型為:<class'pandas.core.frame.DataFrame'>將數(shù)據(jù)的列索引轉(zhuǎn)換為行索引rows

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論