问题标签 [dask-dataframe]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-s3 - 使用 Dask 将大于内存的数据帧缓存到本地磁盘
我在 S3 中有一堆文件,它们包含一个大于内存的数据帧。
目前,我使用 Dask 将文件读入数据帧,使用较小的数据集执行内部连接(每次调用此函数时都会更改,而huge_df
基本上是完整的数据集并且不会更改),调用计算以获取小得多的熊猫数据框,然后做一些处理。例如:
大部分时间都花在从 S3 下载文件上。我的问题是:有没有办法使用 Dask 将 S3 中的文件缓存在磁盘上,以便在随后调用此代码时,我可以从磁盘读取数据帧文件,而不是从 S3 读取?我想我不能只是打电话huge_df.to_csv(./local-dir/)
,因为这会带入huge_df
记忆中,这是行不通的。
我确信有一种方法可以结合使用其他工具和标准 Python IO 实用程序来做到这一点,但我想看看是否有办法使用 Dask 从 S3 下载文件内容并将它们存储在本地磁盘上没有把一切都带入记忆。
python - 并行化 Dask 聚合
在这篇文章的基础上,我实现了自定义模式公式,但发现此函数的性能存在问题。本质上,当我进入这个聚合时,我的集群只使用我的一个线程,这对性能来说并不是很好。我正在对 16k 行中的 150 多个属性(主要是分类数据)进行计算,我认为我可以将其拆分为单独的线程/进程,然后再将它们重新组合成一个数据帧。请注意,此聚合必须在两列上,因此由于无法将单个列用作索引,我的性能可能会变得更差。
有没有办法将 dask futures 或并行处理合并到聚合计算中?
旁注,我正在使用 Docker 使用 daskdev/dask (2.18.1) docker 映像来启动我的调度程序和工作人员。
dask - Dask Data Lake 这是正确的方法吗?
所以我使用 Dask 来存储大量数据。我们每天获得大约 5000 万行新数据。没有多少列宽。我目前使用 ddf.to_parquet(long_term_storage_directory) 存储数据。当我获得新数据时,我将其附加到 long_term_storage_directory 目录中。一切正常,但速度很慢。
正在使用的索引是我希望当我添加数据时它会简单地添加到 long_term_storage_directory 中长长的镶木地板文件列表中的时间。(long_term_storage_directory 也是同一时间字段的索引)我担心我采用的方法在某些方面存在缺陷。也许我需要使用火花或其他东西来存储数据?
注意:ddf_new_data 的索引与 ddf_long_term_storage_directory 中使用的索引相同。我希望由于新数据的索引与当前在 long_term_storage_directory 中的索引相同,因此将数据添加到长期数据存储会更快。
python - 基于另一列条件的 dask 滚动总和
我有这样的数据框:
我想计算列的rolling
sum
和。这里的问题是我需要计算过去 4 天(例如)而不是前 4 条记录,这实际上意味着,对于我的示例中的行,要聚合的日期范围是. 由于没有 的条目,我们对 3 个可用行进行聚合,并且不包括在我们的计算中(就像在滚动函数中所做的那样)。avg
UNITSUM
15th
20200510 - 20200513
20200512
20200509
pandas
有没有办法做到这一点?
编辑:我必须使用dask-dataframe
API 来实现这一点。
dask - Dask iloc 解决方法?
我想索引到 Dask 数据框——比如 Pandas 中的 iloc,但我知道这是不可能的。
以下是一个好的解决方法吗?有潜在的缺点吗?
我猜这肯定有一些缺点——否则,为什么这不是 Dask 中 iloc 的实现?
scikit-learn - 在集群上应用 Scikit-learn 时对数据位置的困惑(Dask)
我目前正在通过 dask 实现从单台机器到 Slurm 集群的机器学习(Scikit-Learn)。根据一些教程(例如https://examples.dask.org/machine-learning/scale-scikit-learn.html),使用 job_lib.parallel_backend('dask') 非常简单。但是,读取数据的位置让我感到困惑,并且没有任何教程提到它。我应该使用 dask.dataframe 读入数据以确保它被传递到集群,或者我是否只是使用 pd.dataframe 读入它并不重要(然后数据存储在我运行的机器的 RAM 中木星笔记本)?
非常感谢你。
python - 使用 dask DataFrame 有效地加载和操作 csv
我正在尝试使用. dask.dataframe
原始数据框有列'date'、'ticker'、'open'、'close'等...
我的目标是创建一个新的数据框,其中索引“日期”和列作为每个唯一代码的收盘价。
以下代码可以解决问题,但速度很慢,使用了将近一分钟的时间N = 6
。我怀疑 dask 尝试在 for 循环中多次读取 CSV 文件,但我不知道如何让这更快。我最初的猜测是在df.groupby('ticker')
某个地方使用会有所帮助,但我对熊猫还不够熟悉。
感谢您提供各种帮助!谢谢你。
dask - 为什么 dask 的 read_sql_table 需要 index_col 参数?
我正在尝试使用dask中的 read_sql_table,但我遇到了一些与index_col参数相关的问题。我的 sql 表没有任何数值,我不知道给index_col参数提供什么。
我在文档中读到,如果index_col是“object”类型,我必须提供“divisions”参数,但在阅读表格之前我不知道index_col中的值是什么。
我真的很困惑。不知道为什么我在使用 read_sql_table 时必须给出index_col而在使用read_csv时不必给出。
pandas - 通过 dask 读取带有多行文本列的 csv
我必须阅读包含全文数据的csv,它可以是多行的。我可以通过纯 pandas 读取这个 csv(在版本0.25.3
和测试上测试1.0.3
)没有任何问题,但是当我尝试通过 dask 读取这个 csv 时,我收到ParserError: Error tokenizing data. C error: EOF inside string starting at row 28
的行号取决于我尝试读取的文件。
我准备了人工数据框来重现此错误。我可以调整 dask 参数、预处理输入文件还是这是 dask 实现问题?