[英]Dask dataframe saving to_csv for incremental data - Effecient Writing to csv
我有一个现有代码用于读取流数据并使用pandas
DataFrame 存储它(新数据每 5 分钟出现一次),然后我明智地捕获此数据类别(~350 个类别)。
接下来,我在循环中使用to_csv
写入所有新数据(因为这是增量存储)。
伪代码如下:
for row in parentdf.itertuples(): #insert into <tbl> .
mycat = row.category # this is the ONLY parameter which is passed to the Key function below.
try:
df = FnforExtractingNParsingData(mycat ,NumericParam1,NumericParam1)
df.insert(0,'NewCol',sym)
df = df.assign(calculatedCol = functions1(params))
df = df.assign(calculatedCol1 = functions2(params),20))
df = df.assign(calculatedCol3 = functions3(More params),20))
df[20:].to_csv(outfile, mode='a', header=False, index=False)
csv 中的类别读取和存储需要2 分钟-每个周期*。 对于 350 个类别的增量写入,这接近 0.34 秒。 我想知道我是否可以通过使用dask
数据帧使上述过程更快、更高效。
我查阅了 dask.org 并没有得到任何明确的答案,我也查看了用例。
其他详细信息:我正在使用 Python 3.7 和Pandas 0.25 ,而且上面的代码不会返回任何错误,即使我们已经在上面完成了大量的异常处理。 我的密钥 function 即FnforExtractingNParsingData相当有弹性,并且可以按预期工作很长时间。
听起来您每 5 分钟将数据读入 Pandas DataFrame,然后将其写入磁盘。 这个问题没有提到一些关键事实:
FnforExtractingNParsingData
执行哪些数据操作?Dask DataFrame 可以作为多个 CSV 文件并行写入磁盘,这比使用 Pandas 写入单个文件要快很多,但这要视情况而定。 Dask 对于一个很小的数据集来说有点矫枉过正。 Dask 可以利用一台机器的所有 CPU,因此它可以比大多数人意识到的更好地在一台机器上进行扩展。 对于大型数据集,Dask 会有很大帮助。 请随时在您的问题中提供更多详细信息,我可以提供更具体的建议。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.