偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

教你如何將Pandas迭代速度加快150倍?

開發(fā) 后端
面對現(xiàn)實吧,Python的速度在與C語言或Go語言相比時,的確引發(fā)了不少口水戰(zhàn)。這讓筆者一段時間以來,一直對Python快速處理任務(wù)的能力有所懷疑。

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

[[316519]]

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

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

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

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

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

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

把觀點論述清楚最簡單的方法是聲明一個單列數(shù)據(jù)框?qū)ο螅湔麛?shù)值范圍為1到100000:

 

教你如何將Pandas迭代速度加快150倍?

 

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

 

教你如何將Pandas迭代速度加快150倍?

 

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

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

啊,筆者一直在使用(和過度使用)如此多的iterrows()方法。它在默認情況下速度很慢,但你知道筆者費心去尋找替代方案的原因(目光短淺)。

為證明你不該使用iterrows()方法在數(shù)據(jù)框中進行遍歷,筆者會做個快速演示——聲明一個變量并將其初始設(shè)置為0——然后在每次迭代時按Values屬性的當(dāng)前值進行遞增。

如果你想知道%%time魔法函數(shù)返回單元格完成所有操作所需的秒數(shù)/毫秒數(shù)。

一起看看該函數(shù)是如何運行的:

 

教你如何將Pandas迭代速度加快150倍?

 

你現(xiàn)在可能會想,用15秒遍歷100000行并遞增一些外部變量的值并不算多。但事實上是——請看下一部分的闡述原因。

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

現(xiàn)在有一個神奇的方法能進行挽救——itertuples()。顧名思義,itertuples()循環(huán)遍歷數(shù)據(jù)框的行,然后返回一個命名元組。這就是不能用括號[]訪問這些值,而是需要使用.符號的原因。

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

 

教你如何將Pandas迭代速度加快150倍?

 

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

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

這不意味itertuples()在每個場景下都會比iterrows()快150倍,但在某種程度上這確實意味著每次都會快一些。

感謝閱讀,希望大家有所收獲!

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2017-05-11 11:30:43

MySQL查詢速度

2021-05-12 11:19:08

DevTools堆棧追蹤

2017-10-20 10:09:01

代碼CocoaPods編譯

2009-07-01 15:02:56

JSP程序JSP操作

2019-08-27 17:32:10

數(shù)據(jù)處理PandasPython

2017-05-10 16:09:12

MySQL數(shù)據(jù)庫查詢

2023-05-30 08:00:00

PandasQuestDBPython

2011-09-11 02:58:12

Windows 8build微軟

2021-06-23 15:45:55

神經(jīng)網(wǎng)絡(luò)AI算法

2020-12-17 08:08:15

CentOS

2018-07-30 15:05:26

Hadoop大數(shù)據(jù)集群

2020-01-19 10:33:09

框架Web開發(fā)

2019-12-25 14:08:50

Pandas數(shù)據(jù)計算

2024-07-25 08:25:35

2023-12-06 08:30:02

Spring項目

2011-08-29 17:16:29

Ubuntu

2009-08-11 09:10:26

Windows 7系統(tǒng)提速

2023-06-12 00:36:28

迭代向量化Pandas

2020-01-03 08:34:18

pandas代碼開發(fā)

2022-04-02 14:16:43

AI人工智能首席信息官
點贊
收藏

51CTO技術(shù)棧公眾號