Closed inigomuguiro closed 3 years ago
Hola Iñigo 🙋🏻♀️ vamos con las correcciones del primer proyecto del bootcamp
Vamos con el readme que en tu caso fue un poco escueto, que no quiere decir que este mal! Te dejo por aquí unos tips para el próximo y podamos seguir mejorando
Lo ideal es empezar con el objetivo del proyecto. ¿Por qué lo estoy haciendo?
Qué datos estoy usando, en este caso un csv sobre ataques de tiburones. ¿Qué podemos contar sobre esto?
Nuestras hipótesis, cuales son!
Qué es lo que hemos hecho para conseguir nuestros resultados.
Por ejemplo: hemos hecho una limpieza utilizando herramientas de pandas. El dataset de inicio tenia X filas y X columnas de las cuales me quedé con Y filas e Y columnas etc.
Los resultados se resumieron en un jupyter de visualización donde se puede ver si se cumplen o no nuestras hipótesis.
¿Qué librerias hemos usado? Poner una lista con las librerias usadas en el proyecto con el link a la documentación oficial
Recuerda 🧐 para meter un link en markdown lo que tenemos que hacer
[documetacion](LINKDELAPAGINA)
En esta parte del proyecto te dejo por aquí algunos comentarios para intentar que nuestros repos estén bien organizaditos:
.gitignore
, en este archivo meteremos aquellos ficheros que no queremos que la gente vea o archivos temporales que se crean automáticamente. ¿Qué archivos temporales te quedaron a ti fuera del .gitignore
? el .DS_Store
.
🔴 Si no recuerdas como se metian los archivos en el gitignore dímelo y lo vemos juntos!
🚨 SUUUUUPER IMPORTANTEEEE 🚨, en este proyecto no se podía subir el .csv
original al github!!! ¿Qué podemos hacer?
gitignore
Te has generado unos cuantos .csv
resultado de tu proceso de limpieza lo cual esta bien. Una cosa que podemos hacer es crearnos una carpeta que se llame data
donde metamos todos los .csv
y no tenerlos desperdigados por el repo
Los jupyters... plis 🙏, itenta no subir archivos que no tengan nada o algo que no le aporta valor al proyecto. Tienes un archivo que se llama Untitled
que no tiene nada dentro 😔
Parece que son muchas cosas pero son solo detalles para mejorar nuestro repositorio, recuerda! esto es nuestro portfolio y será lo que vean los reclutadores, cuanto mejor estén, mejor para nosotros 😉
Vamos con la chicha!
JUPYTER LIMPIEZA
Suuper bien que hayas investigado el número de nulos que tenemos en nuestro dataset. Solo como detalle para el futuro para hacerte la vida un poco más fácil
# cuando hacemos esto nos devuelve el dataset con los True/False. Estp puede ser un poco doloroso de interpretar.
shark.isnull()
# ¿Cómo lo podemos hacer de una forma más amigable?
shark.isnull().sum()
# esto nos devolverá el número de nulls que tenemos por columna.
Dropeas columnas en varias ocasiones, lo ideal es que lo hagas todo de una vez al incio. Es decir, que antes de empezar la limpieza evalues las columas que no son interesantes para ti y que las elimines todas de una vez.
El como limpias la columna de sexo está bien, pero si te fijas repites el código varias veces para una columna, cuando veamos que estamos repitiendo unas lienas de código varias veces es el momento de ....HACER FUNCIONES!!!
Por ejemplo en el caso de la columna de sex
podríamos crearnos una funcioncita para reemplazar todos los valores de una vez. Te dejo por aquí una posible solución
def replace_sex(col):
# creo una lista con los valores que quiero
fill_list = ["M", "F"]
# almaceno en una variable los valores que quiero reemplzar
chars = 'M ', 'lli', 'N', '.', 'nan'
for c in chars: # itero por esta última variable
col = col.replace(c, random.choice(fill_list)) # y reemplazo
return(col)
Lo mismo podríamos hacer con la columna de Fatal
. ¿Cómo podría ser esa función?
import numpy as np
def injury(x):
x = str(x)
if x == "M" or x == "UNKNOWN" or x == "2017":
return np.nan
elif x == "Y":
return "Y"
elif x == "N":
return "N"
Para la columna de Age
es una de las columnas que más juego nos daba en este dataset.
# lo que tu haces es a lo grande! jajaja
shark_1["Age"].fillna("Not specified", inplace = True)
¿Qué podríamos hacer con esta columna?
Podríamos limpiar un poco la columna para luego reemplazar los nan por la media de la edad de la gente atacada que hay en nuestro dataset.
Las decisiones que tomemos a la hora de reemplzar los valores nulos puede determinar mucho la calidad de nuestro trabajo.
Trabajas con los años como floats, pero eso es raro, te recomiendo que los cambies a integers
df["Year"] = df["Year"].astype(int)
En general en este jupyter me ha faltado algo de funciones y poco mas de orden. Recuerda que tenemos las celdas de markdown para ir dividiendo nuestro jupyter en apartados lo que hará que sea más fácil de seguir el flujo de trabajo.
Seré también muy turras pero... Es super importante documentar nuestros jupyter, por nosotros y por la gente que pueda leerlos.
JUPYTER VISUALIZACIÓN
Podrías haber intentado hacer varios subplots de barras donde:
Cada subplot correspondiera a un pais
En cada uno de los subplots representariamos los casos por tipo de actividad y sexo
Ojo con la interpretación de los resultados de algunas gráficas. Por ejemplo, en la de los años. Aumentan el número de casos porque hay más ataques o porque hay más gente que reporte los ataques?
Darle una vuelta al readme, recuerda es lo primero que se ve de nuestro trabajo y es importante que este bien documentado!
De cara al futuro, en vez de crearnos muchos datasets pequeñitos es mejor tener uno grande con todos los datos y luego ir filtrando esos datos en función de lo que nosotros queramos.
Hay que intentar trabajar un poco más en el orden de nuestros jupyters!
Para el futuro hay que lanzarse con las funciones!
Bueno Iñigo has sobrevivido al primer proyecto y lo has hecho genial!! En este proyecto hemos interiorizado como trabajar con pandas y cual es el principal proceso de limpieza de un dataset.
Venga venga venga seguimossss 🔥💪
https://github.com/inigomuguiro/Como-no-morir-de-un-ataque-de-tiburon