标签: dask

核心4D图像tif存储为hdf5 python

我有27GB的2D Tiff文件,它们代表3D图像电影的片段。我希望能够像分割一个简单的numpy4d数组一样对这些数据进行切片。看起来dask.array是一个很好的工具,用于将数组作为hdf5文件存储在内存中后即可对其进行干净处理。

如果这些文件不能全部放入内存,我该如何首先将它们存储为hdf5文件。我是h5.py和数据库的新手。

谢谢。

python h5py dask

3
推荐指数
1
解决办法
1461
查看次数

使用 Dask 从文件系统/S3 并行读取文件块?

我正在整理一个概念证明,其中我想使用 PyCuda 在分布式环境中处理大型字符数据文件(每个任务一个文件中约 8GB) - 具体来说是 AWS。我知道 HDFS 会对数据文件进行分段并将其分发给工作人员,但我试图让我的环境尽可能简单,并且如果我不需要,我宁愿不必安装 Hadoop。

我最近观看了 Continuum Analytics 的一些关于他们的 Dask 框架的网络研讨会,看起来它可以完全满足我的需求。鉴于上述段落和 Dask 框架,当前对文件系统的推荐是什么?我是坚持使用 HDFS 还是有更好/更简单的解决方案?

distributed-computing dask

3
推荐指数
1
解决办法
1627
查看次数

Dask get_dummies 不转换变量

我正在尝试使用get_dummiesviadask但它不会转换我的变量,也不会出错:

>>> import dask.dataframe as dd
>>> import pandas as pd
>>> df_d = dd.read_csv('/datasets/dask_example/dask_get_dummies_example.csv')
>>> df_d.head()
   uid gender
0    1      M
1    2    NaN
2    3    NaN
3    4      F
4    5    NaN
>>> daskDataCategorical = df_d[['gender']]
>>> daskDataDummies = dd.get_dummies(daskDataCategorical) 
>>> daskDataDummies.head()
  gender
0      M
1    NaN
2    NaN
3      F
4    NaN
>>> daskDataDummies.compute() 
  gender
0      M
1    NaN
2    NaN
3      F
4    NaN
5      F
6      M
7      F
8      M …
Run Code Online (Sandbox Code Playgroud)

python pandas dummy-variable dask

3
推荐指数
1
解决办法
6930
查看次数

dask 中的高效排序差异

如何以“有效”的方式在 Dask 中执行以下操作:

我的 dask 数据框有“日期”(日期时间)、“MAC”(类别)和“ID”(整数)列,它们已经按日期排序,我想获得一个新列,其中包含 http 请求到达的时间增量对于给定的 mac 地址。

在 Pandas 中,我会执行以下操作:设置一个多索引 ['ID', 'MAC'],然后使用df['Date'].diff(1). 似乎不支持多索引,因此无法重现相同的解决方案。重要的部分是必须在给定请求和以下记录器(按日期排序)之间对同一 MAC 进行差异。

python sorting dataframe dask

3
推荐指数
1
解决办法
680
查看次数

Dask就地替换熊猫?

我想知道我是否可以使用 dask 代替 Pandas。我可能面临哪些问题?

1)我猜对于较小的数据集,dask 会比 Pandas 慢。我对此没有意见,因为有时我不知道数据的大小,也不知道服务器配置。

2)我将不得不学习稍微不同的语法(例如计算)

我会遇到 dask 数据框不能做熊猫数据框可以做的事情的情况吗?

dask

3
推荐指数
1
解决办法
911
查看次数

如何将 Pandas 数据帧传递给分布式工作者?

我试图将一个大熊猫数据帧作为函数参数传递给分布式 dask 的工作人员。我尝试过的(X 是我的数据框):

1 将数据直接传递给函数:

def test(X):
    return X
f=client.submit(test, X)
f.result()
Run Code Online (Sandbox Code Playgroud)

2 在初始化函数中保存数据帧。

def worker_init(r_X):
    global X
    X=r_X
client.run(worker_init,X,y)
Run Code Online (Sandbox Code Playgroud)

3 将数据帧分散到所有节点,然后通过期货使用它

def test(X):
    return X
f_X = client.scatter(X, broadcast=True)
f = client.submit(test,f_X)
f.result()
Run Code Online (Sandbox Code Playgroud)

