為何 DataFrame 中的字串儲存為物件?
儘管將包含字串的 DataFrame 列明確轉換為字串資料類型,Python 的 Pandas 庫仍可能將它們報告為物件。這種差異是由於 NumPy 的底層資料結構所造成的。
NumPy 使用 ndarray 來儲存資料數組,ndarray 中的每個元素都有固定數量的位元組。對於整數(int64)和浮點數(float64),每個元素佔用8個位元組。然而,字串的長度是可變的,因此將它們直接儲存在 ndarray 中是不切實際的。
為了適應這一點,Pandas 使用物件 ndarray 來儲存指向物件的指標。這些物件包含實際的字串值。因此,物件 ndarray 的大小不確定,並表示為「物件」資料類型。
範例:
考慮一個包含四個64 位元的int64 陣列整數和一個包含四個指向三個字串物件的指標的物件陣列:
int64 array: | 1 | 2 | 3 | 4 | object array: | pointer to "hello" | pointer to "world" | pointer to "!" | Visualization: --------- ----------- | int64 | object | |--------- -----------| | 1 | hello | | 2 | world | | 3 | ! | | 4 | null | --------- -----------
在此表示法中,int64 陣列佔用固定的空間量,每個元素為 8 個位元組。另一方面,物件數組儲存指向不同大小的物件的指針,因此是“物件”資料類型。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3