Python 从数据库获取数据、对其进行操作并将计算保存到csv的最快方法
我一直在寻找答案,互联网在这件事上似乎很矛盾 我所做的逻辑是从数据库中获取数据束,对内存中的数据执行计算,并将结果写入csv文件。我一直认为熊猫是最快的方式,但像这样的帖子:可能会提出其他建议 所以本质上,我提取了5-10个1000-10000行的数据集(都有一个日期列),并将它们放在数据帧中。然后,我创建新的列,这些列是根据现有列进行计算的。到目前为止,我想说的是,由于这些计算(移动平均值等),数据帧是一种方式。此时,所有数据帧的行数和开始日期都相同 然后,我逐行检查每个数据集并进行比较,以确保数据帧行是相同的日期,并使用一个条件,如果该条件为真,我将使用每个数据帧中该行的数据进行计算并保存这些计算 计算完成后,我想将摘要写入csv文件 下一步是在循环中执行此操作,保存摘要并比较摘要,这样可能需要数小时的处理时间,因此我所能做的任何优化都会有所帮助(是的,我将对其进行线程化) 当前占用时间最长的部分正在逐行遍历数据帧。它甚至比在所有数据帧上进行所有计算花费的时间更长 我在每行循环使用的代码是:Python 从数据库获取数据、对其进行操作并将计算保存到csv的最快方法,python,loops,dataframe,Python,Loops,Dataframe,我一直在寻找答案,互联网在这件事上似乎很矛盾 我所做的逻辑是从数据库中获取数据束,对内存中的数据执行计算,并将结果写入csv文件。我一直认为熊猫是最快的方式,但像这样的帖子:可能会提出其他建议 所以本质上,我提取了5-10个1000-10000行的数据集(都有一个日期列),并将它们放在数据帧中。然后,我创建新的列,这些列是根据现有列进行计算的。到目前为止,我想说的是,由于这些计算(移动平均值等),数据帧是一种方式。此时,所有数据帧的行数和开始日期都相同 然后,我逐行检查每个数据集并进行比较,以确
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
我读过双方的帖子,都说这是最快的,其他人说这是最快的
一旦计算完成,我将把它放入字典/列表/数据框(最快的方式?),然后写入csv
希望我已经解释清楚了 熊猫并不是真的被设计成在所有的行中循环。你可能会想做一个应用函数来比较日期。因为你的用例非常具体,所以很难提出任何建议。一般来说,减少进行磁盘IO操作的次数,将所有数据保留在内存中,并在数据帧上执行转换/比较,避免逐行操作。您的标题是数据库…这是sqlite数据库吗?你能先合并数据集吗?我不相信从数据库中合并它们会像移动平均值那样工作。日期的比较可以在数据帧上作为一个整体进行,但是我在那里做,因为我必须遍历每一行,因为我需要在每一行上执行各种条件