首頁 > 後端開發 > Python教學 > 如何優化 Pandas 中的資料幀循環以進行順序分析?

如何優化 Pandas 中的資料幀循環以進行順序分析?

Patricia Arquette
發布: 2024-11-14 18:41:02
原創
663 人瀏覽過

How Can I Optimize DataFrame Looping for Sequential Analysis in Pandas?

優化資料幀循環以進行順序分析

在pandas 中使用資料幀時,高效循環對於在大型資料集上執行複雜操作至關重要。如提供的範例所示,手動迭代每一行可能非常耗時且佔用記憶體。

Iterrows() 函數

幸運的是,較新的版本pandas 提供了一個專門為高效資料幀迭代而設計的內建函數:iterrows()。此函數傳回一個迭代器,該迭代器產生一個包含行索引和表示行值的pandas Series 物件的元組:

for index, row in df.iterrows():
    date = row['Date']
    open, high, low, close, adjclose = row[['Open', 'High', 'Low', 'Close', 'Adj Close']]
    # Perform analysis on open/close based on date
登入後複製

使用Numpy 函數

但是,如果速度至關重要,使用numpy 函數甚至比循環行更快。 Numpy 提供的向量化運算可以一次對整個列執行計算,從而顯著減少與迭代各個行相關的開銷。

例如,要計算收盤價的百分比變化:

import numpy as np
close_change = np.diff(df['Close']) / df['Close'][1:] * 100
登入後複製

記憶體最佳化

要在迭代大型資料幀時最佳化記憶體使用,請考慮使用itertuples() 方法而不是iterrows()。此方法傳回一個產生nametuple 物件的迭代器,透過避免建立pandas Series 物件來減少記憶體消耗:

for row in df.itertuples():
    date = row.Date
    open, high, low, close, adjclose = row.Open, row.High, row.Low, row.Close, row.Adj_Close
    # Perform analysis on open/close based on date
登入後複製

透過利用這些最佳化的循環技術,您可以顯著提高效能和記憶體效率財務數據分析。

以上是如何優化 Pandas 中的資料幀循環以進行順序分析?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板