Closed DarioCMasedo closed 3 years ago
Holaaaaa Darío 🙋♀️. Vamos a por el proyecto de este finde! 🔥🔥
En general el readme esta bien, cortito y conciso con las claves del proyecto bien explicadas. Te comento un par de cosillas por si te aportan valor en el futuro:
Me han faltado todas las librerías que has usado en el proyecto. Y si ya le pones los links a la documentación oficial te quedaría perfecto.
Un poco de detalle de cuales son los pasos que has seguido para realizar el proyecto. Un pequeño workflow de tu trabajo.
Por el resto, todo perfect
En general la estructura del repo esta bien, te dejo por aquí unos tips por si te ayudan en un futuro:
El fichero .py
lo tienes en la carpeta de output, lo ideal es que te crearas una carpeta nueva que se llame src
y metieras ahí todos los archivos .py
.
Los archivos .py
es mejor no llamarlos functions
. Lo ideal es llamarlo de alguna forma un poco más descriptiva, que la persona que vaya a ver tu repo sepa que se va a encontrar cuando abra el archivo. En tu caso es para la llamada a la API, podría llamarse API_calls.py
.
El .gitignore
se te paso. Entiendo que lo que hiciste fue no subir el archivo .env
con los tokens y eliminar todos los ficheros que no querías subir. Esta bien, pero lo perfecto sería que te crearas un .gitignore
y que metas ahí tus tokens y demás ficheros que no quieres que se vean.
Los jupyters están perfectos. Como detalle, si los numeras ayudas a la persona que vea tu repo a saber cual es el orden en que tiene que ir viéndolos.
🔴 Recuerda todos los imports al inicio del jupyter
⚠⚠ Dejaste los token en el jupyter ⚠⚠ Suuuper importante, los token a los .env para evitar que la gente los pueda usar. En este caso la API no es de pago, pero por ejemplo, la API de google es de pago si te dejas los token en un jupyter te pueden dar un sustito 😆
Las funciones que tienes en el jupyter llévalas a un archivo .py
y las llamas desde el jupyter.
Tienes dos jupyters que tienen lo mismo.
Vamos con la parte de código del proyecto:
Partes del código la repites varias veces para hacer lo mismo, lo ideal es que te hubieras creado una función para evitar repetirlo. Por ejemplo en las llamada a la API de foursquare, en vez de repetir todo el código dos veces te creas una función y la llamas después. Una posible opción podría ser:
Te creas una función para hacer las llamadas a la API:
def get_data (latitude, longitude, url_query, *args):
d = {}
token1= os.getenv("token1") # los token metidos en el archivo .env
token2 = os.getenv("token2")
for i in args: #args será la lista de criterios de búsqueda en foursquare. En tu caso escuelas y starbucks
parametros = {"client_id" : token1,
"client_secret" : token2,
"v": "20180323",
"ll": f"{latitude},{longitude}",
"query":i,
"limit": 100}
resp = requests.get(url= url_query, params=parametros)
data = json.loads(resp.text)
d[i] = data
return d
def getFromDict(diccionario,mapa):
return reduce(operator.getitem,mapa,diccionario)
def decode (data):
decode = data.get("groups")[0]
decode_otravez = decode.get("items")
mapa_nombre = ["venue", "name"]
mapa_longitud = ["venue", "location", "lng"]
mapa_latitud = ["venue", "location", "lat"]
schools2 = []
for dic in decode_otravez:
paralista = {}
paralista["name"] = getFromDict(dic, mapa_nombre)
paralista["longitude"]= getFromDict(dic, mapa_longitud)
paralista["latitude"] = getFromDict(dic,mapa_latitud)
schools2.append(paralista)
schools_data = pd.DataFrame(schools2)
return schools_data
🟠 Lo mismo puedes hacer para las queries, de esta forma podrías simplificar mucho el código.
Siendo data analysts tenemos que garantizar que las decisiones que tomamos se basan en lo que trabajamos, y en datos. En tu caso hay algunas decisiones que no han quedado del todo bien definidas:
¿Por qué eliges San Francisco? Lo ideal es que hubieras elegido al menos tres ciudades y las compararas. Esta decisión la puedes tomar de dos formas diferentes:
Basándote en la base de datos de companies de mongo. Puedes por ejemplo aplicar un filtro que sea, empresas que hayan ganado más de un millón, que tengan menos de 100 empleados. De ahí puedes elegir varias ubicaciones, San Francisco y Barcelona (por ejemplo)
Usar tu conocimiento a priori o tus preferencias y decir, dudo entre San Francisco, Barcelona y Londres.
Has creado solo una función, para el futuro te animo a que te crees unas cuantas funcioncitas, son nuestras mejores amigas 😉
Los mapas que te creaste están genial, pero al final... ¿Dónde tengo que poner mi empresa? Métele un poco de story telling explícame un poco los mapas. Ten en cuenta que tu cliente no tiene porque saber interpretar los resultados. Se lo tenemos que dar mascadito.
Ánimo Darío, las ideas las tienes pero te falta un poco organizar la info y lanzarte un poco más con las funciones. Si tienes cualquier duda, o no te quedo algo claro, ya sabes donde estamos, pregúntanos 😉😉
https://github.com/DarioCMasedo/W4-geospatial-data-project