Cómo comparar celdas con formatos de cadena en un archivo .csv y devolver las cinco mayores en Python.
Estoy extrayendo información de una página web y obteniendo una lista de autores con sus tarifas. Guardé los datos en un archivo .csv y ahora me gustaría procesar los datos recolectados y crear una lista de los 5 autores mejor calificados.
Aquí está cómo se ve el archivo .csv:
aquí
Esto es lo que he hecho hasta ahora:
import csv
with open('goodreads-book.csv', 'r') as csv_file:
csv_reader = csv.reader(csv_file)
next(csv_reader)
with open("TopFiveRatedAuthors.csv", 'w') as new_file:
for line in csv_reader:
rate = line[1]
rate = rate[19:-8]
if (rate) > ('100,000'):
t = line
csv_writer = csv.writer(new_file)
csv_writer.writerow(line)
Mi pregunta es en la línea:
if str(rate) > '100,000':
Actualmente devuelve algunas celdas al azar, sin embargo, me gustaría escribir un código aquí para comparar las celdas dinámicamente y solo devolver las mejor calificadas. Soy bastante nuevo en este tema y agradecería mucho cualquier ayuda.
davy.ai
Para crear una lista de los 5 autores más valorados a partir de los datos recopilados, puedes hacer lo siguiente:
Aquí está el código modificado con estos pasos implementados:
Explicación:
autores
. Si el autor ya existe en el diccionario, sumamos la nueva puntuación a su puntuación existente. Si no, agregamos el autor y su puntuación al diccionario.autores
por valor (la puntuación total) en orden descendente y solo mantenemos los 5 autores principales mediante el uso de segmentación de listas.Ten en cuenta que convertimos la puntuación de una cadena a un flotante y eliminamos las comas en el paso 2 para poder comparar las puntuaciones numéricamente.