Самый быстрый способ взять данные из базы данных, манипулировать ими и сохранять вычисления в CSV - PullRequest
0 голосов
/ 20 февраля 2020

Я искал ответ, и inte rnet кажется очень противоречивым в этом вопросе.

Лог c того, что я делаю, - это сбор данных из базы данных, выполнение вычислений на данные в памяти и запись результатов в CSV-файл. Я всегда думал, что pandas - это самый быстрый способ, но сообщения вроде этого: Какой самый быстрый и эффективный способ добавить строки в DataFrame? может предложить иное.

Итак, по сути, Я извлекаю 5-10 наборов данных (все имеют столбец даты) из 1000-10000 строк и помещаю их в кадры данных. Затем я создаю новые столбцы, которые являются расчетами из существующих столбцов. До этого момента я бы сказал, что из-за этих вычислений кадры данных - это путь к go (скользящие средние и c). На этом этапе все кадры данных имеют одинаковое количество строк и дат начала.

I затем go по каждой строке набора данных по каждой строке и сравниваем, чтобы убедиться, что строка в кадре данных совпадает с той же датой и использует условие, и если это условие истинно, я делаю вычисления, используя данные из этой строки в каждом кадре данных, и сохраняю эти вычисления.

Как только вычисления завершены, я хочу записать сводку в файл CSV.

Следующим шагом будет сделать это в al oop, сохранить сводку и сравнить итоги, чтобы это могло занять, возможно, часы обработки, поэтому любая оптимизация, которую я могу сделать, поможет (да, я это сделаю)

Часть, которая в настоящее время занимает наибольшее время, проходит через кадр данных строка за строкой. Это даже занимает больше времени, чем выполнение всех вычислений на всех фреймах данных.

Код, который я использую циклически в каждой строке:

for i in df.index:
   if df.iloc[i]['Date'] != df2.iloc[i]['Date'] etc.
       break #throw critical error
   Calculations using df.iloc[i]['data column'] to pull the data from the dataframe

Я прочитал посты с обеих сторон, в которых говорится, что это самые быстрые, другие говорят, что itertuples быстрее ..

Как только вычисления завершатся, я брошу их в словарь / список / dataframe (самый быстрый способ?), а затем напишу в csv

Надеюсь, у меня есть объяснил сам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...