Introducción
daru (Análisis de datos en RUby) es una librería para el almacenamiento, análisis, manipulación y visualización de datos en Ruby.
daru hace fácil e intuitivo el procesamiento de datos predominantemente a través de 2 estructuras de datos:Daru::DataFrame
y Daru::Vector
. Escrito en Ruby puro funciona con todas las implementaciones de ruby.Probado con MRI 2.5.1 y 2.7.1.
daru plugin gems
- daru-view
daru-view es para el trazado fácil e interactivo en la aplicación web & IRubynotebook. Puede funcionar en cualquier marco de aplicación web de Ruby como Rails, Sinatra, Nanoc y espero que en otros también.
Artículos/Blogs, que resumen potentes características de daru-view:
- GSoC 2017 daru-view
- Informe de progreso de GSoC 2018
- HighCharts Entrada del blog oficial con respecto a daru-view
- daru-io
Esta gema extiende el soporte para muchos métodos de importación y exportación de Daru::DataFrame
. Esta gema pretende ayudar a los Rubyistas que se dedican al Análisis de Datos o al Desarrollo Web, sirviendo como una biblioteca de conversión de propósito general que toma la entrada en un formato (digamos, JSON) y la convierte en otro formato (digamos, Avro) mientras que también hace que sea increíblemente fácil empezar a analizar datos con daru. Uno puede leer más en SciRuby/blog/daru-io.
Características
- Estructuras de datos:
- Vector – Un vector básico 1-D.
- DataFrame – Una estructura 2-D similar a una hoja de cálculo para manipular y almacenar conjuntos de datos. Esta es la estructura de datos principal de Daru.
- Compatible con IRuby notebook, statsample, statsample-glm y statsample-timeseries.
- Soporte para series temporales.
- Estructuras de datos indexadas de forma sencilla y jerárquica.
- Flexible e intuitiva API para manipulación y análisis de datos.
- Fácil trazado, estadística y aritmética.
- Los iteradores abundantes.
- Opción de velocidad y optimización de espacio en MRI con NMatrix y GSL.
- Fácil división, agregación y agrupación de datos.
- Reducción rápida de datos con tablas pivote para el resumen rápido de datos.
- Importación y exportación de datos desde y hacia Excel, CSV, bases de datos SQL, ActiveRecord y archivos de texto plano.
Instalación
$ gem install daru
Cuadernos
Cuadernos sobre la mayoría de los casos de uso
- Resumen de la mayoría de las funciones de Daru
- Creación básica de Vectores y DataFrame
- Uso detallado de Daru::Vector
- Uso detallado de Daru::DataFrame
- Búsqueda y combinación de datos en daru
- Grupación, división y pivoteo de datos
- Uso de datos categóricos
Visualización
- Visualización de datos con Daru::DataFrame
- Visualización con Nyaplot
- Visualización con GnuplotRB
- Visualización de vectores con Gruff
- Visualización de DataFrame con Gruff
Cuadernos de series temporales
- Series temporales básicas
- Análisis y trazado de series temporales
Cuadernos sobre indexación
- Indexación en vector
- Indexación en DataFrame
Casos prácticos
- Análisis de regresión logística con daru y statsample-glm
- Búsqueda y trazado de los artistas más escuchados de un conjunto de datos de Last.fm
- Análisis de nombres de bebés con daru
- Ejemplo de uso de datos categóricos
- Ejemplo de uso de índice categórico
Posts del blog
- Análisis de datos en RUby: Manipulación y trazado básico de datos
- Análisis de datos en RUby: Dividir, ordenar, agregación de datos y tipos de datos
- Búsqueda y combinación de datos en daru
- Introducción al análisis de conjuntos de datos con la biblioteca daru
Series temporales
- Análisis de series temporales en daru
- Date Desplazamientos en Daru
Datos categóricos
- Índice categórico
- Datos categóricos
- Visualización con datos categóricos
Uso básico
daru expone dos estructuras de datos principales: DataFrame
y Vector
. El Vector es una estructura básica 1-D correspondiente a un Array etiquetado, mientras que el DataFrame
– la estructura de datos principal de daru – es una estructura 2-D tipo hoja de cálculo para manipular y almacenar conjuntos de datos.
Inicialización básica de DataFrame.
data_frame = Daru::DataFrame.new( { 'Beer' => , 'Gallons sold' => }, index: )data_frame
Carga de datos desde archivos CSV.
df = Daru::DataFrame.from_csv('TradeoffData.csv')
Manipulación básica de datos
Selección de filas.
data_frame.row
Selección de columnas.
data_frame
Un rango de filas.
data_frame.row
Las 2 primeras filas.
data_frame.first(2)
Las 2 últimas filas.
data_frame.last(2)
Añadir una nueva columna.
data_frame =
Creando una nueva columna basada en los datos de otras columnas.
data_frame = data_frame - data_frame
Selección basada en condiciones
Seleccionando países en base al número de galones vendidos en cada uno. Utilizamos una sintaxis similar a la definida por Arel, es decir, utilizando la cláusula where
.
data_frame.where(data_frame.lt(300))
Puede pasar una combinación de operaciones booleanas en el método #where
y debería funcionar bien:
data_frame.where( data_frame .in() .and( data_frame.gt(520).or(data_frame.lt(250)) ))
Planificación
Daru soporta el trazado de gráficos interactivos con nyaplot. Puede crear fácilmente un gráfico con el método #plot
. Aquí trazamos los galones vendidos en el eje Y y el nombre de la marca en el eje X en un gráfico de barras.
data_frame.plot type: :bar, x: 'Beer', y: 'Gallons sold' do |plot, diagram| plot.x_label "Beer" plot.y_label "Gallons Sold" plot.yrange plot.width 500 plot.height 400end
Además de nyaplot, daru también soporta el trazado fuera de la caja con gnuplotrb.
Documentación
Los documentos se pueden encontrar aquí.
Contribuyendo
¡Elige una característica de la hoja de ruta o del rastreador de problemas o piensa en las tuyas propias y envíame un Pull Request!
Para más detalles consulta CONTRIBUIR.
Agradecimientos
- Google y la Ruby Science Foundation por la beca Google Summer of Code 2016 para las mejoras de velocidad y la implementación del soporte para datos categóricos. Un agradecimiento especial a @lokeshh, @zverok y @agisga por sus esfuerzos.
- Google y la Ruby Science Foundation por la beca Google Summer of Code 2015 para seguir desarrollando daru e integrarlo con otras gemas de rubí.
- Gracias a last.fm por hacer accesibles al público los datos de los usuarios.