90

Platzi Data Challenge

45022Puntos

hace 4 años

Súmate al reto Platzi Data Challenge y comienza tu camino en el mundo de los datos. Tendrás un premio sorpresa según el nivel de cada reto.

Cada lunes durante el mes de agosto estaré publicando un reto semanal relacionado con el área de Data Engineer, es decir, desde la obtención hasta la limpieza de datos y como añadido, analítica para responder preguntas basadas en datos. En este blog, agregaré un poco de código explicativo el cual te será útil para resolver los retos, de tal forma que si te llegas a perder o bloquear mientras desarrollas la solución, solo debes regresar aquí.

¡Hola! Me llamo Osmandi, y soy parte del equipo de Data Science de Platzi. El motivo de este blog es proponerte una serie de retos que te ayudarán a mejorar tus skills como científico de datos.

En todos los ejemplos usaremos Python 3.8 y la terminal de Linux. Si usas Windows, puedes implementar WSL y en Mac no deberías tener inconvenientes en la terminal.

Se dará como completado el reto cuando hayas aprobado el curso de la semana y resuelto el reto. Ah claro, me ayudarías mucho difundiendo que iniciaste este reto en tus redes con #PlatziDataChallenge para de esta forma saber cuántos estudiantes han decidido unirse a esta aventura 💪

Clase 1: Primeros pasos

El primer paso es que crees un entorno virtual que estaremos usando a lo largo de estos retos, para ello debes ejecutar lo siguiente:

mkdir PlatziDataChallengecd 
PlatziDataChallenge
pip install virtualenv
virtualenv --python=python3.8 [nombreDeTuEntornoSinCorchetes]
source [nombreDeTuEntornoSinCorchetes]/bin/activate

Con ello entrarás en un entorno virtual el cual podrás confirmar con el nombre de tu entorno entre paréntesis al lado izquierdo del prompt de la terminal. Para salir solo debes correr deactivate.

El siguiente paso es crear el archivo requirements.txt donde estaremos agregando las librerías que vayamos usando. Para esta primera parte solo agrega:

pandas
numpy
jupyter

Seguido, instalamos las librerías dentro del entorno

pip install -r requirements.txt

Luego de haber instalado las librerias a usar, corremos jupyter notebook y te dirijes al puerto donde estará corriendo el Jupyter para así crear tu primer notebook.

import pandas as pd

# Para leer un archivo .csv
df = pd.read_csv("pathDelArchivo.csv")

# Si tiene tiene un seperador que no sea una coma, en este ejemplo uso "#"
df = pd.read_csv("pathDelArchivo.csv", sep="#")

# Si el archivo no tiene el nombre de las columnas (header)
list_columns = ["col1", "col2"] # Nombre de las columnas
df = pd.read_csv("pathDelArchivo.csv", names=list_columns)

# Encontrar más información al importar en CSV con Pandas en:# https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html# Ver los primeros y últimos 10 registros, dentro del paréntesis puedes agregar la cantidad de filas a mostrar.
df.head() 

# Últimos 10
df.tail() 

# Ver percentiles, valor máximo, valor mínimo, desviación estándar, etc.
df.describe()

# Ver tipos de datos de cada columna como también los valores nulos.
df.info()

# Agrupaciones, el .count() es que cuente las filas, También puede ser .sum(), .mean(), etc.
df.groupby(by=["Col1", "Col2"]).count()

# Borrar dos columnas
df.drop(columns=["col1", "col2"])

# Ordenar
df.sort_values(by="Col1", asending=False)

# Eliminar valores duplicados manteniendo el primero
df.drop_values(subset=["Col1", keep="first"])

# Agregar columnas de un dataframe a otro con nombres de columnas keys distintos
df.merge(df2, left_on="colName_df", right_on="ColName_df2")

# Concatenar filas de dos DataFrames, ignorando los índices
pd.concat([df, df2], ignore_index=True)

# Y mi favorita, lambdas. Muy útil para hacer operaciones fila por fila de una o más columnas en un DataFrame de forma muy eficiente.
df["col1"].apply(lambda x: x*8)

Clase 2: Aumentando la cantidad de datos

Pandas es una librería muy fuerte para el manejo de grandes volúmenes de datos, incluso hasta 100GB, pero para llegar a un buen manejo de esa información en tiempo prudente hay que hacer un par de cosas adicionales.

Estudia lo siguiente:

  • El parámetro “chunksize” de la función read_csv
  • La herramienta CLI htop, será tu mejor herramienta. Mi sugerencia es que siempre tengas abierta una ventana para monitorear cómo va tu sistema.
  • Vigilar en todo momento la RAM libre disponible que tengas, (una vez consumas toda la RAM prepárete para una no grata experiencia con tu PC)
  • Poder visualizar todas las columnas: pd.set_option('display.max_columns', None)
  • Magics commands, son comandos especiales de Jupyter para hacer cosas cool. En esta ocasión profundiza en %time el cual te dice el tiempo que tarda en ejecutarse esa celda.
  • Aprende a leer múltiples archivos .csv que estén en una misma dirección sin especificar el nombre de cada uno de los archivos.

Clase 3: Visualicemos los datos

Como habrás notado en el reto 2, al tener una mayor cantidad de datos hay que hacer algunos pasos adicionales en Pandas para poder codear y hacer analítica además de vigilar en todo momento la RAM. Pero disponer de una mayor cantidad de RAM nunca está de más.

