federleicht
v0.1.0
federleicht 는 pandas.DataFrame 용 캐시 데코레이터를 제공하는 Python 패키지로 가볍고 효율적인 pyarrow Feather 파일 형식을 사용합니다.
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 attrs 사전이없는 pandas.DataFrame 은 .pandas_cache 디렉토리에 캐시되며 파일이 변경된 경우에만 만료됩니다. 자세한 내용은 캐시 만료 섹션을 참조하십시오.
@ 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 |