El resultado vacío de un programa escrito en python
Hola,
Necesito su apoyo en la siguiente parte de programación:
""https://examen-api.s3.eu-west-1.amazonaws.com/Student/{ID}" donde {ID} corresponde al identificador de un estudiante.
- Desarrollen primero una serie de instrucciones para gestionar un único estudiante, luego generalicen su enfoque en un bucle que recorra una lista de identificadores, y finalmente definan la función.
- La manera más sencilla de proceder es instanciar un DataFrame a partir de una lista de diccionarios.
He desarrollado esto, pero el resultado no muestra nada:
import pandas as pd import requests import numpy as np import json # Enviar una petición GET para recuperar la lista de IDs de estudiantes desde el endpoint student_list = [] for ID in student_list: response = requests.get(f"https://examen-api.s3.eu-west-1.amazonaws.com/Student/{ID}") student_list = response.json() df = pd.DataFrame(student_list) resultat = df.groupby('Student')['ID'].nunique() print(resultat)
5 respuestas
hola,
sugerencia:
import pandas as pd import requests import numpy as np import json # Enviar una solicitud GET para recuperar la lista de IDs de estudiantes desde el endpoint student_list = [1] for ID in student_list: response = requests.get(f"https://examen-api.s3.eu-west-1.amazonaws.com/Student/{ID}") student_info = response.json() print(student_info['StudentName'])
Le agradezco por su respuesta.
Sin embargo, me muestra solo un estudiante con 1.
¿Para mostrar todos los estudiantes, por favor? ¿Hay que incrementar la lista?
Gracias.
¿Has leído todo el enunciado?
import pandas as pd import requests import numpy as np import json # Enviar una solicitud GET para recuperar la lista de IDs de estudiantes desde el endpoint response = requests.get(f"https://examen-api.s3.eu-west-1.amazonaws.com/Students") student_list = response.json()["StudentList"] for ID in student_list: response = requests.get(f"https://examen-api.s3.eu-west-1.amazonaws.com/Student/{ID}") student_info = response.json() print(ID,student_info['StudentName'])
lo que se solicita es gestionar un único, por eso intenté resultat = df.groupby('Student')['ID'].nunique(), que no da nada:
El endpoint a utilizar es "https://examen-api.s3.eu-west-1.amazonaws.com/Student/{ID}" donde {ID} corresponde al identificador de un alumno.
Consejos:
- No definas la función de inmediato. Primero desarrolla una serie de instrucciones para gestionar un único alumno, luego generaliza tu enfoque en un bucle que recorra una lista de identificadores y finalmente define la función.
- La forma más sencilla de proceder es instanciar un DataFrame a partir de una lista de diccionarios en la siguiente forma:
Ya:
lista_estudiantes = [] for ID in lista_estudiantes:
Para mí, mientras la lista_estudiantes no esté llena, puedes hacer todos los bucles que quieras, ¡saldrá rápido!
Ya comenzaría con un get http para tener la lista llena.
¡Hasta luego blux! "Los tontos se atreven a todo.
Es incluso por eso que los reconocemos"
Hola,
Hay varias cosas que no van bien:
- La declaración está incompleta: ¿qué atributos quieres recuperar dados uno (o varios) identificadores de estudiantes? ¿Su nombre?
- Esto probablemente ayudaría a aclarar por qué estás utilizando groupby y nunique.
- Tu lista student_list (que yo llamaría más bien student_ids) no está poblada. De paso, renombraría ID a student_id, sería más claro. De hecho, en python, los nombres de variables en mayúsculas están reservados para "constantes" globales.
- El nombre del atributo que contiene el identificador en tu DataFrame no es ID, sino StudentID. Para darse cuenta, basta con mirar lo que devuelve https://examen-api.s3.eu-west-1.amazonaws.com/Student/1
- Ejemplo:
{ "StudentID": 1, "StudentName": "David Williams", "StudentCursus": "DA", "StudentCourses": [ 4, 2, 1, 3 ] }
- Ejemplo:
- Mientras desarrollas tu programa, deberías agregar un print después de cada instrucción para ver su resultado. Esto te permitiría ver el estado de cada variable y comprender mejor lo que está sucediendo.
- Importa explícitamente los módulos que utilizas. En tu caso, importas numpy y json pero no los usas. Para evitar este tipo de errores, puedes utilizar flake8:
- No es fundamental, pero al inicio del archivo falta el shebang. Sería bueno agregarlo para hacer de tu script un ejecutable.
Partiendo de la premisa de que queremos recuperar los nombres de los estudiantes:
#!/usr/bin/env python3 import pandas as pd import requests student_ids = range(3) for student_id in student_ids: url = f"https://examen-api.s3.eu-west-1.amazonaws.com/Student/{student_id}" response = requests.get(url) student_ids = response.json() df = pd.DataFrame(student_ids) print(df) resultat = df["StudentName"][0] print(resultat) Buena suerte
Como se escribió el 25 de abril de 2024 a las 12:15, se puede recuperar la lista de IDs de los estudiantes así:
response = requests.get(f"https://examen-api.s3.eu-west-1.amazonaws.com/Students") student_ids = response.json()["StudentList"] for student_id in student_ids:
No veo muy bien el beneficio de reutilizar la variable "student_ids" dentro del bucle. En el mejor de los casos, es una fuente de confusión.