У нас есть инструмент для импорта / преобразования данных, в настоящее время написанный на C ++, который обрабатывает в основном текстовые (например, временные метки в нескольких различных форматах) данные и применяет некоторую нормализацию / санитарную обработку.
Текущее решение очень быстрое и производительность имеет решающее значение. Например. мы оптимизировали, чтобы минимизировать / избежать выделения объектов в цикле синтаксического анализа, поскольку это вызывается для каждой строки, которую мы обрабатываем, и может оказать серьезное влияние на производительность.
Мы хотим добиться гибкости, добавляя новые форматы ввода или применяя дополнительные преобразования, просто изменяя файл сценария / конфигурации вместо перекомпиляции приложения.
Вопрос в том, сможем ли мы достичь сопоставимой производительности, используя среду обработки данных Python Pandas, поскольку в большинстве из них, похоже, также используется низкоуровневый оптимизированный C-код.
(«сопоставимый» здесь означает, что разница в производительности находится в пределах, которые могут быть компенсированы добавлением 2-4 дополнительных потоков)
Является ли Pandas подходящим инструментом для этой работы или есть разные предложения?
Не для того, чтобы сбить вас с толку, но если вы ДЕЙСТВИТЕЛЬНО хотите скорость, то HDF5 — это путь, а НЕ даже анализ паролей (так что небольшая предварительная обработка может иметь большое значение). соответствующее сравнение hdf и sql
In [9]: df = DataFrame(randn(1000000,2),columns=list('AB'))
In [10]: df['date'] = Timestamp('20130101')
In [11]: df.to_csv('test.csv',mode='w')
In [12]: df.to_hdf('test.h5','df',mode='w')
In [13]: %timeit read_csv('test.csv',index_col=0)
1 loops, best of 3: 948 ms per loop
In [14]: %timeit pd.read_hdf('test.h5','df')
10 loops, best of 3: 20.2 ms per loop
Других решений пока нет …