Closed Bertrangsf closed 3 years ago
Hola Bertrán! 🙋🏻♂️
Te voy comentando:
Respecto a la organización del repositorio 📚
funciones.py
, siempre llámalos con nombres significativos. En este caso con el contenido que tengan.El README.md ✍🏻:
Respecto al código 👩💻:
En el src:
En el primer archivo:
def df_final(df1,df2,df3):
df = pandas.concat([df1, df2, df3])
df = df.drop(["alt", "elevation"], axis = 1)
df.reset_index(inplace = True)
df.rename(columns={"standard": "city"}, inplace=True)
df = df.drop(df[df["index"] == "addresst"].index)
df = df.drop(df[df["index"] == "prov"].index)
df = df.drop(df[df["index"] == "countryname"].index)
df = df.drop(df[df["index"] == "postal"].index)
df = df.drop(df[df["index"] == "loc"].index)
df = df.drop(df[df["index"] == "confidence"].index)
df = df.set_index('city')
df = df.drop(["index"], axis = 1)
return df
la parte de los drop la puedes refactorizar!
En el segundo:
Vuelves a definir esa función; aprovecha que la tienes en otro sitio e impórtala!
Te faltan las docsrtings 🔪, recuerda documentar las funciones.
En esta otra función:
def clean(dic):
for key, values in dic.items():
if key == "Starbucks":
Starbucks = dic.get(key)
response = Starbucks.get('response')
decoded = response.get('groups')[0]
json_normalize(decoded)
star = decoded.get('items')
lo mismo, tienes código repetido. Si guardas Starbucks, High school, etc en una lista puedes iterar sobre ella y aplicar una función más sencilla.
Genial esta parte de error handling: .lower()
La función de def The_Final_City(): es para recoger input de 61 personas? 😰 puedes hacerte una función complementaria con un random para que te llame a esa función con valores aleatorios en un rango de 61.
La función de city selection, lo que quieres hacer es ponderar, ¿no? si cada rol tiene un peso diferente, aprovecha y guárdalo en un diccionario. Es el formato más cómodo para este tipo de información.
En cualquier caso está súuper bien que hayas definido una función (the final city) y que hagas otra donde llamas a la primera (city selection)
Lo que tienes me parece que está muy bien: has modularizado las funciones, las has importado en jupyter y has utilizado los notebooks para lo justo, que era ejecutar las funciones definidas en otro sitio (aunque alguna cosilla la puedes refactorizar).
Le añadiría los docstrings y alguna captura del mapa (o algún enlace a nbviewer). nbviewer te renderiza un jupyter y si tienes folium impreso, se ve.
Lo último es que me faltaría un poco de geoqueries y de inserción de los datos en mongo (no era obligatorio meterlos, pero nunca está de más). La cosa es que si haces las llamadas y los traes a mongo, luego puedes hacer geoqueries a mongo, y eso estaría muy 🔝 (que manejo de dataframes habéis hecho ya en los dos proyectos anteriores).
Pero ya te digo, por lo demás, lo que tienes hecho está muy bien, tanto en forma como en contenido.
A tope Bertrán, subidos ya en el cohete!! 💪🚀
https://github.com/Bertrangsf/3.-Geospatial-Proyect