Сохранение разделов dataframe на паркет с помощью dask

В настоящее время я пытаюсь сохранить и прочитать информацию из файлов dask в файлы parquet. Но при попытке сохранить фрейм данных с помощью dask "to_parquet" и последующей его повторной загрузки с помощью "read_parquet" кажется, что информация о разделении теряется.

>>df.divisions
(Timestamp('2014-10-01 17:25:17.928000'), Timestamp('2014-10-01 17:27:18.000860'), Timestamp('2014-10-01 17:29:19.000860'), Timestamp('2014-10-01 17:31:19.000860'), Timestamp('2014-10-01 17:33:20.000860'), Timestamp('2014-10-01 17:35:20.763000'), Timestamp('2014-10-01 17:36:12.992860'))
>>df.to_parquet(folder)
>>del df
>>df = dask.dataframe.read_parquet(folder)
>>df.divisions
(None, None, None, None, None, None, None)

Это предназначено? Мой текущий обходной путь - снова установить индекс после загрузки, но это занимает много времени.

>> df = dask.dataframe.read_parquet(folder,index=False).set_index('timestamp', sorted=True)
>> df.divisions
(Timestamp('2014-10-01 17:25:17.928000'), Timestamp('2014-10-01 17:27:18.000860'), Timestamp('2014-10-01 17:29:19.000860'), Timestamp('2014-10-01 17:31:19.000860'), Timestamp('2014-10-01 17:33:20.000860'), Timestamp('2014-10-01 17:35:20.763000'), Timestamp('2014-10-01 17:36:12.992860'))

Или мне не хватает некоторых параметров при сохранении и загрузке?


person lennart    schedule 22.11.2017    source источник


Ответы (1)


Протестировано с бэкэндом fastparquet, похоже, работает:

> import pandas.util.testing as tm
> df = tm.makeTimeDataFrame()
> df
                   A         B         C         D
2000-01-03 -0.414197  0.459438  1.105962 -0.791487
2000-01-04 -0.875873  0.987601  0.881839 -1.339756
2000-01-05  0.552543  3.415769  1.008780  0.127757
...
> d = dd.from_pandas(df, 2)
> d.to_parquet('temp.parq')
> dd.read_parquet('temp.parq').divisions
(Timestamp('2000-01-03 00:00:00'),
 Timestamp('2000-01-24 00:00:00'),
 Timestamp('2000-02-11 00:00:00'))
person mdurant    schedule 23.11.2017
comment
Спасибо! Ты прав. После вашего ответа я перепроверил свои данные и обнаружил, что образцы отсортированы неправильно. После перетасовки с помощью set_index (sorted = False) я могу читать / записывать данные с правильной информацией о разделении на паркет. - person lennart; 24.11.2017