您好,登錄后才能下訂單哦!
本篇內容介紹了“怎么將Pandas迭代速度加快150倍”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
做一個數據集
把觀點論述清楚最簡單的方法是聲明一個單列數據框對象,其整數值范圍為1到100000:
真的不需要任何更為復雜的東西來解決Pandas的速度問題。為驗證一切進展順利,以下是數據集的前幾行和整體形狀:
好了,準備工作已做足,現在一起看看如何遍歷以及如何不遍歷數據框的行。首先介紹如何不進行選擇。
以下是你不應該做的事
啊,筆者一直在使用(和過度使用)如此多的iterrows()方法。它在默認情況下速度很慢,但你知道筆者費心去尋找替代方案的原因(目光短淺)。
為證明你不該使用iterrows()方法在數據框中進行遍歷,筆者會做個快速演示——聲明一個變量并將其初始設置為0——然后在每次迭代時按Values屬性的當前值進行遞增。
如果你想知道%%time魔法函數返回單元格完成所有操作所需的秒數/毫秒數。
一起看看該函數是如何運行的:
你現在可能會想,用15秒遍歷100000行并遞增一些外部變量的值并不算多。但事實上是——請看下一部分的闡述原因。
以下是你應該做的事
現在有一個神奇的方法能進行挽救——itertuples()。顧名思義,itertuples()循環遍歷數據框的行,然后返回一個命名元組。這就是不能用括號[]訪問這些值,而是需要使用.符號的原因。
現在將演示與幾分鐘前相同的示例,但使用的是itertuples()方法:
瞧瞧!使用itertuples()進行同樣的運算,速度快了約154倍!現在想象一下你的日常工作場景,你正在處理上百萬條行——itertuples()可以幫你節省大量時間。
在這個簡單的例子中,我們已經見識到對代碼進行的小小改動就能對整體結果產生的巨大影響。
這不意味itertuples()在每個場景下都會比iterrows()快150倍,但在某種程度上這確實意味著每次都會快一些。
“怎么將Pandas迭代速度加快150倍”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。