Actualmente disponemos de varias librerías para la visualización de datos, esta es una pequeña comparativa:

  1. Matplotlib (Estático): Es la librería insignia, esto es porque fue una de las primeras además de ser muy robusta. Con ella puedes vizaliar casi cualquier gráfico y personalizar muchas de sus partes.
  2. Seaborn (Estático): Está basada en Matplotlib pero tiene opciones de visualización y colores más agradables a la vista ya que tienen un mejor diseño. Aunque tiene menos galería de imágenes que Matplotlib son más que suficientes para la gran mayoría de análisis exploratorio incluso prescindir de Matplotlib.
  3. Bokeh (Interactivo): A diferencia de las dos anteriores, esta librería no solo te ofrece gráficos interactivos sino también que puedas desarrollar dashboard completos con facilidad de exportación, tanto en HTML como en un servidor. Ideal si quieres levantar gráficos pesados.
  4. Plotly (Interactivo): Similar a Bokeh pero con una mayor facilidad de implementación y menos código pero a un precio: tendrás un mayor consumo de cómputo y menos opciones de customización en comparación (opciones muy detalladas). También podrás crear dashboards pero con código adicional.

Existen otras herramientas para visualización de datos con Python, pero estas cuatro son las más populares.

Clase 4: Contemos una historia

Data Science es una profesión que requiere de una mezcla de varios skills como por ejemplo SQL, Python, Deep Learning, Linux, Servidores, etc. Pero hay un skill que no es técnico ¡exacto! Es que te entiendan lo que intentas decir al momento de compartir tus resultados, se le conoce como Storytelling, incluso hay Data Scientists que se especializan en ello creando dashboards muy complejos pero que solos cuentan su historia.

Con Data Storytelling no necesariamente debes estar allí explicando lo que encontraste, sino que utilizando gráficos y textos vas contando una historia. Acá es tu imaginación y la práctica constante la que cobrará protagonismo.

Un ejemplo de Data Storytelling son los resultados de la encuesta de impacto de los estudiantes de Platzi que podrás encontrar en platzi.com/impacto

#NuncaParesDeAprender 💚

Retos

  • Reto 1: Primeros pasos con Pandas y análisis exploratorio.
  • Reto 2: ¡Aumentemos la cantidad de datos!
  • Reto 3: Visualicemos los datos
  • Reto 4: Contemos una historia
Osmandi
Osmandi
osmandi

45022Puntos

hace 4 años

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
7
15257Puntos
4 años

Buenísimo!!! Estaba esperando algo de este estilo para poner a prueba lo aprendido en la ruta de aprendizaje!

3
4 años

Que genial! 😄 Estos retos son perfectos para practicar todo lo aprendido 😃

3
4 años

Listo el curso de Pandas … Ahora a empezar con el primer reto del #PlatziDataChallenge 🤓🤓🤓

2
45022Puntos
4 años

¡Excelente Carolina!

2
20751Puntos
4 años

¡Excelente iniciativa Platzi! 😃 Me apunto

2
26046Puntos
4 años

Excelente, comencemos

2
6332Puntos
4 años

Estoy iniciando en Python. Me animo a este reto!!! Vamos con toda para el Curso de Manipulación y Análisis de Datos con Pandas y Python.

2
39707Puntos
4 años

Donde esta el reto 3 y 4?

3
45022Puntos
4 años

Saliendo del horno 😅

2
17775Puntos
4 años

@osmandi podrías por favor indicarme las fechas para la realización de cada reto o en que reto van para saber si puedo aplicar y participar, la consulta es porque veo que el post es de hace un mes, quedo pendiente de la respuesta

1
52772Puntos
4 años

Podrían darnos un tiempo para ponernos al día?

1
17775Puntos
4 años

por lo que vi se pueden entregar hasta el 17 de septiembre, habría que hacerlos todos antes de esa fecha

2
29243Puntos
4 años

Muy bueno para repasar los conocimientos de los cursos 😄, buena iniciativa

2
23028Puntos
4 años

Hola, Para el reto ¿Que bases o conocimientos se requiere?

1
45022Puntos
4 años

Python y la terminal de Linux

1
13782Puntos
4 años

Excelente me encantaría aplicarrr

1
21634Puntos
4 años

No sería mejor usar Jupyter o Colab?

3
45022Puntos
4 años

En el entorno está con Jupyter, y sip es más sencillo usar colab porque ya tiene todas las librerías instaladas (en el curso de Pandas es usado). Pero como Data Scientist es importante usar todas las herramientas y manejar la terminal es el pan de cada día.

1
6983Puntos
4 años

Estoy recién empezando la escuela de Data Science (voy por el curso de Programación Estocástica). ¿Creen que vale la pena que me inicie en este reto tomando el curso de Manipulación de Datos?

1
21634Puntos
4 años

Diría que es mejor que vayas paso a paso, quizás alguien te pueda recomendar otra cosa.

1
5022Puntos
4 años

Yo diría que cuanto antes comiences la práctica mejor.

1
70782Puntos
4 años

Empieza de una x3

1
24650Puntos
4 años

Hola! Alguien ha encontrado la respuesta a la preguntar de Osmande de la clase 2? Me refiero a “leer múltiples archivos .csv que estén en una misma dirección sin especificar el nombre de cada uno de los archivos” … no he encontrado la forma

1
5022Puntos
4 años

Que genial esta iniciativa!

1
20200Puntos
4 años

Es obligatorio el uso de virtualenv? Se puede usar anaconda para los ambientes virtuales?