¿Por qué las cadenas en un DataFrame se almacenan como objetos?
A pesar de convertir explícitamente las columnas del DataFrame que contienen cadenas al tipo de datos de cadena, la biblioteca Pandas de Python todavía puede reportarlos como objetos. Esta discrepancia surge debido a las estructuras de datos subyacentes de NumPy.
NumPy usa ndarrays para almacenar matrices de datos, y cada elemento de un ndarray tiene un número fijo de bytes. Para números enteros (int64) y números de punto flotante (float64), cada elemento ocupa 8 bytes. Sin embargo, las cadenas tienen longitudes variables, lo que hace que no sea práctico almacenarlas directamente en un ndarray.
Para adaptarse a esto, Pandas utiliza ndarrays de objetos para almacenar punteros a objetos. Estos objetos contienen los valores de cadena reales. Como resultado, los ndarrays de objeto tienen un tamaño indeterminado y se representan como el tipo de datos "objeto".
Ejemplo:
Considere una matriz int64 que contiene cuatro archivos de 64 bits. enteros y una matriz de objetos que contiene cuatro punteros a tres objetos de cadena:
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 | --------- -----------
En esta representación, la matriz int64 ocupa una cantidad fija de espacio, y cada elemento tiene 8 bytes. Por otro lado, la matriz de objetos almacena punteros a objetos de distintos tamaños, de ahí el tipo de datos "objeto".
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3