Как правильно экспортировать время и даты из Excel с помощью Python
Я пытаюсь создать график времени, и поэтому я должен использовать данные даты из Excel. Данные находятся в первом столбце моей таблицы результатов, и поэтому я использую следующий код:
import xlrd
import numpy as np
import matplotlib.pyplot as plt
import datetime
#Define xlsfiles
wb = xlrd.open_workbook("workbookname.xlsx")
sheet = wb_octopus.sheet_by_name("nameofsheet")
#Read data from excelsheet
Y1_data = np.array(sheet.col_values(8, start_rowx=1,end_rowx=None))
Y2_data = np.array(sheet.col_values(11, start_rowx=1,end_rowx=None))
for i in range(len(Y1_data)):
date_data = xlrd.xldate.xldate_as_datetime(sheet.cell(i,0).value,1)
time_data.append(date_data)
Проблема в том, что python неверно интерпретирует даты, так как мое первое свидание в excel - 2-12-2011 3:05:00, а python дает datetime.datetime(2015, 12, 3, 3, 5
).
Я надеюсь, что кто-то сможет объяснить, почему это происходит, и как я могу это решить.
2 ответа
Благодаря документации, предоставленной chrisheinze, я обнаружил, что проблема была в следующей строке в моем коде:
date_data = xlrd.xldate.xldate_as_datetime(sheet.cell(i,0).value,1)
Кажется, что 1 в конце указывает на преобразование даты и времени в Macintosh, в котором говорится, что первый день в системе дат - 1904-01-02. Я не работаю на Mac, поэтому мне пришлось изменить это на 1900-й режим даты и, следовательно, пришлось изменить строку следующим образом:
date_data = xlrd.xldate.xldate_as_datetime(sheet.cell(i,0).value,0)
Это решило мои проблемы.
В документации xlrd немного говорится о проблемах, возникающих в методе хранения дат в Excel, в частности в таблицах, созданных на Mac. Благодаря этому вы сможете определить временную дельту, которую необходимо добавить к каждой дате.
Другой вариант - открыть электронную таблицу в Excel, скопировать и вставить столбец даты в виде текста. Таким образом, xlrd будет интерпретировать его как строку, которую затем можно будет отформатировать как объект datetime.