Closed aromegar closed 2 years ago
Hola Alfonso 🙋🏻♀️! Seguimos con más proyectos, y ahora es el turno del proyecto de las geoqueries!
Buena forma de empezar el readme, con un buen storytelling y captando la atención del lector 👏🏽!
En general el readme esta muy completo Alfonso, pero vamos a por detalles más finos:
En la parte de las librerías, super bien que hayas puesto el link a la documentación oficial. Peeero solo pusiste 4, creo que se te han pasado algunas, por ejemplo Folium o request.
Hablas de que usas una base de datos para guardar tus datos, que BBDD usas? Lo podemos especificar.
Basas tu decisión de elegir ciudades en la BBDD de datos. Cuéntalo también y explica lo que tenemos en esa BBDD, que nos podemos encontrar.
¿Que API usas para tener datos de los lugares?
¿Qué criterios o venues has considerado como importantes para seleccionar la posición perfecta de tu empresa? y ¿ Por qué?
Como te digo, son detallines que pueden hacer tu readme un pelín más explicativo 😉.
Suuper bien organizado Alfonso, enhorabuena 👏🏽 ! Como siempre, alguna pijotada te dejo por aquí por si te aporta valor:
Veo que no tienes el .gitignore
. Recuerda este fichero es importantísimo ya que nos va a permitir "esconder" aquellos ficheros que no queremos que se vean, archivos temporales y lo que es más importante (y más para este proyecto) el .env
con los tokens! ¿Cómo los "escondiste" en este proyecto?
Tienes los jupyters numerados lo cual me encanta 🔝. Solo como detalle, los podemos meter en una carpeta que se llame notebooks
para que el repo quede perfectamente organizado.
Como comentario general sobre los jupyters:
Homogeneiza idiomas, tienes algunas cosas en ingles y otras en español
En los docstrings de las funciones tienes los argumentos y lo que devuelve. Faltaría añadir que es lo que hace la función:
def get_coord_from_zip(zip):
"""
AQUI DEBERÍAMOS PONER QUE ES LO QUE HACE LA FUNCIÓN.
Argumentos: un string con 5 dígitos
Devuelve un json con información del zipcode (ciudad, long, lat, etc)
"""
Los import siempre al inicio del jupyter. De esta forma la gente que vea tu código sabra desde el principio que librerías se necesitan para poder ejecutar el código.
Cuando cargamos el csv
tienes las siguientes lineas de código:
df = pd.read_csv("DATA/candidates.csv")
df.drop("Unnamed: 0", axis=1,inplace=True)
# para evitar tener que poner la segunda línea de código podemos usar el parámetro `index_col` en el método `read_csv`
df = pd.read_csv("DATA/candidates.csv", index_col=0)) # así nos evitaremos que dropear esa columna.
Tienes 4 jupyters que son exactamente iguales. Te dejo por aquí una posible idea de como lo podríamos evitar y reducir así el número de jupyters y por lo tanto de código repetido.
Crearnos un jupyter para cada cosa, es decir:
Así tendremos toda la información de todas las ciudades en un solo jupyter y será más fácil de comparar.
Otra cosa que podría ser interesante es que crearas una función para la parte de mongo. Podría ser algo así:
def mongo (col, location, meters):
client = MongoClient("localhost:27017")
db = client.get_database("FindLoc")
places = db.get_collection(col)
locationfloat=[float(e) for e in location.split(",")]
locationreverse=[locationfloat[1],locationfloat[0]]
coord={"type":"Point", "coordinates": locationreverse}
proj = {"_id":0,"tipo":1,"nombre":1}
score=[]
for req in requi:
cond = {"tipo":req}
query = {"location": {"$near": {"$geometry": coord, "$maxDistance": meters}}}
lis = list(places.find({"$and":[cond,query]},proj))
score.append(len(lis))
return score
Por si te aporta valor en el futuro, en mongo tenemos un método que se llama GeoNear
que nos permite hacer una query de geolocalización que nos va a devolver la distancia en km de cada una de nuestras ciudades a los datos que tenemos en la BBDD.
Te dejo por aqui un video que lo explica super bien!
Te dejo por aquí otro retito para el futuro, en la parte de Folium, crearnos otra función para hacer los mapas y no copiar el mismo texto varias veces.
Bueno Alfonso, increíble este proyecto. Menudo trabajo tan bueno que has hecho. Solo te puedo dar la enhorabuena. Te dejo por aquí un resumen de las cositas que te fui diciendo durante la corrección:
.gitignore
porfis! Que no se nos olvide que ese fichero es super importante! Bueno Alfonso, poco mas que decirte. Seguimos que ya estamos en la recta final!
https://github.com/aromegar/FindLoc.git