本篇內(nèi)容介紹了“怎么將Pandas迭代速度加快150倍”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的荔浦網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
做一個(gè)數(shù)據(jù)集
把觀點(diǎn)論述清楚最簡(jiǎn)單的方法是聲明一個(gè)單列數(shù)據(jù)框?qū)ο螅湔麛?shù)值范圍為1到100000:

真的不需要任何更為復(fù)雜的東西來解決Pandas的速度問題。為驗(yàn)證一切進(jìn)展順利,以下是數(shù)據(jù)集的前幾行和整體形狀:

好了,準(zhǔn)備工作已做足,現(xiàn)在一起看看如何遍歷以及如何不遍歷數(shù)據(jù)框的行。首先介紹如何不進(jìn)行選擇。
以下是你不應(yīng)該做的事
啊,筆者一直在使用(和過度使用)如此多的iterrows()方法。它在默認(rèn)情況下速度很慢,但你知道筆者費(fèi)心去尋找替代方案的原因(目光短淺)。
為證明你不該使用iterrows()方法在數(shù)據(jù)框中進(jìn)行遍歷,筆者會(huì)做個(gè)快速演示——聲明一個(gè)變量并將其初始設(shè)置為0——然后在每次迭代時(shí)按Values屬性的當(dāng)前值進(jìn)行遞增。
如果你想知道%%time魔法函數(shù)返回單元格完成所有操作所需的秒數(shù)/毫秒數(shù)。
一起看看該函數(shù)是如何運(yùn)行的:

你現(xiàn)在可能會(huì)想,用15秒遍歷100000行并遞增一些外部變量的值并不算多。但事實(shí)上是——請(qǐng)看下一部分的闡述原因。
以下是你應(yīng)該做的事
現(xiàn)在有一個(gè)神奇的方法能進(jìn)行挽救——itertuples()。顧名思義,itertuples()循環(huán)遍歷數(shù)據(jù)框的行,然后返回一個(gè)命名元組。這就是不能用括號(hào)[]訪問這些值,而是需要使用.符號(hào)的原因。
現(xiàn)在將演示與幾分鐘前相同的示例,但使用的是itertuples()方法:

瞧瞧!使用itertuples()進(jìn)行同樣的運(yùn)算,速度快了約154倍!現(xiàn)在想象一下你的日常工作場(chǎng)景,你正在處理上百萬條行——itertuples()可以幫你節(jié)省大量時(shí)間。
在這個(gè)簡(jiǎn)單的例子中,我們已經(jīng)見識(shí)到對(duì)代碼進(jìn)行的小小改動(dòng)就能對(duì)整體結(jié)果產(chǎn)生的巨大影響。
這不意味itertuples()在每個(gè)場(chǎng)景下都會(huì)比iterrows()快150倍,但在某種程度上這確實(shí)意味著每次都會(huì)快一些。
“怎么將Pandas迭代速度加快150倍”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
網(wǎng)頁標(biāo)題:怎么將Pandas迭代速度加快150倍
文章分享:http://www.yijiale78.com/article4/gsogoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、定制開發(fā)、移動(dòng)網(wǎng)站建設(shè)、Google、自適應(yīng)網(wǎng)站、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)