這是書籍《Pandas Cookbook》書籍第04章的代碼復(fù)現(xiàn),所有代碼運行在Jupyter Notebook上,原講解地址是:
https://www.jianshu.com/p/bd0bc1b5b4b6
我上傳代碼的github地址是:
https://github.com/Asunqingwen/PandasCookbook.git
github上有該書中用到的data,里面代碼會不定期更新(因為工作原因,時間不定),直到本書學(xué)習(xí)完成!
相比原講解,會穿插一些自己的理解,水平有限,請各路大神指正。
文章目錄
- 1.選取Series數(shù)據(jù)
- 2.選取DataFrame的行
- 3.同時選取DataFrame的行和列
- 4.用整數(shù)和標(biāo)簽選取數(shù)據(jù)
- 5.快速選取標(biāo)量
- 6.惰性行切片
- 7.按照字母切片
1.選取Series數(shù)據(jù)
這段和第01章中Series的獲取有點類似,主要是通過index和column_name進(jìn)行行和列的選取,選取操作用到了iloc和loc函數(shù)——前者用整數(shù)或整數(shù)列表表示,后者用index或index的列表表示
或者直接用類似Python方法的dict和list切片用法,還可以像list那樣反向切片
2.選取DataFrame的行
個人認(rèn)為,這部分和第1部分講的內(nèi)容是一樣的,都是通過iloc和loc函數(shù)選取DataFrame的行
3.同時選取DataFrame的行和列
這部分相對于之前的兩部分,也就是在iloc和loc上使用的參數(shù)變?yōu)榱硕S的,所以可以同時選取行和列
4.用整數(shù)和標(biāo)簽選取數(shù)據(jù)
用整數(shù)和index結(jié)合column_name選取行和列,只是column_name對應(yīng)的列數(shù)來源于get_loc(),index來源于index屬性
5.快速選取標(biāo)量
當(dāng)我們指定index和column_name,那么就會獲取唯一的值,也可以叫標(biāo)量。可以用loc和iloc,也可以用獲取標(biāo)量的專有函數(shù)at和iat。
這部分最有趣的地方是用到了一個Python中的魔法函數(shù)——%timeit,這個函數(shù)會自動運行其后的語句多次,以計算平均運行時間,區(qū)別于%time,只計算當(dāng)前運行一次的時間
6.惰性行切片
網(wǎng)上找了找,只有Python的generator部分有惰性的說法,即next()的時候才會開始計算下一個值,這里的惰性切片,我的理解就是——定義好合適的start,stop,step,一個接一個輸出來,不用調(diào)用iloc或loc,內(nèi)部實現(xiàn)可能就是基于generator的。
但是這樣的惰性切片操作不適用于列,對于列只能用iloc和loc
7.按照字母切片
這部分感覺有點意思,用26個英文字母的順序來進(jìn)行切片,所以很明顯得先基于索引排序,這樣才使得索引列具有順序意義,那么就能進(jìn)行切片了,因為不排序,直接切片會產(chǎn)生如下錯誤:
ValueError: index must be monotonic increasing or decreasing
字面意思就是index必須單調(diào)遞增或遞減
排序后,index符合要求,就可以切片了,其中涉及到了兩個檢查字母排序順序的屬性,s_monotonic_increasing()和is_monotonic_decreasing,顧名思義,就是是否單調(diào)遞增或單調(diào)遞減
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
