federleicht adalah paket Python yang menyediakan dekorator cache untuk pandas.DataFrame DataFrame, memanfaatkan format file bulu pyarrow yang ringan dan efisien.
federleicht.cache_dataframe dirancang untuk menghiasi fungsi yang mengembalikan objek pandas.DataFrame . Dekorator menyimpan DataFrame ke file bulu pada panggilan pertama dan memuatnya secara otomatis pada panggilan berikutnya jika ada file.
pandas.DataFrame DataFrame dengan mudah menggunakan format bulu, yang dikenal karena kecepatan dan kesederhanaannya. Untuk mengimplementasikan cache kedaluwarsa, federleicht mensyaratkan semua argumen fungsi yang dihiasi untuk diserializable. Cache akan kedaluwarsa dalam kondisi berikut:
args / kwargs ) dari perubahan fungsi yang dihiasi.os.PathLike dilewatkan sebagai argumen, cache akan kedaluwarsa jika ukuran file dan / atau waktu modifikasi berubah.timedelta yang diberikan.os.PathLikepandas.DataFramepandas.Seriesnumpy.ndarraydatetime.datetimetypes.FunctionType Instal Federleicht dari PYPI:
pip install federleicht Biasanya, md5 digunakan untuk hashing argumen, tetapi untuk hashing lebih cepat, Anda dapat mencoba xxhash sebagai ketergantungan opsional:
pip install federleicht[xxhash]Inilah contoh singkatnya:
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 () Fungsi yang digunakan untuk membandingkan kinerja dekorator 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 pandas.DataFrame tanpa kamus attrs akan di -cache di direktori .pandas_cache dan hanya akan kedaluwarsa jika file berubah. Untuk detail lebih lanjut, lihat bagian Cache Expiry.
@ cache_dataframe
def read_cache ( file : pathlib . Path , ** kwargs ) -> pd . DataFrame :
return read_data ( file , ** kwargs )Hasil sangat bergantung pada konfigurasi sistem dan sistem file. Hasil berikut diperoleh pada:
| 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 |