Производительность решения Python Pandas vs. C ++ для импорта текстовых данных CSV

У нас есть инструмент для импорта / преобразования данных, в настоящее время написанный на C ++, который обрабатывает в основном текстовые (например, временные метки в нескольких различных форматах) данные и применяет некоторую нормализацию / санитарную обработку.

Текущее решение очень быстрое и производительность имеет решающее значение. Например. мы оптимизировали, чтобы минимизировать / избежать выделения объектов в цикле синтаксического анализа, поскольку это вызывается для каждой строки, которую мы обрабатываем, и может оказать серьезное влияние на производительность.

Мы хотим добиться гибкости, добавляя новые форматы ввода или применяя дополнительные преобразования, просто изменяя файл сценария / конфигурации вместо перекомпиляции приложения.

Вопрос в том, сможем ли мы достичь сопоставимой производительности, используя среду обработки данных Python Pandas, поскольку в большинстве из них, похоже, также используется низкоуровневый оптимизированный C-код.

(«сопоставимый» здесь означает, что разница в производительности находится в пределах, которые могут быть компенсированы добавлением 2-4 дополнительных потоков)

Является ли Pandas подходящим инструментом для этой работы или есть разные предложения?

2

Решение

Не для того, чтобы сбить вас с толку, но если вы ДЕЙСТВИТЕЛЬНО хотите скорость, то 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
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]