日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python庫(kù)Pandas《Pandas Cookbook》第05章 BOOL

系統(tǒng) 2259 0

這是書籍《Pandas Cookbook》書籍第05章的代碼復(fù)現(xiàn),所有代碼運(yùn)行在Jupyter Notebook上,原講解地址是:
https://www.jianshu.com/p/d67080f59b06
我上傳代碼的github地址是:
https://github.com/Asunqingwen/PandasCookbook.git
github上有該書中用到的data,里面代碼會(huì)不定期更新(因?yàn)楣ぷ髟颍瑫r(shí)間不定),直到本書學(xué)習(xí)完成!
相比原講解,會(huì)穿插一些自己的理解,水平有限,請(qǐng)各路大神指正。

文章目錄

  • 1.計(jì)算BOOL值統(tǒng)計(jì)信息
  • 2.構(gòu)建多個(gè)BOOL條件
  • 3.用BOOL索引過濾
  • 4.用標(biāo)簽索引代替BOOL索引
  • 5.用唯一和有序索引選取
  • 6.觀察股價(jià)
  • 7.翻譯SQL的WHERE語句
  • 8.確定股票收益的正態(tài)值
  • 9.使用查詢方法提高BOOL索引的可讀性
  • 10.用where方法保留Series
  • 11.對(duì)DataFrame的行做mask
  • 12.使用BOOL值、整數(shù)、標(biāo)簽進(jìn)行提取

1.計(jì)算BOOL值統(tǒng)計(jì)信息

這段主要是先通過比較運(yùn)算,將DataFrame和Series內(nèi)的元素轉(zhuǎn)為BOOL類型,然后再進(jìn)行響應(yīng)的運(yùn)算,得注意一下value_counts(normalize=True)這個(gè)函數(shù),本來是統(tǒng)計(jì)個(gè)數(shù)的,加上normalize參數(shù)后,就變?yōu)榻y(tǒng)計(jì)頻率了,之前第01章也有用到
Python庫(kù)Pandas《Pandas Cookbook》第05章 BOOL索引_第1張圖片

2.構(gòu)建多個(gè)BOOL條件

這段主要是多個(gè)條件比較,對(duì)應(yīng)多個(gè)基于BOOL變量的數(shù)據(jù)結(jié)構(gòu),而多個(gè)BOOL條件也可以用位運(yùn)算符組合
Python庫(kù)Pandas《Pandas Cookbook》第05章 BOOL索引_第2張圖片

3.用BOOL索引過濾

結(jié)合BOOL條件,DataFrame之類的數(shù)據(jù)結(jié)構(gòu)可以進(jìn)行過濾,將符合BOOL條件的數(shù)據(jù)過濾出來
Python庫(kù)Pandas《Pandas Cookbook》第05章 BOOL索引_第3張圖片

BOOL條件也可以結(jié)合loc來進(jìn)行過濾
Python庫(kù)Pandas《Pandas Cookbook》第05章 BOOL索引_第4張圖片

4.用標(biāo)簽索引代替BOOL索引

這段先是設(shè)置索引,然后通過loc來對(duì)相應(yīng)的索引進(jìn)行選擇,對(duì)比運(yùn)行時(shí)間,雖然設(shè)置索引會(huì)很費(fèi)時(shí)間,但是索引只用設(shè)置一次,后面用loc來操作就快了
Python庫(kù)Pandas《Pandas Cookbook》第05章 BOOL索引_第5張圖片

5.用唯一和有序索引選取

對(duì)比四種索引方式的運(yùn)行時(shí)間——BOOL索引、無序行索引、有序行索引、唯一行索引,如果不算前期處理操作,四種索引方式的消耗時(shí)間依次減少
Python庫(kù)Pandas《Pandas Cookbook》第05章 BOOL索引_第6張圖片
Python庫(kù)Pandas《Pandas Cookbook》第05章 BOOL索引_第7張圖片
在這里插入圖片描述

6.觀察股價(jià)

選取股票收盤價(jià)最高和最低的10%
Python庫(kù)Pandas《Pandas Cookbook》第05章 BOOL索引_第8張圖片

用了matplotlib中的plot()和hlines()函數(shù)——先用plot()將所有的收盤價(jià)在坐標(biāo)軸中用黑色曲線繪制,然后用plot()單獨(dú)將收盤價(jià)最高和最低的10%部分用灰色繪制,最后通過hlines()繪制水平直線,區(qū)分最高和最低的%10同其他區(qū)域
Python庫(kù)Pandas《Pandas Cookbook》第05章 BOOL索引_第9張圖片

這里不同于上面用曲線顏色來區(qū)分,主要是區(qū)域填充不同顏色來區(qū)分——fill_between()可以在指定區(qū)域內(nèi)用不同的顏色來區(qū)分,先將所以區(qū)域用黑色填充,然后將最高和最低的10%區(qū)域用灰色填充
Python庫(kù)Pandas《Pandas Cookbook》第05章 BOOL索引_第10張圖片

7.翻譯SQL的WHERE語句

