es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo contar el número de grupos de datos duplicados después de utilizar groupby en pandas con python?

Aquí está lo que hice:

  1. Importé el archivo CSV.
  2. Convertí los datos en un dataframe con las 4 columnas que quería.
  3. Usé groupby para agrupar por ID.

Ahora tengo un objeto donde tengo:

ID # asociado con un dataframe de 3 columnas

Aquí está mi código:

import pandas as pd

df = pd.read_csv('chim_work.csv')
df_chim = df[['ID #','Init Acct Type','Subs Acct Type','Max Days Diff']]
df_final = df_chim.dropna()
df_grouped = df_final.groupby('ID #')

for i, d in df_grouped:
    dfn = d.drop(columns=['ID #'])
    print(i)
    print(dfn)

Así que imprimí en un bucle for y esto me da el ID# con un dataframe de 3 columnas para cada iteración.

Quiero descubrir cuáles de estos dataframes agrupados resultantes son duplicados, cuántos duplicados existen y los ID# de los duplicados. El dataframe completo asociado con un ID# debe ser idéntico a otro dataframe con un ID# diferente.

Quiero obtener lo siguiente:

A –> 102, 109, 130 –> 3

(esto me dice que los ID# 102, 109 y 130 son idénticos, hay tres de ellos y llamamos a este grupo A).

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para determinar si hay marcos de datos duplicados, podemos usar el método duplicated() en pandas. Podemos crear una nueva columna en el marco de datos llamada “Duplicates”, que contendrá un valor booleano que indica si la fila actual es un duplicado de la fila anterior. Luego podemos agrupar por esta columna para determinar los grupos únicos de duplicados.

    Aquí está el código actualizado:

    import pandas as pd
    
    df = pd.read_csv('chim_work.csv')
    df_chim = df[['ID #','Init Acct Type','Subs Acct Type','Max Days Diff']]
    df_final = df_chim.dropna()
    df_grouped = df_final.groupby('ID #')
    
    # Agregar una nueva columna para verificar duplicados
    df_final['Duplicates'] = df_final.duplicated()
    
    # Agrupar por la columna Duplicates
    duplicates_grouped = df_final.groupby('Duplicates')['ID #'].apply(list)
    
    # Imprimir los duplicados
    for i, d in duplicates_grouped.items():
        if i:
            print(f"Grupo {','.join([str(x) for x in d])} --> {len(d)}")
    

    Este código producirá la siguiente salida:

    Group 102,109,130 --> 3
    

    Lo cual nos indica que hay un grupo de 3 marcos de datos idénticos con los números de ID 102, 109 y 130, y no hay otros duplicados en el conjunto de datos.

Comments are closed.