Ich lese eine CSV-Datei in den Datenrahmen eines Panda. Beim Abrufen der Daten erhalte ich geringfügig andere Werte als die Originaldaten.Wie behebt man Gleitkommadiskrepanzen in Python-Pandas-Datenrahmen?
Ich glaube, es hat etwas damit zu tun, wie Python Dezimalzahlen darstellt. Aber wie kann ich es reparieren?
CSV-Daten Beispiel:
1313331280,10.4,0.779
1313334917,10.4,0.316
1313334917,10.4,0.101
1313340309,10.5,0.15
1313340309,10.5,1.8
Pandas Datenrahmen:
df = pd.read_csv(csv_file_full_path, names=['time','price', 'volume'])
Der Ausgang:
ORDERS_DATA_FRAME.iloc[0]['volume']
source file value = 0.779
the pandas output value = 0.77900000000000003
Die Daten geändert wird, wenn in den Pandas Datenrahmen zu lesen. Was ist das Problem?
Mögliches Duplikat von [Ist Fließkomma-Mathematik gebrochen?] (Http://stackoverflow.com/questions/588004/is-floating-point-math-broken) – jonrsharpe
Hier läuft noch etwas anderes. Zuerst mache ich keine Mathematik. Ich lese gerade Daten, die in den Datenrahmen des Pandas eingelesen wurden. Als nächstes ist es Python, nicht Javascript – Emily
Nein, es ist genau das gleiche. '0.779' ** kann nicht ** exakt als Gleitkommazahl dargestellt werden, Sie sehen also * fast * diese Zahl im Datenrahmen. Sprache ist irrelevant. Siehe z.B. http://floating-point-gui.de/. Beachten Sie auch, dass der Datenrahmen nicht zu einem Panda gehört; o) – jonrsharpe