2016-05-27 8 views
1

Excelフレームをデータフレームに読み込むためにパンダを使用しようとしましたが、浮動小数点型のカラムではデータが正しく読み込まれませんでした。パンダを使用してExcelを読み取ったときの精度の損失

エクセルでは、値は225789.479905466ですが、データフレームでは値が225789.47990546614になりますので、エクセルからデータベースへのデータのインポートに不一致が生じます。

誰でもpandas.read_exel()で同じ問題に直面していますか?私はcsvをデータフレームに読み込むことは問題ありません。

ジェレミー

+2

http://floating-point-gui.de/ –

+0

csv(Excel付き)にエクスポートしてからread_csvを使用しても同じ問題がありますか? –

+0

実際に私はread_csvを使用すると、より詳細なチェックを行いました。同じ問題に直面しています。セルの一部の精度は8〜9までです。 –

答えて

0

私はこれがちょうどポイントエラーを浮動され、および/またはデフォルトExcelビューは、あなたの数の完全な精度を示していないと信じています。

また、次の点を考慮してください

from decimal import Decimal 
x = Decimal(225789.479905466) 
y = Decimal(225789.47990546614) 
print(abs(x - y)/y) 
6.444904002816901933512563658E-16 

ので有意義にあなたの分析の結果を変更するつもりは6.5E-14%の不一致がありますか?

私はそれができないと賭けるだろう。

+0

ファイルには金額が格納されていますので、私はそれを正確にする必要がありますが –

+0

@JeremyNguyenそしてコンピュータの浮動小数点精度はこれを行うには間違った方法です –

0

Excelでは、パンダではなく値が切り捨てられている可能性があります。 Excelから.csvにエクスポートして、それを行う方法に注意が必要な場合は、pandas.read_csvと読んですべてのデータを保持する必要があります。 pandas.read_csvには、文書化されていないfloat_precision kwargもあります。これは有用かもしれないし有用ではないかもしれません。

関連する問題