Closed Jorge-Solana closed 3 years ago
Hola Jorge 🙋🏻♀️ vamos con las correcciones del primer proyecto del bootcamp
Lo primerito de todo, fan del meme 🤣.
Ahora vamos a por la chicha, que cosas me han faltado en el readme?
En general tu repositorio esta super bien organizado, tienes tus carpetas de src
y de imagenes
, los jupyters con nombres que nos cuentan de que van
Y ya para ponerme tiquismiquis tiquismiquis, tienes todo en inglés excepto... la carpeta de imágenes que se llama Imágenes
, plis 🙏 todo en un único idioma
Lo mismo con los comentarios que tienes en el jupyter, los tienes en español, procura ponerlo todo en el mismo idioma 😉
Suuper bien la carpeta src
con las funciones documentadas 👏🏽
JUPYTER DE LIMPIEZA
Vamos con la parte que chequeas el número de nulos que hay para cada columna. Para algunas de ellas (Type
, Activity
, Injury
, Year
, Country
, Sex
, Fatal (Y/N)
) haces lo mismo, reemplazas los valores nulos por "unknown". Basicamente lo que haces es aplicar la misma forma muchas veces. Cuando vemos que hay una linea de código que se repite mucho es momento de CREAR UNA FUNCIÓN 💪!
¿Cómo podríamos crearla?
def clean_nulls(col, str_to_replace):
df[col].fillna(str_to_replace, inplace = True)
df["targetcolumn"] = df["targetcolumn"].apply(lambda x: clean_nulls("Year", "Unknown year"), axis=1)
La columna de Years
la tienes como float
pero eso es raro para años no?? Lo hubiera sido interesante es que la convirtieras a int
df["Year"] = df["Year"].astype(int)
Te limpiaste la columna de species
lo cual esta suuper top. Como lo hiciste esta bien, pero como hablamos los diccionarios nos pueden ayudar muchísimo en esta parte. Te dejo por aquí como lo podrías haber hecho por si te aporta valor
def species2 (col):
diccionario = {
"white" : re.search(r".*[Ww](hite|HITE).*", str(col)),
"tiger" : re.search(r'.*[Tt].*', str(col)),
"bull" : re.search(r'.*[Bb](ull).*', str(col)),
"lemon" : re.search(r'.*[Ll].*', str(col)),
"grey" : re.search (r'reef | \.*reef\.*', str(y))
}
# después lo que hacemos es interar por el diccionario
for k,v in diccionario.items():
# si encuentra un value en el diccionario me devuelves la key del diccionario
if v == True:
return k
else:
# si no me devuelves "other species"
return "other species"
🔴 Si no te queda muy claro esto dime y lo vemos juntossss
JUPYTER DE VISUALIZACIÓN
Attacks
vs Year
):
Year
) los años con decimales? Se me hace un podo rarinchi, intenta convertirlo a int como te dije antes y quedará suuper bien. En la hipótesis de The proportion between unprovoked and provoked attacks... Wondering which of 3 most attacked countries is the most provocative
Has hecho varias gráficas, pero es difícil comparar por tipo de ataque, personalmente pondría todos los ataques en una gráfica para los principales países. Que pueda comparar de un solo vistazo como son todos los ataques.
Como recomendación crear una carpeta de data
para meter ahí todos los .csv
con los que he trabajado.
Con la columa de años, intentar trabajar cone ella como interger
Limpiar las columnas de species
y activity
usando un diccionario
Darle alguna vueltina a algunas gráficas. Peeero en general están muy bien 😉
Unificar todo al mismo idioma
A lo largo de todos los jupyters tienes muchas lineas de código para chequear como están los datos (muchos sum
, value_counts
), personalmente (y esto es algo meramente personal), yo los quitaría para que mi jupyter quede lo más limpio posible.
Bueno Jorge 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.
Enhorabuena por tu proyecto 🔥💪
https://github.com/Jorge-Solana/Shark-Attack