Este documento presenta una guía de herramientas para el análisis de big data, incluyendo lenguajes de programación como R, Python, SQL, Java y Scala, así como bases de datos relacionales y no relacionales. Describe las ventajas y desventajas de cada opción para ayudar a determinar la mejor herramienta para diferentes tipos de análisis de datos.
2. Contenido
Aplicando la ciencia de datos a una organización………………………………………………………………………3
Introducción…………………………………………………………………………………………………………………4
Análisis…………………………………………………………………………………………………………………………5
Lenguaje de Programación……………………………………………………………………………………………6
Base de datos………………………………………………………………………………………………………………7
Tipo de servicio en la nube……………………………………………………………………………………………8
Predicciones y adecuaciones…………………………………………………………………………………………9
Conclusiones……………………………………………………………………………………………………………………………..10
3. Introducción.
Es una Editorial Iztaccíhuatl de Monterrey, S.A. de C.V.
Los lenguajes de programación usados para la ciencia de datos son los
siguientes:
Lanzado en 1995 como descendiente
directo del antiguo lenguaje de
programación S, R se ha ido
fortaleciendo. Escrito en C, Fortran y
en sí mismo, el proyecto cuenta
actualmente con el apoyo de la R
Foundation for Statistical Computing.
Licencia: ¡Gratis!
Ventajas
Excelente gama de paquetes de
código abierto y de alta calidad. R tiene un paquete para casi todas las aplicaciones
cuantitativas y estadísticas imaginables. Esto incluye redes neuronales, regresión no lineal,
filogenia, cartografía, mapas y muchos, muchos otros.
La instalación básica viene con funciones y métodos estadísticos integrales muy completos.
R también maneja el álgebra de matriz particularmente bien.
La visualización de datos es una fortaleza clave con el uso de bibliotecas como ggplot2.
Contras
Rendimiento. R no es un lenguaje rápido. Esto no es un accidente. R fue diseñado a propósito
para facilitarle el análisis de datos y las estadísticas. No fue diseñado para hacer la vida más
fácil para tu computadora. Mientras que R es lento en comparación con otros lenguajes de
programación, para la mayoría de los propósitos, es lo suficientemente rápido.
Especificidad de dominio. R es fantástico para fines estadísticos y científicos de datos. Pero
no es tan fantástico para programaciones de propósito general.
Raro. R tiene algunas características poco frecuentes que pueden atrapar a los programadores
con experiencia en otros idiomas. Por ejemplo: indexación desde 1, utilizando operadores de
asignación múltiple, estructuras de datos no convencionales.
R es un lenguaje poderoso que sobresale en una gran variedad de aplicaciones de
visualización de datos y estadística, y ser de código abierto permite tener una comunidad
muy activa de contribuyentes. Su reciente crecimiento en popularidad es un testimonio de lo
eficaz que es.
4. Guido van Rossum presentó Python en 1991. Desde entonces, se ha convertido en un
lenguaje de uso general extremadamente popular, y se utiliza ampliamente en la comunidad
de data science.
Licencia: ¡Gratis!
Ventajas
Python es un lenguaje de programación de uso general muy popular y general. Cuenta con
una amplia gama de módulos específicos y soporte comunitario. Los principales GIS de
escritorio como ArcGIS (con la ArpPy), QGIS (con PyQGIS) o gvSIG la introducción de
Python.
Python es un lenguaje fácil de aprender. La baja barrera de entrada lo convierte en un primer
idioma, lo que es ideal para aquellos que son nuevos en programación.
Paquetes como pandas, scikit-learn y Tensorflow hacen de Python una opción sólida para
aplicaciones avanzadas de aprendizaje automático.
Contras
Seguridad de tipos: Python es un lenguaje de tipo dinámico, lo que significa que debemos
ser muy cuidadosos. Los errores de tipo (como pasar una string como un argumento a un
método que espera un número entero) deben esperarse de vez en cuando.
Para los fines específicos de análisis estadístico y de datos, la amplia gama de paquetes de R
le da una ligera ventaja sobre Python. Para los lenguajes de propósito general, hay
alternativas más rápidas y seguras que Python.
Veredicto
Python es una muy buena opción de lenguaje para la ciencia de datos, y no solo en el nivel
de entrada. Gran parte del proceso de ciencia de datos gira en torno al proceso ETL
(extracción-transformación-carga). Esto hace que la generalidad de Python encaje
perfectamente. Las librerías como Tensorflow de Google hacen de Python un lenguaje muy
emocionante para el aprendizaje automático (machine learning).
5. SQL («lenguaje de consulta estructurado») define, administra y consulta bases de datos
relacionales. El lenguaje apareció en 1974 y desde entonces ha sufrido muchas
implementaciones, pero los principios básicos siguen siendo los mismos.
Licencia: Varía, ya que algunas implementaciones son gratuitas y otras son propietarias.
Ventajas
Muy eficiente en consultas, actualización y manipulación de bases de datos relacionales.
La sintaxis declarativa hace de SQL un lenguaje muy legible. ¡No hay ambigüedad sobre lo
que de debe hacer
SELECT name FROM users WHERE age > 18
SQL utilizado en una amplia gama de aplicaciones, por lo que es un lenguaje muy útil para
estar familiarizado. Los módulos como SQLAlchemy hacen que la integración de SQL con
otros lenguajes sea sencillo.
Contras
Las capacidades analíticas de SQL son bastante limitadas: más allá de agregar y sumar,
contar y promediar datos, sus opciones son limitadas.
Para los programadores que vienen de un contexto imperativo, la sintaxis declarativa de
SQL puede presentar una curva de aprendizaje.
Hay muchas implementaciones de SQL como PostgreSQL, SQLite, MariaDB. Todas son lo
suficientemente diferentes como para hacer que la interoperabilidad sea un dolor de
cabeza.
Veredicto
SQL es más útil como lenguaje de procesamiento de datos que como herramienta analítica
avanzada. Sin embargo, gran parte del proceso de la ciencia de la información depende de
6. ETL, y la longevidad y la eficiencia de SQL son una prueba de que es un lenguaje muy útil
para el científico de datos moderno.
Java es un lenguaje extremadamente popular que se
ejecuta en la Máquina Virtual Java (JVM). Es un
sistema informático abstracto que permite una
portabilidad perfecta entre plataformas.
Actualmente respaldado por Oracle Corporation.
Licencia: ¡Gratis! Versiones heredadas, propietarias.
Ventajas
Ubicuidad. Muchos sistemas y aplicaciones
modernas se basan en un back-end de Java. La
capacidad de integrar métodos de ciencia de datos
directamente en la base de código existente es poderosa.
Fuertemente tipado. Java es un buen lenguaje cuando se trata de garantizar la seguridad
de tipos. Para aplicaciones de big data de misión crítica, esto es muy importante.
Java es un lenguaje compilado de propósito general y alto rendimiento. Lo que lo hace
adecuado para escribir eficientes códigos de producción ETL y algoritmos de machine
learning muy intensivos computacionalmente.
Contras
Para análisis ad-hoc y aplicaciones estadísticas más dedicadas, la verbosidad de Java hace
que sea una primera opción poco probable. Los lenguajes de script de tipado dinámico
como R y Python se prestan a una productividad mucho mayor.
En comparación con los lenguajes específicos de dominio como R, no dispone de muchas
librerías disponibles para métodos estadísticos avanzados.
Veredicto
Hay mucho que decir para aprender Java como un lenguaje de ciencia de datos de primera
elección. Muchas compañías apreciarán la capacidad de poder integrar el código de
producción de ciencia de datos directamente en la base de un código ya existente, y además
encontramos que el rendimiento de Java y la seguridad de tipos son muy ventajosos.
Sin embargo, no dispone de una variedad de paquetes específicos de estadísticas. Dicho
esto, se trata de un lenguaje a considerar, especialmente si ya conoces R y/o Python.
7. Desarrollado por Martin Odersky y lanzado en 2004,
Scala es un lenguaje que se ejecuta en la Máquina Virtual
Java (JVM). Es un lenguaje de múlti paradigmático, que
permite tanto enfoques orientados a objetos como
funcionales. El framework de computación de cluster
Apache Spark está escrito en Scala.
Licencia: ¡Gratis!
Ventajas
Scala + Spark = Computación en clúster de alto rendimiento. Scala es un lenguaje ideal para
quienes trabajan con conjuntos de datos de gran volumen.
Multi-paradigmático: los programadores de Scala pueden tener lo mejor de ambos mundos.
Tanto la programación orientada a objetos como funcional.
Scala se compila en el bytecode de Java y se ejecuta en una JVM. Esto permite la
interoperabilidad con el lenguaje Java en sí, haciendo de Scala un lenguaje de propósito
general muy poderoso, además de ser adecuado para la ciencia de datos.
Contras
Scala no es un lenguaje sencillo para comenzar a utilizar si está empezando. Lo mejor es
descargar sbt y configurar un IDE como Eclipse o IntelliJ con un complemento específico de
Scala.
La sintaxis y el sistema de tipos se describen con frecuencia como complejos. Esto hace que
la curva de aprendizaje sea pronunciada para aquellos que vienen de lenguajes dinámicos
como Python.
Veredicto
Cuando se trata de usar la computación en clúster para trabajar con Big Data, Scala + Spark
son soluciones fantásticas. Si tienes experiencia con Java y otros lenguajes de tipado estático,
también apreciarás las características de Scala.
Sin embargo, si tu aplicación no maneja los volúmenes de datos que justifiquen la
complejidad agregada de Scala, es probable que tu productividad sea mucho mayor al usar
otros idiomas, como R o Python.
8. Lanzada en 2011, Julia impresionó al mundo de la computación numérica. Su perfil se elevó
gracias a la adopción temprana por parte de varias organizaciones importantes, incluidas
muchas de la industria financiera.
Licencia: ¡Gratis!
Ventajas
Julia es un lenguaje compilado JIT (‘just-in-time‘), que le permite ofrecer un buen
rendimiento. También ofrece las capacidades de simplicidad, tipado dinámico y scripting de
un lenguaje interpretado como Python.
Julia fue diseñada específicamente para el análisis numérico. Pero también ofrece
programación de propósitos generales.
Legibilidad. Muchos usuarios del lenguaje mencionan ésto como una ventaja clave.
Contras
Madurez. Como nuevo idioma, algunos usuarios de Julia han experimentado inestabilidad al
usar paquetes complementarios. Pero el núcleo del lenguaje es, al parecer, lo suficientemente
estable para usar en producción.
Los paquetes limitados son otra consecuencia de la juventud del lenguaje y de la pequeña
comunidad de desarrollo. A diferencia de R y Python, Julia no tiene la posibilidad de disponer
de paquetes (todavía).
Veredicto
El principal problema de Julia es su juventud. Como lenguaje reciente, no es tan maduro
como sus principales alternativas: Python y R.
Si estás dispuesto a ser paciente, hay muchas razones para prestarle atención, estaremos
atentos de ver cómo evoluciona en los próximos años.
9. MATLAB es un lenguaje de computación numérica
que se utiliza en el mundo académico y en la industria.
Desarrollado y licenciado por MathWorks, una
compañía establecida en 1984 para comercializar el
software.
Licencia: Propietario – los precios varían dependiendo
del caso.
Ventajas
Diseñado para la computación numérica. MATLAB es adecuado para aplicaciones
cuantitativas con requisitos matemáticos sofisticados, como procesamiento de señales,
transformaciones Fourier, álgebra matricial y procesamiento de imágenes.
Visualización de datos. MATLAB tiene incorporadas grandes capacidades de ploteado.
MATLAB se enseña con frecuencia como parte de cursos de pregrado en asignaturas
cuantitativas como Física, Ingeniería y Matemáticas Aplicadas. Como consecuencia, es
ámpliamente utilizado en estos campos.
Contras
Licencia propietaria. Dependiendo del caso (uso académico, personal o empresarial) es
posible que tengamos que desembolsar una gran cantidad de dinero. Existen alternativas
gratuitas disponibles como Octave.
MATLAB no es una opción obvia para programación de propósito general.
Veredicto
El uso generalizado de MATLAB en una variedad de campos cuantitativos y numéricos tanto
en la industria como en el mundo académico, lo convierte en una opción seria para la ciencia
de datos.
Un caso de uso claro sería aquel en el que tu aplicación requiera una funcionalidad
matemática intensiva y avanzada. De hecho, MATLAB fue diseñado específicamente para
esto.
10. El espacio para entregar la práctica individual está ubicado en el subtema 3.2 del Tema 3.
1. Formato del entregable: Entregar un documento en Word o PDF a manera de un reporte
técnico; que deberá incluir; un índice y conclusiones.
2. Características: El documento deberá contestar las siguientes preguntas:
¿Qué lenguaje de programación para ciencia de datos utilizaría para
realizar el análisis de datos de la Librería Iztaccíhuatl?
Bueno, hemos visto una guía rápida sobre qué idiomas considerar para la ciencia de datos.
La clave aquí es comprender los requisitos de uso en términos de generalidad frente a
especificidad, así como tu estilo de desarrollo preferido de rendimiento frente a
productividad.
Para un técnico GIS que quiera comenzar a realizar ciencia de datos, lo ideal es utilizar R,
Python o SQL. Ya que las funciones más comunes serán desarrollar procesos de datos
existentes y procesos ETL. Estos lenguajes proporcionan un equilibrio adecuado entre
generalidad y productividad, con la opción de utilizar paquetes de estadísticas más avanzados
de R cuando sea necesario.
Si tienes experiencia con Java, quizá desees utilizar Scala para grandes datos. O, tal vez, estés
interesado en involucrarte en el proyecto Julia.
11. Bases de Datos relacionales
Son una colección de elementos de datos organizados en un conjunto de tablas formalmente
descritas, desde donde se puede acceder a los datos o volver a montarlos de muchas maneras
diferentes sin tener que reorganizar las tablas de la base. La interfaz estándar de programa de
usuario y aplicación a una base de datos relacional, es el Lenguaje de Consultas Estructuradas
(SQL). Los comandos SQL se utilizan tanto para consultas interactivas como para obtener
información de una base de datos relacional y la recopilación de datos para informes.
Las bases de datos relacionales se basan en la organización de la información en partes
pequeñas que se integran mediante identificadores; a diferencia de las bases de datos no
relacionales que, como su nombre lo indica, no tienen un identificador que sirva para
relacionar dos o más conjuntos de datos. Además, son más robustas, es decir, tienen mayor
capacidad de almacenamiento, y son menos vulnerables ante fallas, estas son sus principales
características.
Bases de datos no relacionales
Están diseñadas específicamente para modelos de datos específicos y tienen esquemas
flexibles para crear aplicaciones modernas. Son ampliamente reconocidas porque son fáciles
de desarrollar, tanto en funcionalidad como en rendimiento a escala. Usan una variedad de
modelos de datos, que incluyen documentos, gráficos, clave-valor, en-memoria y búsqueda.
Las bases de datos no relacionales (No SQL) son las que, a diferencia de las relacionales, no
tienen un identificador que sirva de relación entre un conjunto de datos y otros. Como
veremos, la información se organiza normalmente mediante documentos y es muy útil
cuando no tenemos un esquema exacto de lo que se va a almacenar.
Con relación a formatos, la información de una base de datos puede ser almacenada en tablas
o documentos. Cuando los datos son organizados en un archivo de Excel, es en formato tabla,
pero cuando simplemente son datos escritos como cartas, fórmulas o recetas, son datos en
formato documento. Esto aplica para los dos tipos de bases de datos.
Habitualmente los datos almacenados en tablas son bases de datos relacionales, porque existe
la posibilidad de enlazar los datos de una tabla con los de otra y los datos almacenados en
documentos son no relacionales, aunque no siempre tiene que ser así. Por ejemplo, los datos
de una tabla pueden ser transcritos a un documento, todo depende del punto de vista y la
necesidad del problema que se vaya enfrentar.
12. Para ilustrar una de las diferencias entre bases de datos SQL y NOSQL, vamos a dar un
ejemplo. Imaginemos por un momento una ciudad como Medellín (Colombia), donde todas
las personas hablan el mismo idioma, por tanto, es la única forma de que todos los residentes
se comuniquen e interactúen. Si se cambia ese idioma se perjudican todos los residentes.
Las bases de datos relacionales utilizan un lenguaje de consulta estructurado para la
manipulación de datos, estas se conforman por filas, columnas y registros y se almacenan por
tablas. Para manipular los datos en SQL, se requiere primero determinar la estructura de
estos, si se cambia la estructura de uno de los datos, puede perjudicar todo el sistema, ya que
las tablas están relacionadas.
Ahora imaginemos otra ciudad como Bogotá (Colombia) y pensemos hipotéticamente que
en cada uno de los hogares se habla un idioma diferente, todos interactúan distinto y no hay
entendimiento entre todos, pero nadie afecta a nadie. Las bases de datos no relacionales
tienen un esquema dinámico, no se requiere la estructura de los datos para su manipulación.
Los datos se pueden almacenar de cualquier manera, columnas, documentos, gráficos, etc, y
cada documento puede tener su propia estructura, sin afectar los demás, puede agregar más
campos a medida que se avanza. Están conformadas por documentos, campos y datos del
documento, además, se almacenan por colecciones.
¿Cuándo utilizar SQL o NOSQL?
13. ¿Qué predicciones se podrían obtener de los datos de la Librería
Iztaccíhuatl?
Datos relativamente exactos con el uso de base de datos relacionales; porque al
ser parte de la ciudad de México sería más datos relacionales, pero puede existir
otra base de datos no relacional para los extranjeros que visiten dicha parte de
nueva león ciudad de México.
¿Qué adecuaciones se podría hacer a los datos de la Librería Iztaccíhuatl
para poder realizar un análisis predictivo?
Valores un tanto exactos y valores comunes.
¿Qué tipo de servicio de la nube podría contratar la Librería Iztaccíhuatl
para alojar la información y el proyecto de ciencia de datos?
1. Dropbox
Cuenta con un plan que se llama Basic, con 2GB de espacio, que permite el
almacenamiento, sincronización, acceso de fotos, videos, presentaciones y otros documentos
en distintos dispositivos, carpetas y vínculos compartidos.
2. Claro drive
Incluye 25GB de almacenamiento sin costo para clientes de planes móviles postpago
y servicios fijos de Claro, para que puedan subir a la nube fotos, música, videos o
presentaciones del colegio, universidad o trabajo.
Quienes quieran acceder solamente deberán ingresar a la página www.clarodrive.com desde
el móvil Claro o el computador o descargar la aplicación Claro drive. De acuerdo con
Rodrigo de Gusmao, director ejecutivo Unidad Mercado Masivo de Claro Colombia, “por
ejemplo, con este servicio gratuito de 25GB se tiene una capacidad, aproximadamente, para
5.689 fotos, más de 5.000 canciones, 350 mil documentos, o hasta 20 películas”.
3. Google Drive
Con la cuenta de Google, los primeros 15GB de espacio de almacenamiento son
gratuitos. Se puede acceder a los archivos de Drive desde cualquier Smartphone, tableta o
computador.
14. 4. Microsoft OneDrive
OneDrive Básico de 5 GB. Entre sus principales opciones se encuentra que permite
edita y anotar en Office Docs. y PDF, incluso en el teléfono móvil, funciona en PC y Mac.
5. Amazon Drive
Las personas con una cuenta de Amazon reciben 5 GB de almacenamiento gratuito
en Amazon Drive compartido con Amazon Photos, el cual permite compartir archivos así
como copias de seguridad las fotos, organizarlas y compartirlas desde el teléfono, el
computador y otros dispositivos.
Principales beneficios de estos sistemas de almacenamiento
1. Facilidad de acceso: únicamente necesitas de una conexión a Internet para acceder
desde cualquier dispositivo y lugar a sus archivos.
2. Fáciles de usar: están diseñados para que cualquier persona pueda utilizarlos,
incluso para que de forma automática realicen copias de seguridad.
3. No toca preocuparse por nada: las empresas que ofrecen estos servicios en la nube
realizan el mantenimiento, las actualizaciones de software e invierten en
infraestructura, de forma transparente para el usuario.
4. Los archivos corren menor riesgo de desaparecer: prácticamente la totalidad de
servicios en la nube disponen de réplicas. Así, en el hipotético caso que se estropeará
o destruyera el centro de procesamientos de datos, no pasaría nada.
5. Permiten un ahorro económico: todos los costos asociados a estas plataformas
(servidores, mantenimiento o consumo eléctrico) se dividen entre los usuarios de
servicios 'Premium’. Por lo general, las opciones gratuitas solo entregan algunos
cuantos GB de capacidad, por lo que, si una persona o una empresa requiere mayor
espacio, paga un adicional por obtenerlo.
15. Conclusión.
Para el almacenamiento y el acceso a datos dentro de las herramientas de
análisis del big data podemos usar una gran cantidad de software para la correcta
organización de la empresa y una gestión adecuada de los datos almacenados,
siendo así de esa forma para tener los datos limpios y no exista una ambigüedad
de los datos no estructurados correctamente y así ayudar a las empresas a
incrementar ventas y costos de los precios en sus productos.
Bibliografía.
https://www2.claro.com.co/institucional/almacenamiento-en-la-nube-
gratuito/
https://www.pragma.com.co/academia/lecciones/bases-de-datos-
relacionales-vs.-no-relacionales
https://aws.amazon.com/es/free/database/?trk=5aaec45f-6ce1-4aaf-
99c6-
fc03e9bbf5ea&sc_channel=ps&s_kwcid=AL!4422!3!590500114783!p!
!g!!base%20de%20datos%20nosql&ef_id=EAIaIQobChMIvvaj8Nzh_
AIVIYBaBR0WUA7zEAAYASAAEgKZUPD_BwE:G:s&s_kwcid=A
L!4422!3!590500114783!p!!g!!base%20de%20datos%20nosql
https://mappinggis.com/2019/07/lenguajes-de-programacion-para-
realizar-ciencia-de-
datos/#:~:text=Para%20un%20t%C3%A9cnico%20GIS%20que,utilizar
%20R%2C%20Python%20o%20SQL.