2015-02-26 3 views
7

Что лучше, используя встроенный метод Pandas или pickle.dump?Какой самый быстрый способ рассортировать pandas DataFrame?

Стандартный метод рассола выглядит следующим образом:

pickle.dump(my_dataframe, open('test_pickle.p', 'wb')) 

панд встроенный метод выглядит следующим образом:

my_dataframe.to_pickle('test_pickle.p') 
+0

Почему бы просто не сравнить их? – tolanj

+1

@tolanj Что именно вы подразумеваете под бенчмарком? Я включаю тайминги в ответе ниже. – tegan

+0

Для тех, кому нужен хороший тест для сериализации 'panda.DataFrame': [FastSerialization] (http://matthewrocklin.com/blog/work/2015/03/16/Fast-Serialization). –

ответ

9

Благодаря @qwwqwwq я обнаружил, что панды имеют встроенный to_pickle метод для данных. Я сделал быстрый тест времени:

In [1]: %timeit pickle.dump(df, open('test_pickle.p', 'wb')) 
10 loops, best of 3: 91.8 ms per loop 

In [2]: %timeit df.to_pickle('testpickle.p') 
10 loops, best of 3: 88 ms per loop 

Таким образом, кажется, что встроенный только узко лучше (для меня, это полезно, потому что это означает, что, вероятно, не стоит рефакторинга кода, чтобы использовать встроенный) - надеюсь, это поможет кому-то!

+0

Почему вы обеспокоены временем обработки? Я бы подумал, что функциональность важнее. Имеет ли 'to_pickle' какие-либо дополнительные функции? Это просто удобство в том, что вам не нужно импортировать рассол? – endolith

+6

Это довольно поздно, но просто для прослушивания: кажется, что для очень больших кадров данных время записи ('pickle.dump' или' df.to_pickle') примерно одинаково независимо от метода, но время чтения _much_ быстрее для файлов, созданных с помощью 'df.to_pickle'. С 'timeit' на кадре данных размером 53330 строк x 21 столбца, это 115 мс, чтобы распечатать файл, написанный с помощью' pickle.dump', и только 3 мс, чтобы распаковать файл, написанный с помощью 'df.to_pickle'. Не уверен, откуда происходит огромное ускорение, но это довольно заметно. – Tasha

+0

Спасибо за добавление Ташу, очень полезно. Действительно любопытно, почему разница в скорости существует, я бы подумал, что оба они приведут к тому же файлу. – verybadatthis

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