Pandas avec des changements subtils dans les nombres et comment y faire face

introduction

Un mémo lorsque la valeur numérique change légèrement lors de la lecture de données avec Pandas read_csv, du changement du nom de la colonne, etc. et de la sortie avec to_csv

La source

Voici le code minimum de l'essence de cet article. Il suffit de lire et de cracher.

PandasTest.py


import pandas as pd
import argparse


def main():

    parser = argparse.ArgumentParser()
    parser.add_argument("-input", type=str, required=True)
    parser.add_argument("-output", type=str, required=True)

    args = parser.parse_args()

    df = pd.read_csv(args.input, index_col=0)
    df.to_csv(args.output)


if __name__ == "__main__":
    main()

problème

En comparant les deux fichiers convertis par la commande ci-dessus avec WinMarge, les données comportant de nombreux chiffres sont incohérentes à certains endroits. image.png

Correspondance

Bien que la cause exacte n'ait pas été élucidée, il est présumé que la perte de chiffres, etc. s'est produite lors de sa conversion pour flotter à l'intérieur des Pandas. Par conséquent, ajoutez dtype = "object" à l'argument de read_csv pour empêcher la conversion de type. Cela vous donnera une correspondance exacte.

   df = pd.read_csv(args.input, index_col=0, dtype=object)

Recommended Posts

Pandas avec des changements subtils dans les nombres et comment y faire face
Extraire la valeur maximale avec les pandas et modifier cette valeur
Extraire la valeur maximale avec les pandas.
Décrivez ec2 avec boto3 et récupérez la valeur
Script pour changer la longueur du son avec REAPER
[Python3] Enregistrez la matrice de moyenne et de covariance dans json avec les pandas
Une classe qui change librement la valeur de l'automate par communication socket