federleicht es un paquete de Python que proporciona un decorador de caché para pandas.DataFrame , utilizando el formato de archivo de plumas pyarrow liviano y eficiente.
federleicht.cache_dataframe está diseñado para decorar funciones que devuelvan los objetos pandas.DataFrame . El decorador guarda el marco de datos en un archivo de plumas en la primera llamada y lo carga automáticamente en las llamadas posteriores si el archivo existe.
pandas.DataFrame sin esfuerzo utilizando el formato de plumas, conocido por su velocidad y simplicidad. Para implementar el vencimiento de la caché, federleicht requiere que todos los argumentos de la función decorada sean serializables. El caché caducará en las siguientes condiciones:
args / kwargs ) de la función decorada cambian.os.PathLike como argumento, el caché caducará si cambia el tamaño del archivo y / o el tiempo de modificación.timedelta determinado.os.PathLikepandas.DataFramepandas.Seriesnumpy.ndarraydatetime.datetimetypes.FunctionType Instale Federleicht de Pypi:
pip install federleicht Normalmente, md5 se usa para hash los argumentos, pero para el hashing aún más rápido, puede probar xxhash como una dependencia opcional:
pip install federleicht[xxhash]Aquí hay un ejemplo rápido:
import pandas as pd
from federleicht import cache_dataframe
@ cache_dataframe
def generate_large_dataframe ():
# Simulate a heavy computation
return pd . DataFrame ({ "col1" : range ( 10000 ), "col2" : range ( 10000 )})
df = generate_large_dataframe () Funciones que se utilizan para comparar el rendimiento del decorador cache_dataframe .
def read_data ( file : str , ** kwargs ) -> pd . DataFrame :
"""
Read the earthquake dataset from a CSV file to Benchmark cache.
Perform some data type conversions and return the DataFrame.
"""
df = pd . read_csv (
file ,
header = 0 ,
dtype = {
"status" : "category" ,
"tsunami" : "boolean" ,
"data_type" : "category" ,
"state" : "category" ,
},
** kwargs ,
)
df [ "time" ] = pd . to_datetime ( df [ "time" ], unit = "ms" )
df [ "date" ] = pd . to_datetime ( df [ "date" ], format = "mixed" )
return df El pandas.DataFrame sin el diccionario attrs se almacenará en caché en el directorio .pandas_cache y solo caducará si el archivo cambia. Para obtener más detalles, consulte la sección de cadena de caché.
@ cache_dataframe
def read_cache ( file : pathlib . Path , ** kwargs ) -> pd . DataFrame :
return read_data ( file , ** kwargs )Los resultados dependen fuertemente de la configuración del sistema y del sistema de archivos. Los siguientes resultados se obtienen en:
| nrows | read_data [s] | build_cache [s] | read_cache [s] |
|---|---|---|---|
| 10000 | 0.060 | 0.076 | 0.037 |
| 32170 | 0.172 | 0.193 | 0.033 |
| 103493 | 0.536 | 0.569 | 0.067 |
| 332943 | 1.658 | 1.791 | 0.143 |
| 1071093 | 5.383 | 5.465 | 0.366 |
| 3445752 | 16.750 | 17.720 | 1.141 |