是否可以遍历dask GroupBy对象来访问底层数据帧?我试过了:
import dask.dataframe as dd
import pandas as pd
pdf = pd.DataFrame({'A':[1,2,3,4,5], 'B':['1','1','a','a','a']})
ddf = dd.from_pandas(pdf, npartitions = 3)
groups = ddf.groupby('B')
for name, df in gro
我需要将SQL表中的条目读取到dask数据帧中,以处理我需要读取的条目数量可能会超过内存中可以容纳的条目数量如何使用dask完成此操作?
我正在做这件事
def get_frame_from_query(query, column_names):
frames = []
batch = []
# TODO ask stackoverflow about this.
for row in database_conn.FetchManyIter(query,batch_size=30000): #read from the database 30k rows at
我想知道是否有可能将dask对象转换为生成器。具体地说,是否可以使用dask数据帧复制以下pandas-based生成器,将每个分区转换为生成器:
import pandas as pd
import dask.dataframe as dd
df = pd.DataFrame(range(10), columns=['a'])
ddf = dd.from_pandas(df, npartitions=3)
def gen_pandas(df):
# this is a sample function, its content is not
# important as l
我试图将两个变量(一个ID和一个DateTime变量)为MultiIndexed的熊猫数据帧转换为dask数据帧,但是我得到了以下错误; "NotImplementedError: Dask does not support MultiIndex Dataframes" 我正在使用下面的代码 import pandas as pd
import dask.dataframe as dd
dask_df = dd.from_pandas(pandas_df) 实际上,我有700多个熊猫数据帧(每个超过100MB),我计划将每个熊猫数据帧转换为dask,然后将它们全部附加到一
我正在dask中构建一个非常大的DAG,以提交给分布式调度器,在分布式调度器中,节点操作数据帧,而数据帧本身可能非常大。一种模式是,我有大约50-60个函数,用于加载数据和构造pandas数据帧,每个数据帧大小为几百MB (并且逻辑上表示单个表的分区)。我想将这些连接到图中下游节点的单个dask数据帧中,同时最小化数据移动。我像这样链接任务:
dfs = [dask.delayed(load_pandas)(i) for i in disjoint_set_of_dfs]
dfs = [dask.delayed(pandas_to_dask)(df) for df in dfs]
return
我正在尝试读取一个大型.parquet作为dask数据帧,并对其进行采样:
ddf = dd.read_parquet("big_data.parquet")
sample_ddf = ddf.sample(frac=0.03)
这会产生以下错误:
ValueError: Arrays chunk sizes are unknown: (nan,)
A possible solution: https://docs.dask.org/en/latest/array-chunks.html#unknown-chunks
Summary: to compute chunks si
根据 answer的说法,如果Dask知道数据帧的索引已排序,则Dask数据帧可以执行智能索引。
如何让Dask知道索引是否已排序?
在我的特定情况下,我这样做:
for source is sources:
# This df has a datetimeindex that I know to be sorted
pd = load_pandas_df_from_some_source(source)
dd = dask.dataframe.from_pandas(pd, chunksize=foo)
dd.to_hdf(some_unique_filename, '
我正在寻找最好的方法来计算存储在数据帧中的许多dask delayed指令。我不确定是否应该将pandas数据帧转换为包含delayed对象的dask数据帧,或者是否应该对pandas数据帧的所有值调用compute调用。
我非常感谢大家的建议,因为我在通过嵌套的for循环传递delayed对象的逻辑上遇到了问题。
import numpy as np
import pandas as pd
from scipy.stats import hypergeom
from dask import delayed, compute
steps = 5
sample = [int(x) for x
我有以下python脚本,其中我使用现有的pandas数据帧创建了一个dask数据帧。我使用的是多进程调度器,因为我的函数使用纯python。调度器创建8个进程(每个分区一个),但它们是按顺序运行的,一次一个。
dask_data = ddf.from_pandas(data, npartitions=8)
dask_data = dask_data.assign(
images_array_1=dask_data.images_array_1.apply(lambda x: [] if x == "" else [int(el) for el in x.split(
我正在从Pandas切换到Dask,并希望在数据帧上执行条件选择。我想提供一个条件列表,最好是布尔数组/序列,然后得到一个应用了所有这些条件的数据帧。 在Pandas中,我只是做了np.all(BoolSeries1,BoolSeries2,...)并将结果应用于数据帧。 import dask.array as da
import dask.dataframe as dd
import numpy as np
import pandas as pd
df = pd.DataFrame({'A' : np.random.rand(1000) , 'B':
当我尝试通过读取pickle文件来创建dask数据帧时,我得到了一个错误
import dask.dataframe as dd
ds_df = dd.read_pickle("D:\test.pickle")
AttributeError: 'module' object has no attribute 'read_pickle'
but it works fine with read_csv
在大熊猫身上,它一如既往地成功了。
所以,如果我在这里或者在dask中做错了什么,请纠正我,我们根本不能通过读取一个pickle文件来创建数据帧
我有一个数据集,它是一个巨大的、短的、胖的矩阵(大约4000 x 20,000,000)。我认为dask对我来说可能是一个很好的解决方案。但是,我希望确保可以将其编码为一个单热矩阵。我查看了dask-ml中的选项,它们似乎总是需要一个dask数据帧。然而,创建一个有2000万列的数据帧似乎真的很奇怪,而且可能会导致大量开销。使用dask数组并以某种方式使用apply on axis将每一列转换为1-hot会更容易吗?谢谢你的建议。