У меня есть файл Excel с несколькими листами и множеством именованных диапазонов. Это разные параметры, которые я хочу включить в модель, которую я разрабатываю с помощью Python. Теперь вопрос в том, как я могу сделать эти параметры доступными в Python за разумное время.
Я пробовал разные модули для чтения данных Excel в Python, и наиболее удобным для меня является openpyxl (который также кажется одним из самых популярных).
Проблема, с которой я сейчас сталкиваюсь, - это время выполнения, которое невыносимо долго. Для диапазона всего 300 строк x 100 столбцов = 30000 ячеек это занимает более 30 минут, что разочаровывает, поскольку другие программы могут считывать эти данные в течение нескольких секунд.
Я не эксперт в Python или структурах данных, поэтому я ценю любую подсказку, где я могу улучшить свой код, так что для больших диапазонов это не займет несколько часов.
wb = openpyxl.load_workbook(path, data_only=True, read_only=True)
parameter_names = [i.name for i in wb.get_named_ranges()]
parameters = {}
for parameter in parameter_names:
ws, cellrange = next(wb.defined_names[parameter].destinations)
if len(wb[ws][cellrange][0]) > 1:
parameters[parameter] = [[wb[ws][cellrange][row][column].value for column in range(len(wb[ws][cellrange][row]))] for row in range(len(wb[ws][cellrange]))]
else:
parameters[parameter] = [wb[ws][cellrange][row][0].value for row in range(len(wb[ws][cellrange]))]
Было бы замечательно, если бы кто-то, кто имел подобную проблему или просто знал, как справиться с такими проблемами, мог поделиться своим мнением. Либо, показывая мне, как я могу изменить свой собственный код (что было бы идеально), либо предлагая другой подход. Большое спасибо!