federleicht
v0.1.0
federleicht是一個Python軟件包,可為pandas.DataFrame提供緩存裝飾,並使用輕巧有效的pyarrow羽毛文件格式。
federleicht.cache_dataframe旨在裝飾返回pandas.DataFrame對象的功能。裝飾器將數據框保存到第一個呼叫上的羽毛文件中,並在文件存在時自動加載其在後續呼叫上加載。
pandas.DataFrame毫不費力地使用以速度和簡單性而聞名的羽毛格式。要實施緩存到期, federleicht要求裝飾功能的所有參數都是可序列化的。緩存將在以下條件下到期:
args / kwargs )更改,緩存將到期。os.PathLike對像作為參數傳遞時,如果文件大小和 /或修改時間更改,緩存將到期。timedelta年齡大時會過期。os.PathLikepandas.DataFramepandas.Seriesnumpy.ndarraydatetime.datetimetypes.FunctionType 從PYPI安裝Federleicht:
pip install federleicht通常, md5用於哈希參數,但是對於更快的哈希,您可以嘗試xxhash作為可選依賴性:
pip install federleicht[xxhash]這是一個快速示例:
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 ()用於基準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沒有attrs字典的dataframe將在.pandas_cache Directory中被緩存,並且只有在文件更改時才會到期。有關更多詳細信息,請參見“緩存到期”部分。
@ cache_dataframe
def read_cache ( file : pathlib . Path , ** kwargs ) -> pd . DataFrame :
return read_data ( file , ** kwargs )結果在很大程度上取決於系統配置和文件系統。獲得以下結果:
| 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 |