Closed fromeropablo closed 3 years ago
Holaaaaa Pablo 🙋♀️. Vamos a por el proyecto de este finde! 🔥🔥
El readme esta perfectito! Solo como detalle me ha faltado un poco el workflow del trabajo. Cuales son los pasos que has seguido, por que has tomado cada una de las decisiones. Todo esto un poco resumido en el readme.
La estructura perfecta! No se te escapo ningún archivo raro, el .env
en el .gitignore
, perfecto Pablo!!
Peeero...
¿Un archivo .py
llamado functions
? Plissss los nombres de los archivos deben ser algo más descriptivos, es decir, si son para limpieza llamalo cleaning.py
Sobre los docstrings, genial que los hayas hecho para todas las funciones 👏. Te dejo por aquí una documentación interesante sobre las convenciones para hacer los docstrings por si te aporta valor.
En el archivo functions.py
tienes definida una función dentro de una función. Este tipo de ejecuciones hay que evitarlos. Es mejor que definas la función fuera y que luego la llames dentro de la función grande.
def loquesea():
#hará algunas cosas
return df
def otra_accion():
x = loquesea()
#hara otras cosas con el resultado de la primera función
return y
Recuerda, por convenio el nombre de las funciones es en minúscula. Las mayúsculas suelen ser para las clases.
Vamos con las funciones de la llamada a la API y de hacer las geoqueries. Tu código esta bien, pero se puede intentar atomizar un poco. Podrías:
keys
sean las localizaciones que elegiste y los values
una lista con las coordenadas. Recuerda, los diccionarios son nuestros amigos! No te digo mucho más aquí por que ya lo hemos hablado. Te dejo los tips, estoy segura de que te acordarás 🧠
Al final de la función geoquery
te creas un diccionario para almacenar las coordenadas en formato point
, suuuper bien. Solo como detalle, creo que no te haría falta guardarlo en una lista y luego pasarlo a dataframe, recuerda que el diccionario lo puedes pasar a dataframe.
documents = []
for dicc_1 in empty_list:
temporal = {
"name": dicc_1.get("name"),
"location": {"type": "Point", "coordinates": [dicc_1.get("latitud"), dicc_1.get("longitud")]},
}
documents.append(temporal)
city_venues = pd.DataFrame(documents)
city_venues["place"] = topic
city_venues.head()
En la función creatingMap
puedes atomizar código. La primera parte de esta función es igual que la función anterior(creatingPlaces
). Puedes crearte el mapa desde el dataframe que te has creado en la función creatingPlaces
.
def creatingMap(coord, df):
map_1 = folium.Map(location = coord, zoom_start = 15)
for i, row in df.iterrows():
distrito = {
"location":[row["latitude"], row["longitude"]],
"tooltip": [row["name"]]}
icon = Icon(color = "red",
prefix = "fa",
icon = "map-pin",
icon_color = "black")
Marker(**distrito,icon = icon ).add_to(map_1)
return map_1
Siendo data analysts tenemos que garantizar que las decisiones que tomamos se basan en lo que trabajamos, y en datos. En tu caso casi todas las decisiones se han tomado basados en datos y eso esta perfect! Te dejo por aquí algunos detalles que sé que puedes hacer 😉
Lánzate con los diccionarios, conseguirás que el proyecto quede cerradito del todo 💪💪
Los mapas muy probablemente no te salieron porque tienes un poco de jaleito en la última función. Una cosa que podrías hacer es:
Una vez que tengas hechas las geoqueries exporta los resultados a un dataframe
Con ese dataframe hazte el mapa.
Pero al final... ¿Dónde tengo que poner mi empresa? Recuerda somos analistas de datos y nos gustan los números. Los mapas están genial, si le hubieras metido alguna estimación numérica estaría 🔝🔝. Cuando tengas los mapas, explícalos un poco. Ten en cuenta que tu cliente no tiene porque saber interpretar los resultados. Se lo tenemos que dar mascadito.
Venga Pabloooo hiciste un buen trabajo en este proyecto, se nota que te peleaste con los datos 👏🔥. Si tienes cualquier duda, o no te quedo algo claro, ya sabes donde estamos, pregúntanos 😉😉
https://github.com/fromeropablo/Project-week-04