¿Cuál es la diferencia entre data.frame y data.table en R (lenguaje de programación)?

Asumiré que ya está familiarizado con lo que es un data.frame: una lista de vectores de la misma longitud, con algunos atributos adicionales, como los nombres de columna.

data.table es un paquete mantenido por Matt Dowle cuyo objetivo es lograr varios objetivos:

  1. Permitir que las columnas sean asignadas o modificadas por referencia.
  2. Permita que las tablas de datos se agreguen o resuman rápidamente usando claves.
  3. Cree un marco para la sintaxis que sea más fácil de leer, que genere menos repeticiones y menos errores.

Para una introducción formal al paquete, recomiendo echar un vistazo a la siguiente fuente.


Para un avance rápido, aquí hay un buen ejemplo que señala cuánto mejor data.table es cuando se trata de administrar la memoria. Desafortunadamente, la base R es notoriamente mala a este respecto. Tome el siguiente ejemplo:

  ### Crear un marco de datos de juguete.
 data <- data.frame (x = 1:10)

 ### Rastree la dirección de memoria a la que R asigna nuestros datos.
 tracemem (datos)

 ### Agregar una columna da como resultado 3 copias en mi cuadro de Linux.
 datos $ y  0x1b14a78]: 
   # tracemem [0x1b14a78 -> 0x1b189f8]: $ <-. data.frame $  0x1b188d8]: $ <-. data.frame $ <- 

Dado que R contiene todo en RAM, este tipo de comportamiento puede ser paralizante cuando se computa con archivos de datos más grandes. Incluso algo tan simple como cambiar los nombres de un `data.frame` puede conducir al abuso de la memoria:

  tracemem (datos)
 nombres (datos)  0xb0a648]: 
   # tracemem [0xb0a648 -> 0xb0a680]: 

Imagine tener un archivo de datos de 10 GB en la memoria. Es una broma considerar que cambiar un nombre de variable debería hacer que se copie un objeto de 10 GB. data.table esto al proporcionar una sintaxis que nos permite modificar objetos por referencia.

  ### Cree un objeto data.table.
 require (data.table)
 data <- data.table (data)

 ### Repite nuestro experimento.
 tracemem (datos)
 nombres de conjunto (datos, 'alfa', 'beta')
 datos [, z: = sin (1:10)]

Observe que al usar la función setnames y el operador de asignación := que proporciona data.table , nuestro objeto no se copia innecesariamente. Esto se vuelve muy importante cuando se trata de conjuntos de datos más grandes.


Por estas razones y muchas más, ahora me encuentro solo usando data.table . Incluso para conjuntos de datos más pequeños, encuentro que la sintaxis es mucho más limpia y flexible.

Data.frame es esencialmente la forma predeterminada de R de crear una matriz que contiene datos. Data.table le permite crear estructuras de datos más específicas para mantener sus datos. En las etapas de principiante, probablemente pueda seguir con Data.frame. He realizado una cantidad decente de programación en R y todavía tengo que usar data.table.

Data.table es una herencia de marcos de datos. Debido a que se implementa en C, mejora la velocidad de muchas funcionalidades como indexación, unión, agrupación, etc.

More Interesting

¿Cuál es la forma de explorar mis datos más fácilmente?

¿Qué son pasantías geniales orientadas a datos que no requieren un fondo intensivo de codificación?

¿En qué orden deben realizarse estas operaciones de ciencia de datos: munging, limpieza, escalado, transformaciones y modelado?

Soy un estudiante de biología / psicología, pero quiero entrar en ciencia de datos y aprendizaje automático. Soy un senior, así que no estoy en condiciones de volver a declarar mi especialidad. ¿Cuál sería una buena pista para mí aprender sobre ciencia de datos y programación, y eventualmente conseguir un trabajo en investigación / programación?

¿Cuáles son los beneficios de la capacitación en línea Big DATA en H2kinfosys?

¿Cuáles son las razones por las que Pandas aún no puede convertirse en el kit de herramientas más poderoso para el análisis de datos?

¿Cuáles son las principales herramientas de visualización de datos?

¿Cuáles son algunos buenos libros que tratan sobre ciencia de datos usando Python? ¿Qué versión de python es más adecuada para ello?

¿Cuál es la diferencia entre hacer ciencia de datos en Google, Amazon y WalmartLabs y hacerlo en Mu Sigma, Accenture y Opera Solutions?

¿Cuáles son algunos ejemplos de hermosos diagramas de red?

¿Qué son los momentos en las estadísticas? ¿Qué nos proporcionan sobre la distribución de datos?

¿Qué significa un modelo en analítica y aprendizaje automático?

¿Qué opinas de los programas de maestría ofrecidos por Data Science Tech Institute (París)?

¿Cómo puede una persona con conocimientos básicos de ciencia de datos no CS en 2 años?

¿Cuándo los vecinos más cercanos clasificador \ regresión fallarían miserablemente?