6 votes

Comment convertir un Dataframe Dask en un Array Dask ?

J'ai un objet dask dataframe mais j'aimerais avoir un tableau dask. Comment puis-je réaliser cela ?

7voto

MRocklin Points 2855

Il y a trois façons de procéder.

  1. Utilisez le bien nommé .to_dask_array() méthode
  2. Utilisez le .values ou l'attribut to_records() comme avec Pandas
  3. Utilisez map_partitions pour appeler toute fonction qui convertit un dataframe pandas en un tableau numpy sur toutes les partitions

Voici un exemple qui fait les trois.

>>> 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

Notez que parce que les dataframes Dask ne maintiennent pas le nombre de lignes dans chaque chunk, les tableaux résultants n'auront pas non plus cette information. (notez le NaN dans la forme et la taille des morceaux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X