Closed LuisSerranoCerame closed 2 years ago
Buenos días TAs, por favor tened en cuenta los documentos más recientes. Por problemas con el kernel he svuelto a subir los documentos. Si tenéis alguna duda lo vemos. Gracias!
Hola hola Luis 🙋🏻♀️, vamos con la primera corrección del proyecto de pandas 🤓
En general el readme tiene toda la información que nesitamos para que el lector entienda lo que has hecho y los pasos que has ido dando. Pero antes de nada, me encantan tus hipótesis 😂!! Sin embargo, ya sabes que siempre tenemos algunos tips que daros para mejorar en los próximos proyectos:
En este caso no podíamos subir el csv de kaggle al repo, lo que podemos hacer es poner el link a la página de kaggle para que la gente se lo pueda descargar.
¿Cómo podemos hacer esto en markdown?
[dataset](https://www.kaggle.com/teajay/global-shark-attacks)
# Si haces esto verás algo como esto 👇🏽 en el readme
De la misma podrías hacer con el csv
que has usado para añadir info al dataset de sharks.
Me han faltado las librerías que has usado en este proyecto y los links a la documentación oficial.
Otras cositas que podemos incluir en el readme son:
csv
.
Vamos con la estructura del repo! Lo primerito de todo, enhorabuena no te has dejado ningún archivo temporal fuera del .gitignore
👏🏽!
En tu caso tienes un montón de ficheros csv
y unos cuantos jupyters. ¿Qué podemos hacer para que esto quede más ordenadito?
Crearnos una carpeta que se llame data
por ejemplo donde incluyas todos los csv
que te has creado y descargado.
Crearnos otra carpeta que se llame notebooks
donde vayamos guardandolos todos. Además, si los numeras indicando el orden de trabajo quedaría suuper TOP.
Me ha faltado la carpeta de src
, si bien este no es un proyecto en que nos volvamos locos haciendo funciones, hubiera estado bien que alguna te crearas.
Tienes un jupyter que lo llamas pruebas
, si es donde tu ibas haciendo cositas pero no era código definitivo, lo puedes borrar o meter en el gitignore!
Menos mal que me explicaste la organización! jajajjajja Solo como consejo, si tienes un ratín intenta eliminar aquellos juputers que ya no son útiles para el proyecto.
Cuando haces la selección de los años tienes este código:
#Confirmo los valores que no me valen para el estudio y los elimino por ser muy antiguos.
surf_usa.loc[surf_usa["Year"] == 0].sample(1)
surf_usa.loc[surf_usa["Year"] == 1779].sample()
surf_usa.loc[surf_usa["Year"] == 1828].sample(1)
surf_usa.drop([6201],axis=0,inplace=True)
surf_usa.drop([6097],axis=0,inplace=True)
surf_usa.drop([6143],axis=0,inplace=True)
# esto esta bien porque solo has tenido que hacerlo de tres filas, pero imaginate que cada una de los años que buscas tuviera muchas filas... sería un dolor!
# ¿Cómo lo podríamos hacer de una forma un poco más eficaz? haciendo un subset seleccionando aquellas rows que cumplan ciertas condiciones
surf_usa[(surf_usa["Year"] != 0) & (surf_usa["Year"] != 1779) & (surf_usa["Year"] =! 1828)] # de esta forma estoy seleccionando aquellos filas donde los años sean distintos de los que les hemos pasado
Renombras columnas como la de Fatal (Y/N)
super bien que lo hagas para evitar problemas con los espacios que había al final o entre medias.
¿Cómo podríamos hacer esto con todas las columnas a la vez?
df.columns = df.columns.str.lower() # con esto lo que hacemos es convertir todas las columnas
df.columns = [column.rstrip().replace(' ', '_') for column in df.columns] # vamos iterando por los nombres de las columnas, e iremos reemplazando los espacios por barras bajas (replace(' ', '_')). Y luego lo que hacemos es eliminar los espacios de la columna (rstrip()).
Me gusta mucho que no eliminas columnas masivamente aunque no las vayas a usar 🔝. Pueden no resultar interesantes ahora, pero si en el futuro.
Solo como detalle, te has creado dos datasets:
Super bien que hagas esto, pero si te fijas haces primero la división del dataset y luego lo que haces es limpiar cada uno de ellos por separado. Esto puede resultar un poco ineficiente ya que estas repitiendo la misma limpieza para los dos datasets.
¿Qué hubiera sido lo ideal?
Cuando cargas el csv
de campeonas te encuentras con que tienes todos los datos en una única columna. La solución que planteas utilizando el split
esta suuper bien Luis!
Peeero en read_csv
tenemos un parámetro que se llama sep
que nos permite específicar por que están separados nuestros datos en el csv.
# en tu caso están separados por ;, por lo tanto lo que hacemos es especificar que sep es ;
campeonas = pd.read_csv("campeonas.csv", names=colnames, sep = ";",encoding = "ISO-8859-1")
Hubiera estado bien que te pelearas con algunas de las columnas más "complicadas" como la de especies o la de actividad. Aún así, has añadido valor a este dataframe buscando más info lo cual le aporta mucho valor a tu proyecto.
La parte de visualización me ha encantado Luis, realmente buen trabajo. No solo por el tipo de gráficas que has usado si no por que las has explicado super bien. Enhorabuena 💪!
A modo de resumen te dejo por aquí algunos tips de cara al futuro:
Aún con todo, hiciste un gran trabajo en el proyecto Luis, no resultaba trabajar con este dataframe y tu has sacado conclusiones muy buenas 💪🔥🔥!!
https://github.com/LuisSerranoCerame/W2_Pandas_Luis_Serrano