Comparer les DataFrames et visualiser les différences avec une comparaison côte à côte
Étant donné deux dataframes Pandas, la tâche consiste à identifier et à présenter les changements entre eux dans un format convivial. L'objectif est de générer un tableau HTML qui met visuellement en évidence les lignes qui ont changé, affichant à la fois les valeurs d'origine et mises à jour.
Identifier les modifications de ligne
Pour y parvenir, il est nécessaire de déterminer les lignes qui ont changé. Cela peut être accompli en utilisant l'opération ne (pas égal), qui renvoie un masque booléen pour tous les éléments où les valeurs correspondantes dans deux trames de données diffèrent.
<code class="python">ne = (df1 != df2).any(1)</code>
Localisation des entrées modifiées
Une fois les lignes modifiées identifiées, les entrées spécifiques qui ont été modifiées peuvent être localisées à l'aide de la fonction stack(). En filtrant le résultat empilé en fonction du masque booléen, il devient possible d'extraire les entrées qui ont changé.
<code class="python">changed = (df1 != df2).stack()[ne_stacked] changed.index.names = ['id', 'col']</code>
Extraction des valeurs modifiées
Ensuite, l'original et les valeurs mises à jour peuvent être extraites à l’aide de la fonction Where. Cela permet la création d'un DataFrame qui résume les modifications, avec les colonnes « de » et « à » représentant respectivement les valeurs d'origine et modifiées.
<code class="python">difference_locations = np.where(df1 != df2) changed_from = df1.values[difference_locations] changed_to = df2.values[difference_locations]</code>
Génération d'un tableau HTML
Enfin, les modifications extraites peuvent être organisées dans un tableau HTML pour visualiser les différences entre les deux dataframes. Ce tableau peut être rendu avec n'importe quel moteur de rendu HTML, tel que la méthode to_html de Pandas, pour fournir une comparaison côte à côte conviviale.
<code class="python">pd.DataFrame({'from': changed_from, 'to': changed_to}, index=changed.index).to_html()</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!