没有一个变体适用于我的情况。变体 1 和 2 的工作方式几乎相同。dask-scheduler 为每个任务增加内存,并且永远不会释放它,直到它耗尽内存并且任务失败。

变体 3 不起作用,因为我没有传递 Pandas 数据帧,而是得到了一些垃圾。

如何将数据帧发送给工作人员并且在调度程序上没有 MemoryError?

变体 3 的完整代码应该是内存高效的,但甚至不传递数据帧:

import pandas as pd
import numpy as np
from distributed import Client
client = Client('localhost:8786')
X = np.random.rand(10000,100)
X=pd.DataFrame(X)
f_X = client.scatter(X, broadcast=True)
def test(X):
    return X
f = …
Run Code Online (Sandbox Code Playgroud)

python distributed pandas dask

3
推荐指数
1
解决办法
1589
查看次数

在 dask 中将日期转换为日期时间索引的列

pd.DatetimeIndex(df_dask_dataframe['name_col'])
Run Code Online (Sandbox Code Playgroud)

我有一个 dask 数据框,我想将带有日期的列转换为日期时间索引。但是我得到一个未实现的错误。有解决方法吗?

pandas dask

3
推荐指数
1
解决办法
1538
查看次数

使用大型 (+15 gb) CSV 数据集和 Pandas/XGBoost

我试图找到一种开始在 Pandas 中处理非常大的 CSV 文件的方法,最终能够使用 XGBoost 进行一些机器学习。

我在使用 mySQL 或一些 sqllite 框架来管理我的数据块之间挣扎;我的问题是稍后的机器学习方面,以及一次加载块以训练模型。

我的另一个想法是使用Dask,它是由 Pandas 构建的,但也具有 XGBoost 功能。

我不确定最好的起点是什么,并希望征求意见!我倾向于,Dask但我还没有使用它。

python machine-learning pandas dask xgboost

3
推荐指数
1
解决办法
2919
查看次数

如何将包含数组列的Dask数据框写入拼花文件

我有一个Dask数据框,其中一列包含一个浮点数的numpy数组:

import dask.dataframe as dd
import pandas as pd
import numpy as np

df = dd.from_pandas(
    pd.DataFrame(
        {
            'id':range(1, 6),
            'vec':[np.array([1.0, 2.0, 3.0, 4.0, 5.0])] * 5
        }), npartitions=1)

df.compute()

   id                        vec
0   1  [1.0, 2.0, 3.0, 4.0, 5.0]
1   2  [1.0, 2.0, 3.0, 4.0, 5.0]
2   3  [1.0, 2.0, 3.0, 4.0, 5.0]
3   4  [1.0, 2.0, 3.0, 4.0, 5.0]
4   5  [1.0, 2.0, 3.0, 4.0, 5.0]
Run Code Online (Sandbox Code Playgroud)

如果我尝试将其写为实木复合地板,则会出现错误:

df.to_parquet('somefile')
....
Error converting column "vec" to bytes using encoding UTF8. Original …
Run Code Online (Sandbox Code Playgroud)

python dask fastparquet

3
推荐指数
1
解决办法
608
查看次数

避免大熊猫DataFrame上GroupBy的内存问题

更新:

pandas df是这样创建的:

df = pd.read_sql(query, engine)
encoded = pd.get_dummies(df, columns=['account'])
Run Code Online (Sandbox Code Playgroud)

从此df创建一个dask df如下所示:

df = dd.from_pandas(encoded, 50)
Run Code Online (Sandbox Code Playgroud)

轻而易举地执行操作不会导致可见的进度(使用轻便的诊断程序进行检查):

result = df.groupby('journal_entry').max().reset_index().compute()
Run Code Online (Sandbox Code Playgroud)

原版的:

我有一个具有270万行和4,000列的大熊猫df。除四列外,所有列均为dtype uint8。uint8列仅保留值1或0。我试图在df上执行此操作:

result = df.groupby('id').max().reset_index()
Run Code Online (Sandbox Code Playgroud)

可以预期,此操作将立即返回内存错误。我最初的想法是在水平和垂直方向上对df进行分块。但是,这会造成混乱,因为.max()需要跨所有uint8列(而不仅仅是一对列)执行该操作。此外,像这样对df进行分块仍然非常慢。我的机器上有32 GB的RAM。

哪种策略可以减轻内存问题?

python memory dataframe pandas dask

3
推荐指数
2
解决办法
3041
查看次数