這段沒啥特殊,主要是看下導(dǎo)入數(shù)據(jù)的基本信息,有一個(gè)地方需要注意的是:列名也可以作為導(dǎo)入數(shù)據(jù)的屬性,調(diào)用對(duì)應(yīng)的屬性名,可以獲取對(duì)應(yīng)列數(shù)據(jù)
Python庫(kù)Pandas《Pandas Cookbook》第05章 BOOL索引_第11張圖片

主要是解釋下sql語句——先從EMPLOYEE表中選取薪水80000-120000的人住的DEPARTMENT(這里應(yīng)該還少了WHERE條件,即過濾出80000-120000的人),然后將DEPARTMENT分組,并降序排列,選出前5條數(shù)據(jù);之后將這5條數(shù)據(jù)的DEPARTMENT屬性提取出來,然后從EMPLOYEE表中選取不屬于這5個(gè)DEPARTMENT的數(shù)據(jù)
Python庫(kù)Pandas《Pandas Cookbook》第05章 BOOL索引_第12張圖片

8.確定股票收益的正態(tài)值

這里主要涉及到了pct_change()函數(shù)——計(jì)算當(dāng)前元素與先前元素相差的百分比,axis參數(shù)可以調(diào)整按行還是按列計(jì)算
Python庫(kù)Pandas《Pandas Cookbook》第05章 BOOL索引_第13張圖片

經(jīng)過z-score處理后,數(shù)據(jù)其實(shí)進(jìn)行了標(biāo)準(zhǔn)化,使得數(shù)據(jù)整體分布符合標(biāo)準(zhǔn)正態(tài)分布
Python庫(kù)Pandas《Pandas Cookbook》第05章 BOOL索引_第14張圖片

9.使用查詢方法提高BOOL索引的可讀性

查詢語句邏輯上有點(diǎn)類似于人腦的查詢邏輯,都是很直白的表述,只是如果要用到變量,就需要@符號(hào)來獲取變量的值
Python庫(kù)Pandas《Pandas Cookbook》第05章 BOOL索引_第15張圖片

10.用where方法保留Series

當(dāng)我們用BOOL條件作為索引時(shí),如果是[]運(yùn)算符索引,索引出的數(shù)據(jù)會(huì)去掉符合False條件的數(shù)據(jù),size可能比原數(shù)據(jù)小;如果用where()函數(shù)索引,索引除的數(shù)據(jù)會(huì)將符合False條件的數(shù)據(jù)用缺失值NaN代替,size和原數(shù)據(jù)一樣大,如果不想用NaN代替,可以設(shè)置other參數(shù),用指定的數(shù)據(jù)代替
Python庫(kù)Pandas《Pandas Cookbook》第05章 BOOL索引_第16張圖片

clip()函數(shù)效果等同于上面BOOL條件索引和where()的結(jié)合
Python庫(kù)Pandas《Pandas Cookbook》第05章 BOOL索引_第17張圖片

11.對(duì)DataFrame的行做mask

mask()函數(shù)會(huì)得到BOOL條件中符合False的結(jié)果,注意看BOOL條件,以及輸出結(jié)果中title_year的數(shù)值
Python庫(kù)Pandas《Pandas Cookbook》第05章 BOOL索引_第18張圖片

通過BOOL條件,選出和mask一樣的結(jié)果,但是兩者結(jié)果不等,shape一樣,因?yàn)閙ask方法會(huì)產(chǎn)生許多缺失值NaN,而NaN是不等于本身的,且數(shù)值類型的NaN統(tǒng)一變?yōu)楦↑c(diǎn)型
Python庫(kù)Pandas《Pandas Cookbook》第05章 BOOL索引_第19張圖片

利用pandas對(duì)象專有比較函數(shù),就能判斷mask和BOOL條件得出的兩個(gè)對(duì)象是相等的
通過運(yùn)行時(shí)間對(duì)比,利用BOOL條件索引的速度遠(yuǎn)遠(yuǎn)快于利用mask()函數(shù)的索引速度

Python庫(kù)Pandas《Pandas Cookbook》第05章 BOOL索引_第20張圖片

12.使用BOOL值、整數(shù)、標(biāo)簽進(jìn)行提取

loc是可以直接使用BOOL條件的,但是iloc是不能直接使用的
Python庫(kù)Pandas《Pandas Cookbook》第05章 BOOL索引_第21張圖片

但是iloc可以使用BOOL條件的array模式
Python庫(kù)Pandas《Pandas Cookbook》第05章 BOOL索引_第22張圖片

BOOL條件的values屬性就是其對(duì)應(yīng)的array模式了
Python庫(kù)Pandas《Pandas Cookbook》第05章 BOOL索引_第23張圖片


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 沅陵县| 威信县| 清流县| 扎赉特旗| 确山县| 禄丰县| 桓台县| 伊春市| 古田县| 梁平县| 黎平县| 广东省| 皮山县| 景宁| 弥渡县| 大宁县| 祁连县| 九江县| 湟中县| 察哈| 麻江县| 阜康市| 桦甸市| 赤壁市| 且末县| 巧家县| 阿坝| 通河县| 犍为县| 房产| 蒲江县| 龙门县| 绥滨县| 石家庄市| 新巴尔虎左旗| 嘉禾县| 松溪县| 绩溪县| 长春市| 陆川县| 陈巴尔虎旗|