Closed marcunu closed 3 years ago
Holaaaaa Jacobo 🙋♀️. Vamos a por el proyecto de este finde! 🔥🔥
El readme esta perfecto Jacobo! Explicas cada paso que haces de forma esquemática para llegar a tus objetivos, explicas los ficheros que hay en el repo y haces un pequeño resumen de los objetivos del proyecto 👏👏
El detalle que me falta para que este perfectísimo es que añadas los links de la documentación oficial de cada librería.
En general la estructura del repo esta perfect Jacobo:
Suuuper bien documentados los jupyters,
Tienes todos los archivos en el .gitignore
y los tokens bien escondiditos 👏👏
Solo como detalle, tienes un par de jupyters sin numerar, entiendo que son jupyters en sucio en los que fuiste a hacer pruebas. Si no los quieres borrar los puedes meter en el .gitignore
y así no los pierdes 😉😉
Primer jupyter 01_Mongo
El código esta perfect, pero repites el mismo código tres veces. Lo que puedes haces es crear una función a la que llamas para cada una de tus queries
Solo como detalle cuando haces la última query para buscar tu empresa seleccionada
cond = {"name":"zynga", "offices.city":"San Francisco"}
proj = {"name":1, "number_of_employees":1, "offices.city":1}
zynga = list(comp.find(cond,proj))
🟠 No te estaba saliendo porque estabas poniendo zynga en mayúsculas. Recuerda que mongo es case-sensitive.
Segundo jupyter 02_Location to json Genial, te has creado una función para hacer la llamada a la API de foursquare y crear un dataframe con los datos descargados. Pero, si te fijas repites el mismo código 7 veces. Una posible solución:
criterios = {"school": "preschool",
"dog": "dog_hairdresser",
"cafe": "starbucks",
"vegan": "vegan_restaurant"
...}
find_locations
for k, v in criterios.items():
x = find_locations(v, 15, k)
De esta forma, evitaríamos repetir la llamada a la función múltiples veces y tendríamos un dataframe con toda la info, sin necesidad de tener que concatenar después.
Tercer jupyter 03_Geoqueries
Tienes la función query_dist
que esta perfect! Pero nos vuelve a pasar lo mismo, repites la función múltiples veces. Puedes intentar atomizar como en el segundo jupyter!
Le pasas una distancia a cada criterio, lo cual esta perfect!
lista_colecciones = ["school", "vegan", "starbucks"...]
def query_dist(coleccion, distancia):
san_francisco = [-122.40651979413546, 37.76528668651395]
coord_point = {"type":"Point", "coordinates": san_francisco}
cond = {"location":{"$near":{"$geometry":coord_point, "$maxDistance": distancia}}}
query = coleccion.find(cond)
df = pd.DataFrame(list(query))
return df
for i in lista_colecciones:
if i = "starbucks" or "pubs":
x = query_dist(i, 1000)
...
# y así para cada una de tus colecciones.
Si te queda alguna duda con esta parte no dudes en preguntarnossss
El resto del código esta perfecto, enhorabuena Jacobo!
Bueno Jacobo, en este proyecto has cogido una base de datos, te las peleado con ella, has hecho llamadas a un API para incorporar mas información y has hecho geoqueries. Sin embargo, siendo data analysts tenemos que garantizar que las decisiones que tomamos se basan en lo que trabajamos, y en datos. En este sentido me han faltado un par de cositas en este proyecto:
Incluir más ciudades, por ejemplo Londres o Madrid. Así no vas a comparar solo dentro de una ciudad si no entre ellas
Como analistas nos gustan los números, la visualización que hiciste esta perfecta, pero si nos hubieras incluido algún valor numérico que me ayudara a comparar entre sitios será 🔝🔝
Enhorabuena Jacobo, hiciste un gran trabajo en este proyecto!!! Sigue trabajando asiiiii 🚀🔥
https://github.com/marcunu/GeoSpatial-Data-Project