PEMBARUAN: Jawaban akurat pada saat penulisan, dan presisi floating point masih bukan sesuatu yang Anda dapatkan secara default dengan to_csv / read_csv (pengorbanan kinerja presisi; default mendukung kinerja).
Saat ini ada yang float_format
argumen tersedia untukpandas.DataFrame.to_csv
dan yang float_precision
argumen tersedia untukpandas.from_csv
.
Dokumen asli masih layak dibaca untuk memahami masalahnya dengan lebih baik.
Itu adalah bug di panda, tidak hanya di fungsi "to_csv", tetapi juga di "read_csv". Ini bukan masalah floating point umum, meskipun benar bahwa aritmatika floating point adalah subjek yang membutuhkan perhatian dari programmer. Artikel di bawah ini menjelaskan sedikit tentang subjek ini:
http://docs.python.org/2/tutorial/floatingpoint.html
Satu baris klasik yang menunjukkan "masalah" adalah ...
>>> 0.1 + 0.1 + 0.1
0.30000000000000004
... yang tidak menampilkan 0,3 seperti yang diharapkan. Di sisi lain, jika Anda menangani kalkulasi menggunakan aritmatika titik tetap dan hanya pada langkah terakhir Anda menggunakan aritmatika titik mengambang , perhitungan akan bekerja seperti yang Anda harapkan. Lihat ini:
>>> (1 + 1 + 1) * 1.0 / 10
0.3
Jika Anda sangat ingin mengatasi masalah ini, saya sarankan Anda membuat file CSV lain yang berisi semua angka sebagai bilangan bulat, misalnya mengalikan dengan 100, 1000 atau faktor lain yang ternyata nyaman. Di dalam aplikasi Anda, baca file CSV seperti biasa dan Anda akan mendapatkan kembali angka integer tersebut. Kemudian ubah nilai tersebut menjadi floating point, bagi dengan faktor yang sama yang Anda kalikan sebelumnya.