(si ves este comentario en github, el código aparecerá formateado)
Respecto a la organización del repositorio 📚
Genial por incluir e. .gitignore. Aprovecha para guardar también los archivos temporales como son el .DS_Store y los .ipynb_checkpoints. Y de hecho, de forma recursiva, que los .DS_Store los tienes en alguna otra carpeta. Te pasará lo mismo para le resto de proyectos con los archivos de pycache. Todos estos son archivos temporales que genera el ordenador para tener memoria en caché. En el repositorio sólo generan ruido.
Genial por haber organizado los notebooks y haberles dado un orden.
Si el notebook de pandas project está vacío, puedes dejarlo fuera del repositorio. La idea es explicar el máximo de información con el mínimo de recursos: sólo lo que aporta, de forma explícita pero también sintética.
Enhorabuena por el nivel de detalle. De nuevo: tiene que ser auto-explicativo y a un alto nivel. Es decir, que alguien no técnico sea capaz de entender perfectamente lo que has hecho y cómo.
Cosas que quitaría: "ironhack_project-1. The objective of this exercise is to practice data cleaning and transformations to extract insights from the data.". Sí, es un proyecto académico, pero no hace falta que lo categorices como tal. Es un proyecto que has hecho para responder a X preguntas.
Me preguntabas si el nivel de detalle de era demasiado. Me gusta mucho que lo hayas divididio por secciones tipo "duplicados", "missing values", etc. Y sobre todo: has hablado de los datos. Es decir, prácticamnte a todos se os olvida explicitar cómo estaban los datos antes de empezar la limpieza: aunque sea el porcentaje de valores útiles del total de las filas. O sea que enhorabuena 3x:emoticono_de_aplausos-que_ahora_no_me_sale:. Sí que no sería tan necesario quizá tan detallado celda a celda, pero dividir el proceso por pasos y dar contexto sobre cómo estaba y cómo lo soluciones, súuuper bien.
Tienes alguna cosilla como: "He export the data set to save changes and continue with the analisis.", "appling", "Afterward", etc. Revísalo, aunque son cosas tontas. Puedes pasarle grammarly, que funciona bastante bien.
Recuerda modificar la foto del readme. Debe ser un problema de ruta relativa.
Genial por heber puesto los plots.
Una vez leído todo te diría que: puedes resumir el proceso de limpieza, y poner en bullet points las conclusiones. Por lo demás está súper el readme. Piensa que lo tienes que dejar como te gustaría encontrartelo a ti.
Also: muy bien por haberte ido guardando los datasets. La limpieza puede ser costosa y así previenes perder info en el proceso de ir desarrollando el código.
Linkea la presentación de canva en el readme. Si alguien no quiere leerse el readme, tiene la opción de ver las diapositivas también (y que además es parte del trabajo que has hecho).
La modularización 📉: no era necesario para este proyecto, pero lo pediremos para el siguiente. Es cuestión de meter en funciones y luego repartirlas en archivos de python dentro de la carpeta src para ir luego re-importándolas en los mismos notebooks.
El código 👩💻:
Por consistencia, si los títulos del notebook están en inglés, los hashtags también, intenta que las funciones y variables también. L odigo por a de: cuantos_iguales. Igualmente, genial esto:
def cuantos_iguales(col1,col2):
"""This functions return the % of duplicated items
between 2 given columns"""
1.Generates a list of True/False items if duplicate/unique
a = df[col1] == df[col2]
2.Set two counters(duplicate/unique)
count_dupli = 0
count_unique = 0
3.Iterates de true/false list to count for duplicates/uniques values
for i in a:
if i == True:
count_dupli +=1
else:
count_unique += 1
return print(f' columns "{col1}" and "{col2}" are {dupli_percent}% equal')
que aunque sea algo qeu hago yo todo el rato en clase, no muchos cogéis el hábito de comentarlo de esta forma. Al final puedes hacerlo como quieras; la mía no tiene por qué ser la mejor. Pero a mí al menos es la que me organiza mejor la información para entender el código.
Ten cuidado con las celdas de jupyter que son muy largas. Mientras estás trabajando en el notebook salen colapsadas, pero si no limitas el output, mira cómo queda . Es por eso que yo en clase lo que hago es acceder al primer elemento de una lista muy larga o dejo la celda comentada: si no, os perdéis en los apuntes y en el scroll infinito.
Si tienes errores: AttributeError: module 'pandas' has no attribute 'isnan', déjalo comentado.
Lo mismo al escribir. No seré yo quien se queje de typos, pero un poco sí: Tranform:, analisis.
Los import intenta dejarlos al principio del notebook. O bueno, esto es más manía mía (pero piensa que en los archivos de python sí que es convención que vayan al principio, así que no está de más generalizarlo).
es mega refactorizable. SI hay líneas de código que se repiten mucho y son muy parecidas, eso está pidiendo a gritos una refactorización. Aquí tienes varas alternativas:
drop es una función que acepta un argumento que es columns, y este columns puede ser una lista.
Puedes hacer un bucle y por cada_columna en una lista_de_columnas_para_dropear, pasar cada_columna como argumento.
Pf, de nuevo, graciasp or hacer docstrings. Tu yo del futuro te agradecerá esta costumbre.
Una vez leído el dataste y exportado como dataset nuevo, no te haría falta volver a darle un encoding nuevo
Aprovecha y las funciones de los plots también puedes encapuslarlas!
Enhorabuena por varias cosas:
Por haber hecho un diccionario de patrones de regex
Por haber utilizado regex en general
Por utilizar funciones
Por utilizar un montón de comprehension lists y de diccionarios
Por haber hecho el ranking de las puntuaciones de los tiburones
En cuanto a los plots 📊:
Me gusta mucho la simpleza, la claridad de los ejes y que están ordenados
En fin, muy bien el proyecto Mónica, sigue petándolo. 3x:emoji_de_biceps_que_tampoco_me_sale:
Hola Mónica! 🙋🏻♂️
Te cuento:
(si ves este comentario en github, el código aparecerá formateado)
Respecto a la organización del repositorio 📚
.gitignore
. Aprovecha para guardar también los archivos temporales como son el .DS_Store y los .ipynb_checkpoints. Y de hecho, de forma recursiva, que los .DS_Store los tienes en alguna otra carpeta. Te pasará lo mismo para le resto de proyectos con los archivos de pycache. Todos estos son archivos temporales que genera el ordenador para tener memoria en caché. En el repositorio sólo generan ruido.El README.md ✍🏻:
La modularización 📉: no era necesario para este proyecto, pero lo pediremos para el siguiente. Es cuestión de meter en funciones y luego repartirlas en archivos de python dentro de la carpeta src para ir luego re-importándolas en los mismos notebooks.
El código 👩💻:
cuantos_iguales
. Igualmente, genial esto:"""This functions return the % of duplicated items between 2 given columns"""
1.Generates a list of True/False items if duplicate/unique
a = df[col1] == df[col2]
2.Set two counters(duplicate/unique)
count_dupli = 0 count_unique = 0
3.Iterates de true/false list to count for duplicates/uniques values
for i in a: if i == True: count_dupli +=1 else: count_unique += 1
4.Calculates % of duplicity:
total_values = count_dupli + count_unique
dupli_percent = int((count_dupli / total_values)*100)
return print(f' columns "{col1}" and "{col2}" are {dupli_percent}% equal')
que aunque sea algo qeu hago yo todo el rato en clase, no muchos cogéis el hábito de comentarlo de esta forma. Al final puedes hacerlo como quieras; la mía no tiene por qué ser la mejor. Pero a mí al menos es la que me organiza mejor la información para entender el código.
Ten cuidado con las celdas de jupyter que son muy largas. Mientras estás trabajando en el notebook salen colapsadas, pero si no limitas el output, mira cómo queda . Es por eso que yo en clase lo que hago es acceder al primer elemento de una lista muy larga o dejo la celda comentada: si no, os perdéis en los apuntes y en el scroll infinito.
Si tienes errores:
AttributeError: module 'pandas' has no attribute 'isnan'
, déjalo comentado.Lo mismo al escribir. No seré yo quien se queje de typos, pero un poco sí:
Tranform:
,analisis
.Los import intenta dejarlos al principio del notebook. O bueno, esto es más manía mía (pero piensa que en los archivos de python sí que es convención que vayan al principio, así que no está de más generalizarlo).
Este código:
es mega refactorizable. SI hay líneas de código que se repiten mucho y son muy parecidas, eso está pidiendo a gritos una refactorización. Aquí tienes varas alternativas:
Pf, de nuevo, graciasp or hacer docstrings. Tu yo del futuro te agradecerá esta costumbre.
Una vez leído el dataste y exportado como dataset nuevo, no te haría falta volver a darle un encoding nuevo
Aprovecha y las funciones de los plots también puedes encapuslarlas!
Enhorabuena por varias cosas:
En cuanto a los plots 📊:
En fin, muy bien el proyecto Mónica, sigue petándolo. 3x:emoji_de_biceps_que_tampoco_me_sale:
Salu2 y disfruta del fin de semana