Closed emilio-carrasco closed 3 years ago
Holaaaaa Emilio 🙋♀️. Vamos a por el proyecto de este finde! 🔥🔥
EL readme está perfect Emilio, describes super bien y de una forma clara el proceso que has seguido para cumplir todos los objetivos de proyecto. Te dejo algunos consejos por si te aportan valor para el futuro:
Cuando citas las librerías que usas en el proyecto estaría genial si metes los links a la documentación oficial.
Quedaría suuuper perfecto si pones el link a foursquare (pero vamos esto es un detalle de nada)
Cuando escribes código en un markdown lo podemos poner entre triple `. Te dejo por aquí algo de documentación por si te aporta valor
En general está muy bien organizado, bien Emilio!! Te comento algunas cositas:
Genial no se te paso ningún archivo temporal fuera del .gitignore
y los tokens también dentro 👏
Los ficheros de funciones cuesta un poco seguirlos, tienes funciones de mongo en distintos .py
pero que en realidad luego las llamas todas en una misma función. Mi recomendación (pero considera que esto es opinión personal), todas las funciones de mongo en un único fichero.
Solo por ponerme un poco tiquismiquis, los jupyters los puedes numerar para saber cual es el flujo de trabajo.
Genial que te hayas creado el archivo yml
, pero... esta vacío 😢. Mira esto y si ves que te sigue sin salir aquí estamos! El requeriments.txt
perfecto.
Los docstrings perfecto que los hayas añadido! Por si te apetece, te dejo por aquí documentación sobre el convenio de los docstrings
Vamos con la parte de código:
En el proceso de seleccionar empresas de la base de datos de companies
tienes una función que se llama quita_office_null
, genial como lo sacaste pero en mongo tenemos dos métodos propios para poder hacer lo que tu haces en esta función:
companies_tec_1M_mongo
Te dejo por aquí una posible opción por si te aporta valor:
def companies_tec_1M_mongo(database,col):
client =MongoClient("localhost:27017")
db = client.get_database(database)
c = db.get_collection(col)
db.list_collection_names()
cond_tec = { "tag_list": { "$regex": "tech" } }
cond_1M = { "total_money_raised": { "$regex": "M" } }
cond_no_muerta = {"deadpooled_year": { "$in": [{"type": 10}, None] }}
🟡 sep = {"$unwind":"$offices"}
🟡 lon_lat = [{"offices.latitude": {"$exists": True}}, {"offices.longitude": {"$exists": True}}]
cond_1M_and_tec_nomuerta={"$and": [cond_tec, cond_1M, cond_no_muerta]}
proy={"_id":0, "name":1, "offices.latitude":1, "offices.longitude":1}
resultado=(c.find(cond_1M_and_tec_nomuerta,proy))
return list(resultado)
Cuando haces la llamada a la API de foursquare con la función ranking_foursquares
como lo haces esta bien pero este código lo puedes atomizar un poco, ¿Cómo? Te dejo por aquí una posible opción:
Crear una diccionario con los criterios de la API y los candidatos:
criterios = ["starbucks", "colegio", "aeropuerto", "bar", "restaurante vegano", "estadio de baloncesto", "peluqueria perros"]
diccionario = {"candiadato1": criterios,
"candidato2": criterios
...}
for
for k, v in diccionario.items():
for i in v:
x = ranking_foursquares(k, i, limite)
# o puedes usar args o kwargs.
Bueno Emilio, 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 a tu datos. Siendo data analysts tenemos que garantizar que las decisiones que tomamos se basan en lo que trabajamos, tu has utilizado las ponderaciones, lo que está perfecto. Me ha faltado un poco de interpretación de los resultados, es decir, al final... ¿Dónde debo poner mi empresa? Cuéntanoslo!
Enhorabuena Emilio, hiciste un gran trabajo en este proyecto!!! 🚀🔥
https://github.com/emiliocarrascomoreno/geospace_project