Tanto Python como Pandas
están bien optimizados para leer millones de registros de forma rápida y eficaz. Sin embargo, muchas veces es posible optimizar aún más.
La siguiente imagen es un caso real de una base de datos de 20GB cuya lectura a partir de CSV toma 17 mins y gracias a la siguiente guia logré disminuir el tiempo a menos de 2 mins.
En un primer instante es necesario leer los datos en crudo para iniciar con la optimización.
- Realiza un análisis exploratorio haciendo enfasis en identificar los mejores tipos de datos para cada campo. Este paso es sumamente importante ya que a partir de aquí es posible determinar qué campos son optimizables.
- Por ejemplo, si una variable con 1s y 0s
Pandas
la identifica como float (suele pasar) es muchísimo mejor cambiar el tipo a boolean - Si existe el campo edad o algún otro cuyos valores no son tan altos cambialo a
np.int8
onp.int16
. - Identica los campos de fecha y cambialos a
datetime
otimedelta
según sea el caso - En caso que un campo de tipo string cumpla con las reglas de categorical (similar al factor en R), cambíalo. Este paso optimiza muchísimos procesos y es muy recomedable analizar si aplica.
- Por ejemplo, si una variable con 1s y 0s
Los casos más sensibles son los númericos, pues la optimización de los campos depende del rango de valores qué tiene cada campo y si esta bien que haya NA
. Justo para eso es el análisis exploratorio.
- Corrige errores en los campos de tipo
object
. Por ejemplo, el siguiente bloque de código muestra como es posible hacer algunos cambios en un campo de tipoobject
para posteriormente convertirlo a boolean
df['Casado'] = df['Casado'].replace({1:True,0:False,'VERDADERO':True,'FALSO':False,'TRUE':True,'FALSE':False,'True':True,'False':False,'false':False,'true':True,'1':True,'0':False},regex=True)
df['Casado'] = df.Casado.astype("boolean")
- Después de haber optimizado los campos debes guardar el dataset usando la extensión FEATHER en caso que solo lo vayas a usar en Python o R. En caso que no sea así podrías usar alguna de estas.
Nota: Existen ciertas librerias alternativas a
Pandas
. Puedes usarlas pero desde mi experiencia antes debes identificar si la librería te ayudará después de la lectura ya que algunas tienen limitaciones o son muy estrictas con los tipos de datos, lo que puede dificultar los pasos siguientes.