建立一個空的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中文網其他相關文章!