Bastante bueno el marco teórico del curso hasta ahora. Por si alguien gusta, les dejo los apuntes del curso:
<h1>Curso de Ingeniería de Datos con Python</h1>¿Que es la Ciencia e Ingenieria de Datos?
La Ciencia de Datos es la disciplina que se encarga de extraer conocimiento de los datos disponibles. Casi siempre cuando te realizas una pregunta sobre datos estas fuentes se encuentra escondidas, ocultas o de difícil acceso. A nuestro alrededor hay datos en tu computadora, mesa, reloj, etc.
Los datos están por todas partes.
La Ciencia de datos es multidisciplinaria. A diferencia de muchos otros ámbitos profesionales dentro del mundo de la tecnología, cuando hablamos de un científico de datos es una persona que sabe de matemáticas, ingeniería de software y sabe de negocios.
Se apoya en la Computer science, Matemáticas(Regresiones e Inferencias),
También se auxilia de:
- Bases de Datos
- SQL y NoSQL
- Análisis de texto y procesamiento de lenguaje natural
- Análisis de redes
- Visualización de datos
- Machine learning e Inteligencia Artificial
- Análisis de señales digitales
- Análisis de datos en la nube(Big Data)
Roles
Existen por lo menos tres diferentes roles para tener un pipeline completo de ciencia de datos. Este curso trata sobre el primer rol:
-
Data engineer
- Se encarga de obtener los datos
- Limpiarlos y estructurarlos para posterior análisis
- Crear pipelines de análisis automatizado
- Utilización de herramientas en la nube
- Análisis descriptivo de los datos.
-
Data scientist
- Una vez tiene los datos se encarga de generar el análisis matemático de ellos
- Encuentra las relaciones entre las variables, las correlaciones, las causas
- Genera los modelos predictivos y prescriptivos.
-
Machine Learning engineer
- Se encarga de llevar las predicciones a escala
- Subirlos a la nube
- En la nube, generar muchas predicciones
- Se encarga de mantener la calidad del modelo.
Configuración del ambiente
Anaconda es una instalación de Python que ya trae preinstalado todos los paquetes necesarios para tu labor en la Ciencia de Datos, tiene más de 1400 paquetes. Nos permite configurar ambientes virtuales para poder utilizar diferentes versiones de nuestros paquetes.
conda --version # para conocer la versión y saber que lo tenemos instalado
conda --help # nos da todos los comandos que podemos usar.
conda list # nos lista todos los paquetes que Anaconda instaló.
Una buena práctica es generar un ambiente virtual por cada proyecto, los ambientes virtuales nos permiten generar varios proyectos con diferentes versiones de la librería sin generarnos errores de compatibilidad. Tradicionalmente en Python se utiliza virtualenv
.
conda create --name [nombre-del-proyecto] [librerías-a-usar]
conda create --name platzi-data beautifulsoup4 requests numpy pandas matplotlib yaml
source activate platzi-data # Para activar
source deactivate # Para salir
conda env list # nos muestra los ambientes virtuales que tenemos
conda remove --name [nombre-del-proyecto] --all # eliminar nuestro entorno virtual con todos nuestros paquetes
Jupyter Notebook
Algo interesante que tenemos con Anaconda es que nos trae Jupyter Notebooks.
Jupyter Notebooks es un entorno de programación en el cual podemos mezclar ejecución de código en vivo, visualizaciones y añadir markdown.
Para inicializar nuestro servidor de jupyter, escribimos en el command line: jupyter notebook
.
Jupyter Notebook tiene diferentes tipos de celdas en las cuales podemos escribir código o markdown. Si queremos ejecutar nuestro código hacemos ctrl + enter
y si queremos ejecutar y añadir una nueva celda shift + enter
.
Jupyter Notebook tiene dos modalidades, la modalidad de edición y navegación.
Tipos de datos
Los datos vienen en mucha formas y estas formas las podemos clasificar de diferentes maneras, permitiéndonos poder aplicar técnicas distintas a cada uno de los tipos de datos.
Los primeros datos son los primitivos.
- int,
- str,
- bool,
- float,
- hex,
- oct,
- datetime,
- objetos especiales
from datetime import datetime
integer_type = 42
float_type = 3.14159
bool_type = False
hex_type = 0xff
oct_type = 0o23
today = datetime.now()
str_type = 'Jesus'
Tenemos clasificaciones ulteriores como:
- Los datos estructurados: son los más fáciles de acceder
- Bases de datos
- Data warehouses
- Semi estructurados: son con los que podemos utilizar APIs
- json API
- Datos tabulares (csv, excel)
- no estructurados: la mayoría de datos que vamos a tener disponibles están clasificados aquí
- HTML
- Texto libre
- Currículums vitae
- Imágenes, audio, social media
- Datos científicos
- Cualitativos vs cuantitativos
- Tiempo real vs históricos
Fuentes de datos
- Web
Es una mina enorme con datos financieros, de startups, del clima, precipitación fluvial, astronómicos, de negocios, etc.
- APIs
Endpoints que viven en la web y nos devuelven JSON. Por ejemplo, la API de twitter, google, facebook.
- User Analytics
Son el comportamiento del usuario dentro de nuestra aplicaciones, algo similiar a los que nos ofrece Google Analytics.
- IoT
Se ha vuelto una mina espectacular en los últimos años. Como automóviles.
<h3>Links de fuentes de datos</h3>- El Pais
- Google Cloud Platform
- Datos Abiertos de México
- Dataset Search by Google
- Data Catalog for Analysis
- Kaggle, for Data Science
ETL (Extract Transform Load)
Extract: Es el proceso de lectura de datos de diversas fuentes
- Base de datos
- CRM
- Archivos CSV
- Datasets públicos
Transform: En este momento cuando nosotros tenemos que transformar los datos, tenemos que identificar datos faltantes o datos erróneos o una edad negativa. En esta etapa donde tenemos que identificar todos los problemas y solucionarlos.
- Limpieza
- Estructurado
- Enriquecimiento.
Load: Una vez transformados debemos insertarlos en el data warehouse
- Depende del tipo de solución que se haya escogido
En caso que quieran la versión de Markdown para descargar, pueden tomarla de aquí
Saludos 👋
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.