Модель проверяется по реальным данным. Одним из наиболее употребительных методов их хранения, являются CSV файлы или ВеличиныРазделенныеЗапятой. Самый очевидный способ их чтения - воспользоваться функциями библиотеки NumPy, а именно функцией loadtxt.
Удобство в том, что можно несколько колонок прочитать одновременно.
Но тогда надо указывать параметр unpack=True чтобы сделать декомпозицию и присвоить данные нескольким массивам, перечисленным через запятую
Вот пример CSV файла
Как можно видеть первой строчкой идет заголовок, его надо пропустть, для этого ставим параметр skiprows=1. Другим параметром usecols = (1,2) укзываем что надо читать колонки 1 и 2.
Код:
dIreal, Ireal = np.loadtxt('CovidData.csv',
delimiter=',', # разделитель - запятая
usecols = (1,2), # читаем 1 и 2 колонки ( нумерация с нуля )
skiprows=1, # пропускаем первую строку заголовка
unpack=True) # декомпозиция колонок на массивы ( списки )
После выполнения колонки dI и Isum окажутся в массивах dIreal и Ireal соответственно.
Для чтения данных для колонк D и R нам надо пропустить строки - они начинаются позже. Код будет аналогичный, но с бОльшим пропуском
Dreal, Rreal = np.loadtxt('CovidData.csv',
delimiter=',',
usecols = (4,6),
skiprows=16,
unpack=True)
Однако "шаманство" начинается если нам надо прочитать даты, особенно если они имеют другой формат - в данном случае надо применять конвертер или лямбда-функцию конвертирования данных. Код:
import datetime as dt
# лямбда-функция конвертирования данных
conv2date = lambda x: dt.datetime.strptime ( x.decode("utf-8"), '%d.%m.%Y')
datesMain = np.loadtxt('CovidData.csv',
delimiter=',',
usecols = (0), # первая колонка
converters={0:conv2date}, # применяем конвертер
dtype='datetime64[D]', # указываем целевой тип данных
skiprows=1 )
Таким образом можно прочитать и даты - в моем случае я для дат использовал тире, как более читаемый символ-разделитель в CSV.
Однако такой набор кода не очень удобен, поэтому я стал смотреть в сторону библиотеки для работы с данными - Pandas.
No comments:
Post a Comment