首頁 > 後端開發 > Python教學 > 如何有效率地迭代填充 Pandas DataFrame?

如何有效率地迭代填充 Pandas DataFrame?

Mary-Kate Olsen
發布: 2024-12-11 08:58:10
原創
849 人瀏覽過

How to Efficiently Fill a Pandas DataFrame Iteratively?

建立一個空的Pandas DataFrame,然後填充它

迭代地用值填充DataFrame

使用給定的DataFrame 文檔,您想要迭代用時間序列類型計算中的值填入DataFrame。目標是使用 A 列、B 列和時間戳記行(全部為 0 或全部為 NaN)來初始化 DataFrame。然後,您想要新增初始值並檢查此數據,根據先前的行計算新行,例如 row[A][t] = row[A][t-1] 1 左右。

雖然目前使用迭代器、scipy 的零函數和日期時間的程式碼可能有效,但它可以改進。

為什麼不增長 DataFrame按行?

通常不建議按行增長DataFrame,原因如下:

  • 計算成本: 追加到列表並建立與建立一個空DataFrame 並一遍又一遍地附加到它相比,一次性DataFrame 的計算強度較小再次。
  • 記憶體使用:清單佔用的記憶體更少,並且是比 DataFrame 更輕的資料結構,使它們的追加和刪除效率更高。
  • 資料型別推論:如果追加到 DataFrame,最終可能會得到物件列,這會影響 pandas 的效能。另一方面,列表允許自動推斷資料類型。
  • 索引管理:當您從清單建立 DataFrame 時,會自動為您的資料建立 RangeIndex,這可以節省您的時間。自己管理索引的麻煩。

建議的方法:將資料累積在list

與其按行成長 DataFrame,不如將資料累積在清單中,然後使用 pd.DataFrame(data) 初始化 DataFrame。此方法有以下優點:

  • 效率:運算效率較高,需要較少的記憶體。
  • 彈性:清單可以轉換為list-of-lists 和list-of-dicts 格式,這些格式都被pd.DataFrame.
  • 方便:它會自動處理索引管理和資料類型推論。

要考慮的替代方案

在累積資料時清單是首選方法,有兩種更糟糕的選擇需要避免:

  • 在循環內追加或連接:這是低效且容易出錯的,因為它會重複重新分配記憶體並可能導致物件列。
  • 建立一個空的NaNs 的DataFrame: 這個方法也會建立物件列並需要手動索引

結論

要有效地用值填入DataFrame,最好將資料累積在列表中,然後使用pd.DataFrame(data) 初始化DataFrame。這種方法高效、靈活且方便,使其成為使用 pandas DataFrame 的首選方法。

以上是如何有效率地迭代填充 Pandas DataFrame?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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