Mengapa String dalam DataFrame Disimpan sebagai Objek?
Walaupun secara eksplisit menukar lajur DataFrame yang mengandungi rentetan kepada jenis data rentetan, perpustakaan Pandas Python masih boleh melaporkannya sebagai objek. Percanggahan ini timbul disebabkan oleh struktur data asas NumPy.
NumPy menggunakan ndarray untuk menyimpan tatasusunan data, dengan setiap elemen dalam ndarray mempunyai bilangan bait yang tetap. Untuk integer (int64) dan nombor terapung (float64), setiap elemen menduduki 8 bait. Walau bagaimanapun, rentetan mempunyai panjang berubah-ubah, menjadikannya tidak praktikal untuk menyimpannya secara terus dalam ndarray.
Untuk menampung ini, Pandas menggunakan ndarray objek untuk menyimpan penunjuk kepada objek. Objek ini mengandungi nilai rentetan sebenar. Akibatnya, objek ndarray mempunyai saiz tidak tentu dan diwakili sebagai jenis data "objek".
Contoh:
Pertimbangkan tatasusunan int64 yang mengandungi empat 64-bit integer dan tatasusunan objek yang mengandungi empat penuding kepada tiga objek rentetan:
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 | +---------+-----------+
Dalam perwakilan ini, tatasusunan int64 menduduki jumlah ruang yang tetap, dengan setiap elemen ialah 8 bait. Sebaliknya, tatasusunan objek menyimpan penunjuk kepada objek dengan saiz yang berbeza-beza, oleh itu jenis data "objek".
Atas ialah kandungan terperinci Mengapa Rentetan dalam Pandas DataFrames Muncul sebagai Objek Walaupun Selepas Penukaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!