2016-12-21 2 views
3

dask.DataFrameのメソッドはすべて、インデックス列がソートされていることを確認しているようです。しかし、from_delayedを使用することによって、ソートされていないインデックス列、持っているDASKのデータフレーム構築することが可能である:順序付けられていないインデックスを持つdaskデータフレームでサイレントエラーが発生する可能性がありますか?

pdf1 = delayed(pd.DataFrame(dict(A=[1,2,3], B = [1,1,1])).set_index('A')) 
pdf2 = delayed(pd.DataFrame(dict(A=[1,2,3], B = [1,1,1])).set_index('A')) 
ddf = dd.from_delayed([pdf1,pdf2]) #dask.DataFrame with unordered index 

組み合わせを[インデックスが設定され、インデックスがソートされていない、各部門が不明である]のものです私自身が作成したデータフレームの中でこれまで見たことがないものです。だから私の質問は:

  • このようなデータフレームで正常に動作するようにdaskテストされていますか?
  • このようなデータフレームでの計算が間違った結果を示すことさえあるかもしれません。彼らはソートされるべきインデックスを仮定しているか、不完全なデータのサブセットに対して実行されているからです。
  • さらに一般的には、インデックス列がソートされていない場合、インデックスによるアクセスの速度が遅くなるか、機能が停止するだけですか?

答えて

2

多くのdask.dataframe操作では、既知のディビジョンのないデータフレームでは、動作が遅くなったり、遅いアルゴリズムで動作したりします。 http://dask.pydata.org/en/latest/dataframe-design.html#partitions

たとえば、df.locは、dask.dataframeがインデックスがソートされており、各パーティションの最小/最大を認識している場合、高速です。しかし、この情報がわからない場合、df.locはすべてのパーティションを徹底的に調べなければなりません。

一般的に、dask.dataframeは、あなたがそれを起動し、それに応じて動作する可能性を認識しています。いくつかの操作は遅くなります。一部の操作は操作を拒否します。

関連する問題