База данных или табличное решение для временных массивов Numpy

Я создаю настольное приложение Python, которое позволяет пользователям выбирать различные формы распространения для моделирования данных о урожае сельскохозяйственных культур. У меня есть временные ряды сельскохозяйственных данных – около миллиона строк – сохранены в базе данных SQLite (хотя это не установлено в камне, если кто-то знает о лучшем выборе). Как только пользователь выберет некоторые данные, скажем, урожай кукурузы в 1990-2010 годах в штате Иллинойс, я хочу, чтобы они выбрали форму распределения из раскрывающегося списка. Затем моя функция соответствует распределению данных и выводит 10 000 точек, взятых из этой установленной формы распределения в массиве Numpy. Я бы хотел, чтобы эти данные были временными во время выполнения программы.

В попытке быть эффективными я хотел бы только сделать это подходящим и последующий рисунок чисел один раз для определенного региона и распространения. Я изучал временные файлы в Python, но я не уверен, что это лучший подход для сохранения множества разных массивов Numpy. PyTables также выглядит как интересный подход и, похоже, совместим с Numpy, но я не уверен, что он хорош для обработки временных данных. Никакие SQL-решения, такие как MongoDB, в наши дни не очень популярны, что также меня интересует с точки зрения построения резюме.

Изменить: прочитав комментарий ниже и исследуя его, я собираюсь пойти с PyTables, но я пытаюсь найти лучший способ справиться с этим. Возможно ли создать таблицу, как показано ниже, где вместо Float32Col я могу использовать createTimeSeriesTable () из класса временных рядов scikits или мне нужно создать столбец datetime для даты и булевский столбец для маски, в дополнение к Float32Col для хранения данных. Или есть лучший способ решить эту проблему?

class Yield(IsDescription): geography_id = UInt16Col() data = Float32Col(shape=(50, 1)) # for 50 years of data 

Любая помощь по этому вопросу была бы весьма признательна.

One Solution collect form web for “База данных или табличное решение для временных массивов Numpy”

Каков ваш прецедент для временных данных? Вы просто будете читать все это сразу (и никогда не хотите просто читать в подмножестве)?

Если это так, просто сохраните массив во временном файле (например, с numpy.save или, что то же самое, pickle с помощью двоичного протокола). В этом случае нет необходимости в более удобных решениях.

С другой стороны, я настоятельно рекомендую PyTables над SQLite для хранения ваших исходных данных временных рядов.

Основываясь на том, как это звучит, как будто вы делаете, вам не понадобятся «реляционные» части реляционной базы данных (например, объединения). Если вам не нужно присоединяться или связывать таблицы, вам просто нужны быстрые простые запросы, и вы хотите, чтобы данные в памяти были массивом numpy, PyTables – отличный вариант. PyTables использует HDF для хранения ваших данных, которые могут быть намного компактнее на диске, чем база данных SQLite. PyTables также значительно быстрее загружает большие куски данных в память в виде массивов numpy.

  • Как установить h5py (+ numpy + libhdf5 + ...) как не root в системе Debian Linux
  • Научные библиотеки для Lua?
  • Вызов функций статистики из Scipy
  • Непрерывная взаимная информация в Python
  • Захват высокой многоколоничности в статистических моделях
  • Почему использование tanh-определения логистического сигмоида быстрее, чем истечение срока действия scipy?
  • numid-сумма антидиагоналей массива
  • поместить нескольких gaussians в данные в python
  • Спектрограмма волнового файла
  • imresize в PIL / scipy.misc работает только для uint8 изображений? любые альтернативы?
  • Как интерпретировать верхнюю / нижнюю границу datapoint с доверительными интервалами?
  • Python - лучший язык программирования в мире.