日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python的史蒂芬加速迭代法_如何将Pandas迭代速度加快150倍?

發(fā)布時(shí)間:2024/4/19 python 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python的史蒂芬加速迭代法_如何将Pandas迭代速度加快150倍? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

面對(duì)現(xiàn)實(shí)吧,Python的速度在與C語(yǔ)言或Go語(yǔ)言相比時(shí),的確引發(fā)了不少口水戰(zhàn)。

這讓筆者一段時(shí)間以來(lái),一直對(duì)Python快速處理任務(wù)的能力有所懷疑。

目前,筆者嘗試在Go語(yǔ)言中進(jìn)行數(shù)據(jù)科學(xué)研究——這是有可能的——但操作起來(lái)根本不像在Python中那樣令人愉快,多半是由于語(yǔ)言的靜態(tài)特性和數(shù)據(jù)科學(xué)大多是探索性領(lǐng)域。

并不是說(shuō)用Go語(yǔ)言重寫(xiě)完成的解決方案不能提高性能,但這是另一篇文章的主題。

迄今為止,筆者至少忽略了Python可以更快地處理任務(wù)這一能力。筆者一直飽受目光短淺之苦——這是一種表現(xiàn)為當(dāng)你只看到一種解決方案時(shí),完全忽視其他方案的存在的綜合征。相信出現(xiàn)這種情況的不只筆者自己。

這就是筆者今天想簡(jiǎn)要介紹如何令Pandas每日工作速度更快且更為愉悅的原因。更準(zhǔn)確地說(shuō),該示例將關(guān)注行之間的迭代,并在過(guò)程中執(zhí)行一些數(shù)據(jù)操作。因此,事不宜遲,一起進(jìn)入正題。

做一個(gè)數(shù)據(jù)集

把觀點(diǎn)論述清楚最簡(jiǎn)單的方法是聲明一個(gè)單列數(shù)據(jù)框?qū)ο?#xff0c;其整數(shù)值范圍為1到100000:

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

好了,準(zhǔn)備工作已做足,現(xiàn)在一起看看如何遍歷以及如何不遍歷數(shù)據(jù)框的行。首先介紹如何不進(jìn)行選擇。

以下是你不應(yīng)該做的事

啊,筆者一直在使用(和過(guò)度使用)如此多的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)[]訪問(wèn)這些值,而是需要使用.符號(hào)的原因。

現(xiàn)在將演示與幾分鐘前相同的示例,但使用的是itertuples()方法:

瞧瞧!使用itertuples()進(jìn)行同樣的運(yùn)算,速度快了約154倍!現(xiàn)在想象一下你的日常工作場(chǎng)景,你正在處理上百萬(wàn)條行——itertuples()可以幫你節(jié)省大量時(shí)間。

在這個(gè)簡(jiǎn)單的例子中,我們已經(jīng)見(jiàn)識(shí)到對(duì)代碼進(jìn)行的小小改動(dòng)就能對(duì)整體結(jié)果產(chǎn)生的巨大影響。

這不意味itertuples()在每個(gè)場(chǎng)景下都會(huì)比iterrows()快150倍,但在某種程度上這確實(shí)意味著每次都會(huì)快一些。

文源網(wǎng)絡(luò),僅供學(xué)習(xí)之用,如有侵權(quán),聯(lián)系刪除。

我將優(yōu)質(zhì)的技術(shù)文章和經(jīng)驗(yàn)總結(jié)都匯集在了我的公眾號(hào)【Python圈子】里。

在學(xué)習(xí)Python的道路上肯定會(huì)遇見(jiàn)困難,別慌,我這里有一套學(xué)習(xí)資料,包含40+本電子書(shū),600+個(gè)教學(xué)視頻,涉及Python基礎(chǔ)、爬蟲(chóng)、框架、數(shù)據(jù)分析、機(jī)器學(xué)習(xí)等,不怕你學(xué)不會(huì)!

總結(jié)

以上是生活随笔為你收集整理的python的史蒂芬加速迭代法_如何将Pandas迭代速度加快150倍?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。