2016-12-21 2 views
3

Методы вокруг dask.DataFrame все, похоже, убедитесь, что сортировка столбца индекса. Тем не менее, с помощью from_delayed, можно построить DASK dataframe, который имеет индекс столбца, который не отсортирован:Может ли dask dataframe с неупорядоченным индексом вызывать бесшумные ошибки?

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 

Комбинация [индекс устанавливается, индекс не отсортирован, деление неизвестно] является то, что я никогда не видел среди dataframes, созданных самим dask. Так что я задавал следующие вопросы:

  • Является ли dask проверенным, чтобы хорошо работать с такими кадрами данных?
  • Могут ли даже быть, что вычисления на таких кадрах данных дают неправильные результаты молча, например. потому что они предполагают, что индекс должен быть отсортирован или выполнен на неполном подмножестве данных?
  • Или более общий: если индексный столбец не отсортирован, он только замедляет доступ по индексу или нарушает функциональность?

ответ

2

Многие операции с dask.dataframe отказываются работать или будут работать с более медленными алгоритмами на кадрах данных без известных разделов. См. http://dask.pydata.org/en/latest/dataframe-design.html#partitions

Например, df.loc быстро, если dask.dataframe знает, что индекс отсортирован и он знает min/max каждого раздела. Однако, если эта информация неизвестна, то df.loc должен исчерпывающе просматривать все разделы.

Вообще говоря, dask.dataframe знает о возможности того, что вы воспитываете и должны действовать соответствующим образом. Некоторые операции будут медленнее. Некоторые операции отказываются работать.

Смежные вопросы