SciRuby / daru

Versión de GemEstado de compilaciónGitterAyudantes de código abierto

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

init0

Carga de datos desde archivos CSV.

df = Daru::DataFrame.from_csv('TradeoffData.csv')

init1

Manipulación básica de datos

Selección de filas.

data_frame.row

man0

Selección de columnas.

data_frame

man1

Un rango de filas.

data_frame.row

man2

Las 2 primeras filas.

data_frame.first(2)

man3

Las 2 últimas filas.

data_frame.last(2)

man4

Añadir una nueva columna.

data_frame = 

man5

Creando una nueva columna basada en los datos de otras columnas.

data_frame = data_frame - data_frame

man6

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))

con0

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)) ))

con1

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

plot0

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.

Deja un comentario