Comparativa formato Pickle

Comparativa formato Pickle

En este nuevo Lab, vamos a argumentar por que utilizar el formato pickle durante el resto  de Labs. Y basicamente es por la rapidez, y sobretodo, no hemos tratado el tema de Modin, un modulo, en el que tengo personalmente mucha fe depositada, y del cual hablaremos con profundidad en posteriores ocasiones.

Recuerda unirte a nuestro canal en Telegram Python Para Trading!


Modin is an early-stage project at UC Berkeley’s RISELab designed to facilitate the use of distributed computing for Data Science. It is a multiprocess Dataframe library with an identical API to pandas that allows users to speed up their Pandas workflows.


https://towardsdatascience.com/get-faster-pandas-with-modin-even-on-your-laptops-b527a2eeda74


Pickle It is used for serializing and de-serializing a Python object structure. Any object in python can be pickled so that it can be saved on disk. What pickle does is that it “serialises” the object first before writing it to file. Pickling is a way to convert a python object (list, dict, etc.) into a character stream. The idea is that this character stream contains all the information necessary to reconstruct the object in another python script.


https://pythontips.com/2013/08/02/what-is-pickle-in-python/

El notebook y el dataset utilizado para estas pruebas, lo podras encontrar en : 

La importancia del formato pickle en pandas.

Las ventajas de los formatos .pickle, frente a cualquier otro formato, para mi son evidentes. Somos personas, que necesitamos abrir muchos datos, tratarlos, manipularlos, crear nuevos campos, y luego debemos poder guardarlo.
Por consecuencia, vamos a realizar unas pruebas, para ver que formato nos conviene mas utilizar.
Supongamos que estamos en un universo perfecto, donde nos entregan el dataset ya preprocesado, y en un perfecto order en un archivo .csv.

Tenemos un tiempo rapido de carga, pero claro, un archivo, y ya preprocesado, todos sabemos que los datos nunca suelen llegar de esta manera
Pero bueno, hagamos trampas al solitario y pensemos que si....

In [1]:
%time import pandas as pd
Wall time: 491 ms
In [2]:
%time data = pd.read_csv('C1500000 Sales Records.csv')
Wall time: 2.87 s
In [3]:
data.shape
Out[3]:
(1500000, 14)

Vale, hemos cargado un dataset de unos 200mb, en menos de 3 segundos. ¿ Que mas podemos pedir ?

In [14]:
%time data.to_csv("data.csv")
Wall time: 18.1 s

Vemos, que ya nos vamos a 20 segundos en pasar nuestro dataframe a csv, sin ni siquiera tocarlo.

La opcion de los xlsx, es la peor de todas con diferencia. Aunque es la favorita de muchos ;).

In [5]:
%time data.to_excel("data.xlsx")
Wall time: 5min 53s
In [13]:
%time excel = pd.read_excel("data.xlsx")
Wall time: 3min 18s

Vamos a probar con los .pickle

In [7]:
%time data.to_pickle("data.pickle")
Wall time: 1.23 s
In [8]:
%time pickle = pd.read_pickle("data.pickle")
Wall time: 763 ms

Con esto quiero justificar el uso de pickle en todos los notebooks, a todos nos llegan los datos de multitud de fuentes, cada una con sus caracteristicas concretas, y nos toca pasar por arduos procesos, para poder tener un dataframe con nuestra informacion. Pues ahorraremos estos procesos en el futuro, ademas de agilizar el trabajo, con una carga o escritura mas rapida de ficheros.
Por mi experiencia particular, para cargar datos de opciones financieras,es una ardua tarea de ficheros de 200mb por dia, y como queramos cargar un historico medio razonable,
se pueden ir a procesos de hasta 20h. Luego lo volcamos todo en un pickle, y no tardamos ni un segundo para estar funcionando.

In [ ]:
 
Share:

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *