Closed Andrestart closed 2 years ago
Hola Andrés 🙋🏻♀️! Seguimos con más proyectos, y ahora es el turno del proyecto de las geoqueries!
Bueno tienes un readme suuper completo Andrés, buen trabajo! Te dejo por aquí unos detallines para rematar el readme:
Dices que usas la base de datos de companies, nosotros la conocemos, pero el que lea tu repo tal vez no la conozca. Por esto, estaría bien que incluyeramos una pequeña descripción de esa base de datos, de que va, que información tenemos, etc.
Por ponerme un poco tiquismiquis, cuando pones las librerías que has usado, se te olvidó... FOLIUM!
Como te digo, un par de detalles 😉
Menuda organización Andrés! Esta todo suuper bien, pero ya sabes que siempre tenemos algo que comentar:
Tienes un fichero que se llama main.py
que esta vacío. Debemos evitar dejar ficheros que no aportan valor al repo, por lo tanto, lo ideal es no meterlo en el repo.
En el src
tienes un fichero que se llama functions
!!! Recuerda eso nunca jajaj. Lo ideal ponerle nombres que sean autoexplicativos. Que tipo de funciones tienes en ese fichero. Si tienes de varios tipos lo puedes dividir y ponerle distintos nombre:
Por el resto, increíble la organización 🔝.
Me ha faltado la documentación en las funciones 😭.
Tienes algunas funciones en el jupyter, como ya las tienes en el .py
recuerda borrarlas.
Tienes algunas cosas en español y otras en ingles. Basicamente, tienes en español las funciones que has copiado de Ras 😂. Aún así tengo que darte la enhorabuena porque te has creado otras muchas funciones propias. Buen trabajo 👏🏽!
En la parte de mongo, lo ideal es que te crearas también una función. ¿Cómo lo podríamos hacer?
def insert_mongo(df):
try:
df['geometry']=df['geometry'].apply(lambda x:shapely.geometry.mapping(x))
df2 = geoell.to_dict(orient="records")
df2.create_index([("geometry", GEOSPHERE)])
df2.insert_many(geoelldic)
return "Data inserted"
except:
return "Error inerting data"
Lo mismo para la parte de hacer la geoqueries donde le pasemos dos parámetros, uno las coordenadas y otra la distancia. Esto te lo dejo a ti como retito 😂😝.
La función punct
.
def punct(df, marks):
o = []
for i,row in df.iterrows():
if row['category'] == "vegan_venues":
o.append(row['geodist']*marks['vegan_venues'])
elif row['category'] == "starbucks":
o.append(row['geodist']*marks['starbucks'])
elif row['category'] == "schools":
o.append(row['geodist']*marks['schools'])
elif row['category'] == "train_stations":
o.append(row['geodist']*marks['train_stations'])
elif row['category'] == "basketball_courts":
o.append(row['geodist']*marks['basketball_courts'])
df['punctuation'] = o
return df['punctuation']
La función en si esta perfecta, solo como detalle, te está funcionando un poco de "chiripa". Me explico:
Dentro de la función llamas al diccionario marks
, en este caso te esta tirando porque la tienes un poco más arriba ejecutada, es decir, esta guardada en el kernel. Si esta función la llamaramos desde el .py
no funcionaría.
¿Cómo lo podemos solucionar?
Pasando el diccionario marks
como parámetro en la función (te lo dejo indicadito en el código de arriba)
Y... el último reto! Crearte una función con la parte de los mapas 🚀!
Aún con todos los comentarios, hiciste un gran trabajo 🔝! Un proyecto super completo y muy redondito! Te dejo por aquí un recap de los comentarios:
.py
Vamos Andrés, currazo, enhorabuena! Seguimos que ya no queda nadaaaaa 🔥🔥
https://github.com/Andrestart/geospatial_project.git