Я искал ответ, и 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
Надеюсь, у меня есть объяснил сам.