Как преобразовать Dask Dataframe в Dask Array? - PullRequest
0 голосов
/ 31 августа 2018

У меня есть объект dask dataframe, но я хотел бы иметь массив dask. Как мне это сделать?

1 Ответ

0 голосов
/ 31 августа 2018

Есть три способа сделать это.

  1. Используйте метко названный .to_dask_array () метод
  2. Используйте атрибут .values или метод to_records(), как в случае с Pandas
  3. Используйте map_partitions для вызова любой функции, которая преобразует фрейм данных pandas в пустой массив на всех разделах

Вот пример выполнения всех трех.

>>> import dask

>>> df = dask.datasets.timeseries()

>>> df
Dask DataFrame Structure:
                   id    name        x        y
npartitions=30                                 
2000-01-01      int64  object  float64  float64
2000-01-02        ...     ...      ...      ...
...               ...     ...      ...      ...
2000-01-30        ...     ...      ...      ...
2000-01-31        ...     ...      ...      ...
Dask Name: make-timeseries, 30 tasks

>>> import numpy as np

>>> df.map_partitions(np.asarray)
dask.array<asarray, shape=(nan, 4), dtype=object, chunksize=(nan, 4)>

>>> df.to_dask_array()
dask.array<array, shape=(nan, 4), dtype=object, chunksize=(nan, 4)>

>>> df.values
dask.array<values, shape=(nan, 4), dtype=object, chunksize=(nan, 4)>

>>> df.to_records()  # note that this returns a record array
dask.array<to_records, shape=(nan,), dtype=(numpy.record, [('timestamp', 'O'), ('id', '<i8'), ('name', 'O'), ('x', '<f8'), ('y', '<f8')]), chunksize=(nan,)

>>> dask.__version__
0.19.0

Обратите внимание, что поскольку кадры данных Dask не поддерживают количество строк в каждом чанке, полученные массивы также не будут содержать эту информацию. (обратите внимание на NaN значения в форме и размере куска.

...