Closed as-Solo closed 3 years ago
Holaaaaa Alejandro 🙋♀️. Vamos a por el proyecto de este finde! 🔥🔥
El readme esta perfecto 🎉🎉. Enhorabuena, esta super bien documentado, con cada uno de los pasos que seguiste y de una forma clara y concisa!
Solo por ponerme un poco tiquismiquis:
Cuando pones las librarías que usaste no hace falta que pongas import json
, con que pongas json
es suficiente.
Te quedaría perfecto si cuando nombras las librería que usaste pones el link a la documentación ofical de cada una.
Nada que decirte aquí Alejandro, esta todo 🔝🔝
Metes en el .gitignore
no solo los token sino aquellos ficheros que son pruebas para ti o que no te interesan que vean 👏👏
Los jupyters dentro de una carpeta y todos numerados 🤩
Solo como detalle, lo tienes todo en español excepto los docstrings de las funciones. Mi recomendación sería que lo hicieras todo en un único idioma.
Suuuper bien!
Vamos con la sintaxis de código:
Primer jupyter 01_Priorizacion_peticiones
Poco tengo que decirte aquí, te dejo un detalle por si te aporta valor. Pero esta genial!
En la función calcular_coste_value
, entiendo que lo separas en múltiples for
para que te quede más limpio, pero en realidad lo podrías meter todo en uno.
def calcular_coste_value(diccionario):
maximo = 0
for k,v in diccionario.items():
v['coste'] = v['numero'] * v['sueldo']
v['requirement_value'] = round( (v['coste'] * 10) / maximo, 2)
if v['coste'] > maximo:
maximo = v['coste']
Segundo jupyter 01_Priorizacion_peticiones
De nuevo está perfect, todo lo que te puedo decir son detalles. Te dejo por aquí algunos por si te aportan valor:
Tienes un par de prints suuuper infinitooooooo 😨
En python cuando creamos un lista nueva podemos los corchetes directamente
lista_1m = list() #tu lo tienes así lo cual está bien
#Pero lo ideal es que lo has con los corchetes
lista_1m = []
En este jupyter tienes algunas funciones creadas que están genial como por ejemplo seleccionar_ciudades
o limpiar_sector
. Estos mismos resultados que obtienes con estas funciones lo podrías hacer con queries de mongo, lo que podría simplificar un poco tu código.
La función filtrar_empresas_ciudad
suuuper bien, una función que esta llamando a otra función 👏. Solo como detalle, si te das cuenta repites la llamada a esta función 4 veces, lo podrás hacer un bucle for usando un diccionario o una lista donde almacenas los resultados de la query de cada una de las ciudades elegidas.
Tercer jupyter 03_Creacion_colecciones_ciudades colegios, starbucks, bares, aeropuertos-tren, peluquería canina
El código en este jupyter esta perfect, pero... lo ideal sería que atomizaras. Si te fijas tienes el mismo código repetido múltiples veces.
criterios = ["colegios", "starbucks", "bares", "aeropuertos-tren", "peluqueria canina"]
Creas una función para hacer la llamada a la API y la limpieza de los datos descargados:
def get_data_foursquare(coords, type):
# type será cada uno de los criterios de búsqueda en foursquare
url_query = 'https://api.foursquare.com/v2/venues/explore'
tok1 = os.getenv("tok1")
tok2 = os.getenv("tok2")
parametros = {
"client_id": tok1,
"client_secret": tok2,
"v": "20180323",
"ll": f"{coords.get('coordinates')[0]},{coords.get('coordinates')[1]}",
"query": f'{type}',
"limit": 170
}
resp = requests.get(url= url_query, params = parametros).json()
response = resp.get("response").get("groups")[0].get("items")
mapa_nombre = ["venue", "name"]
mapa_latitud = ["venue", "location", "lat"]
mapa_longitud = ["venue", "location", "lng"]
lista_ = []
for dic in response:
paralista = {}
paralista["type"] = f'{type}'
paralista["name"] = getFromDict(dic, mapa_nombre)
paralista["latitud"]= getFromDict(dic, mapa_latitud)
paralista["longitud"] = getFromDict(dic,mapa_longitud)
lista_.append(paralista)
df = pd.DataFrame(lista_starbucks)
return df
for i in lista_colecciones:
x = get_data_foursquare(coords, i)
Cuarto jupyter 04_Queries_Madrid
La primera función que te creas hacer_consulta
(en la que haces una query a una colección) llama a otro función sacar_resultados
. Esta suuper bien la estructura de estas dos funciones. Creo que si en la primera función le pones un proyect
para que te devuelva solo las coordenadas podrías quitar la segunda, simplificando un poco el código.
Lo mismo que en el jupyter anterior, intenta no repetir el código para cada uno de los criterios (starbucks, trenes, veganos...). Podrías usar diccionarios o listas.
Quinto jupyter 05_Preparacion_Visualizacion
Este jupyter, si lo estoy entendiendo bien, creo que podrías evitarlo. Si te fijas vuelves a hacer las queries que hiciste en el jupyter 3. Lo que podrías hacer es darle una vuelta al jupyter tres, con los detallines que te comenté y guardandolo todo en un .csv también.
Sexto jupyter 06_Visualizacion_Zona
Bueno esto nos lo comentaste tu ya, es la parte que esta un poco maás "incompleta", pero aún así genial que le lanzaras con kepler 👏👏👏 Aquí tienes un mundo de fantasía!!
Tengo poco que decirte aquí, sobre todo que atomices esas funciones para que no repitas tanto algunas estructuras de código. Tu trabajo es espectacular! Enhorabuena de verdad!! Todo lo que te dije son pequeños detalles... 😀😀
Siendo data analysts tenemos que garantizar que las decisiones que tomamos se basan en lo que trabajamos, y los datos tu has utilizado muchas herramientas para justificar cada una de tus decisiones, lo que está perfecto. Enhorabuena Alejandro, hiciste un gran trabajo en este proyecto!!! 🚀🔥 Sigue asiiiii
https://github.com/as-Solo/Proyecto_Ubicacion