Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

506
Vistas
Python: Promedio de retorno en valores únicos basados en múltiples columnas

Tengo un conjunto de datos que se ve así, y hay instancias en las que hay múltiples duplicados (por ejemplo, Gone Girl se repite dos veces). No soy experto en Python, por lo que no tengo ningún código en este momento y he intentado buscar en stackoverflow.

Pero mi objetivo es:

  1. Elimine todos los duplicados y cuente cuántas veces el autor ha escrito un libro (por ejemplo, JK Rowling ha escrito 2 libros diferentes y el otro ha escrito 1)
  2. Según los libros únicos, ¿cuál es la calificación promedio del autor (por ejemplo, JK Rowlings sería (4.9+4.7)/2 = 4.55

Agradezco cualquier ayuda

Nombre del libro Autor Opiniones de los usuarios
La vacante imprevista J. K. Rowling 4.9
Cabin Fever (Diario de un niño Wimpy, Libro 6) Jeff Kinney 3.9
harry potter J. K. Rowling 4.7
Cabin Fever (Diario de un niño Wimpy, Libro 6) Jeff Kinney 4.4
Chica se ha ido Gillian Flynn 4.0
Chica se ha ido Gillian Flynn 4.0
La chica del tren) paula hawkins 4.1
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

No estoy seguro de cómo le gustaría el formato de salida, pero aquí hay una forma de eliminar libros duplicados del mismo autor y devolver el puntaje promedio del autor después de la eliminación duplicada usando la biblioteca pandas:

 import pandas as pd df = pd.read_csv('mydata.txt', sep='\t') # use this if it is a tab delimited text file df = pd.read_csv('mydata.csv') # use this if it is a comma separated value file subset = df.drop_duplicates(subset=['Book Name', 'Author']).groupby('Author').agg({"User Rating": "mean"}) print(subset)

salidas:

 User Rating Author Gillian Flynn 4.0 Feff Kinney 3.9 JK Rowling 4.8 Paula Hawkins 4.1

Explicaciones:

Primero, estoy creando un marco de datos de pandas usando la biblioteca de pandas. Si los datos están en formato de texto delimitado por tabuladores, utilice la primera línea df = pd.read_csv('mydata.txt', sep='\t') para leer los datos. Si los datos están en formato de valores separados por comas, use la segunda línea df = pd.read_csv('mydata.csv') para leer los datos. Esto crea el marco de datos.

Luego, df.drop_duplicates elimina las entradas duplicadas en un marco de datos. Si selecciona un subset , buscará duplicados del subconjunto aprobado. Entonces, en este caso, pasé una lista de dos columnas donde quería colocar duplicados ['Book Name', 'Author'] . Cuando pasa varias columnas, ambas deben ser idénticas para que se cuente como un duplicado.

Luego, groupby por la columna 'Author' que realizará una agg o agregación, para obtener la mean de la columna User Rating , para cada 'Author' .

over 4 years ago · Santiago Trujillo Denunciar

0

df.groupby(...).mean() 2 veces, para ser consistente si, para un autor, hay varios libros de los cuales algunos tienen múltiples calificaciones. Sin embargo, las especificaciones pueden diferir.

  1. Calcule la nota media para cada pareja 'Autor', 'Nombre del libro'

    Si para una pareja las calificaciones de los usuarios son las mismas, eso desperdicia algunos recursos sin brazo.

  2. Calcular la nota media por autor

el código es:

 df.groupby(['Author', 'Book Name']]).mean().groupby(['Author']).mean()

con valor:

 User Rating Author Gillian Flynn 4.00 JK Rowling 4.80 Jeff Kinney 4.15 Paula Hawkins 4.10
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda