Я новичок в Python (опыт работы в MATLAB и инженерии) и столкнулся с проблемой.
У меня есть переданные мне файлы Excel, которые содержат раздел заголовка, а затем раздел данных под ним. В разделе данных есть числа, некоторые даты (неважные для меня) и строки. Я пишу код для анализа файлов и листов внутри них (есть разные) и компилирую их в df/objects, чтобы я мог манипулировать ими для последующей обработки (а-ля MATLAB).
Теперь проблема, с которой я сталкиваюсь, заключается в том, что некоторые из моих данных поступают нормально при использовании pd.read_excel, но некоторые из них малы (порядок величины в тысячных, десятитысячных долях). и стотысячные) и импортируется как целое число со значением 0 вместо числа с плавающей запятой (пример ниже). Я пробовал использовать astype, dtype и некоторые другие формы преобразования, но они либо полностью исключают строки (которые мне нужно использовать для привязки частей моего кода при анализе конкретных вещей или их отсутствия), либо удаляют строки в столбце, где возникает проблема (которую мне все еще нужно использовать/сохранять). Другие методы категорически выдают мне ошибки:/
Я подтвердил, что данные в таблицах в порядке и содержат ожидаемое значение. Я заметил несколько старых сообщений, в которых проблема с точностью была связана с Excel. Для меня это не так.
Как я могу определить плавающую точность определенных переменных ячеек или просто чисел в целом, не запутываясь в строках на листе? Конкретное место (строка и столбец), где они появляются, варьируется от листа к листу, поэтому жесткое кодирование массива или местоположений Excel не является хорошим решением, и существует так много наборов/листов, что ручное редактирование файлов Excel для меня не может быть и речи. Единственное, о чем я могу подумать, это повторно импортировать данные Excel в середине процесса, как только у меня появится какая-то ссылка на переменную, где я могу найти эти неправильно нулевые значения, но опять же, это кажется громоздким и неэффективным. Я надеюсь, что может быть какой-нибудь элегантный обходной путь.
Заранее спасибо!
-писклявый Обновлено: Ответ помог мне понять, что я ссылаюсь на устаревший файл. read_excel на самом деле работал должным образом и давал мне значения, которые я искал после обновления пути к файлу.
импортировать панд как pd
каталог = C:\Data
лист = лист1.xlsx
importdata = pd.read_excel (каталог, имя_листа = лист, заголовок = нет)
print(importdata.loc[2,1]) #получение этого
output: 0
print(importdata.loc[1,1]) #хочу это с большей точностью... хорошо с 12.00000 или чем-то еще
output: 12
Пожалуйста, прочитайте минимальный воспроизводимый пример и справку по форматированию






У меня такого поведения не наблюдается, возможно, это потому, что вы неправильно импортируете данные или печатаете неправильное значение. Вот код, который я тестировал на примере вашего входного файла.
import pandas as pd
import_data=pd.read_excel('sheet1.xlsx', sheet_name=0)
print(import_data.loc[1,'header 2'])
и выходной результат
0.001
как и ожидалось.
Спасибо за быстрый ответ. Оказывается, я ссылался на устаревший файл не в том месте, двойная проверка после прочтения вашего комментария заставила меня это понять.
Приведен пример реальных данных вместе с кодом, который точно воспроизводит проблему без каких-либо изменений.