2016-05-27 3 views
1

Я попытался использовать pandas для чтения листа excel в dataframe, но для столбцов с плавающей запятой данные считываются некорректно. Я использую функцию read_excel() для выполнения задачипотеря точности при использовании pandas для чтения excel

В excel значение 225789.479905466 в то время как в dataframe значение 225789.47990546614, что создает несоответствие для меня, чтобы импортировать данные из excel в базу данных.

Кто-нибудь сталкивается с той же проблемой с pandas.read_exel(). У меня нет проблем с чтением csv в dataframe.

Джереми

+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 может обрезать ваши ценности, а не панды. Если вы экспортируете в .csv из Excel и внимательно относитесь к тому, как вы это делаете, вы должны иметь возможность читать с pandas.read_csv и поддерживать все свои данные. pandas.read_csv также имеет недокументированный float_precision kwarg, что может быть полезно или не полезно.

Смежные вопросы