Closed maria-luisa-gomez closed 3 years ago
Hola Maria Luisa 🙋🏻♀️ vamos con las correcciones del primer proyecto del bootcamp
En general el readme esta suuper bien, aún así te dejo por aquí unos tips para el futuro por si te aportan valor:
src
, que has usado métodos específicos bla bla bla. Un poco más de desarrollo en esta parteVamos con la estructura del repo!
Lo primerito de todo! Menudo susto me llevé cuando no vi ningún jupyter a primera vista!
La carpeta src
es unicamente para los archivos .py
donde tendremos las funciones que usaremos en nuestro jupyter. Por lo tanto:
Saca de esa carpeta los jupyters y lo que puedes haces es crearte una carpeta única para los notebooks.
Lo mismo para las imagenes, sacalas del .py
y puedes crear una carpeta para las imagenes.
Como detalle, aunque no podiamos subir el fichero original de kaggle, si que podiamos subir los csv
resultado de nuestra limpieza.
JUPYTER LIMPIEZA
Como detalle, los docstrings de las funciones van dentro de la función. Es decir:
def mifuncion():
'''
DOCSTRINGS AQUI
'''
return "Hola"
Que hayas creado todo ese código esta genial. De cara al futuro aprenderemos que tenemos métodos específicos para hacer esto de una forma más sencilla. Es usando el método
# Si no he entendido mal esto es lo que quieres hacer:
df.corr()
Te dejo por aquí documentación sobre este método por si te aporta valor.
sharks_attacks3['case_number']= sharks_attacks3['case_number'].str.replace(',', '.')
# lo haces para tres columnas, pero imagina que lo tuvieras que hacer para 20, sería muy tedioso. Lo mejor en este caso es hacerlo con un for loop
lst = ['case_number', 'case_number.1', 'case_number.2'] # nos creamos una lista con el nombre de las columnas que queremos cambiar
# por último hacemos un bucle:
for i in lst:
sharks_attacks3[i]= sharks_attacks3[i].str.replace(',', '.')
# y lo mismo para la columna TIME, SEX, AGE
-El regex que usaste para la columan de case_number
, creo que se complico un poco más de normal
# como nosotros queremos solo las fechas las cuales siguen el mismo patroón siempre podemos buscar ese patrón. En este caso
patron = r'\d{4}\.\d{2}\.\d{2}'
# busca por todos los strings solo aquellos que tengas 4 digitos seguidos de un punto, dos dígitos again y un punto y por último otros dos digitos.
# Tu tienes esto repetido tantas veces como especies quieres limpiar
# Tiger Shark
sharks_attacks6["species"] = sharks_attacks6["species"].str.replace(".*?[T|t]iger.*\w?", "Tiger Shark")
# Bull Shark
sharks_attacks6["species"] = sharks_attacks6["species"].str.replace(".*?[B|b]ull.*\w?", "Bull Shark")
# Cuando tenemos tanto código repetido múltiples veces es señal de que... TENEMOS QUE HACER UNA FUNCIÓN
# En este caso, la mejor opción sería hacerlo con un diccionario, te dejo por aquí unas lineas de código por si te aportara valor
```python
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))
# y así para todas las especies que queramos
}
# despues 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"
🔴 y lo mismo para la columna de activity
JUPYTER DE VISUALIZACIÓN
En esta parte solo tengo que hacerte un pequeño comentario:
Te dejo por aquí un pequeño recap de la revisión:
src
Bueno Maria Luisa, Suuuper buen trabajo 💪🔥, te has limpiado casi todas las columnas, increible!!! 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.
https://github.com/maria-luisa-gomez/baby-shark-tutu-ruruturu