Думали ли вы сначала преобразовать файлы pickle
в parquet
, а затем загрузить в dask? Я предполагаю, что все ваши данные находятся в папке с именем raw
, и вы хотите перейти в processed
import pandas as pd
import dask.dataframe as dd
import os
def convert_to_parquet(fn, fldr_in, fldr_out):
fn_out = fn.replace(fldr_in, fldr_out)\
.replace(".pickle", ".parquet")
df = pd.read_pickle(fn)
# eventually change dtypes
df.to_parquet(fn_out, index=False)
fldr_in = 'data'
fldr_out = 'processed'
os.makedirs(fldr_out, exist_ok=True)
# you could use glob if you prefer
fns = os.listdir(fldr_in)
fns = [os.path.join(fldr_in, fn) for fn in fns]
Если вы знаете, что в памяти помещается не более одного файла, вы должны использовать al oop
for fn in fns:
convert_to_parquet(fn, fldr_in, fldr_out)
Если вы знаете, что в памяти умещается больше файлов, вы можете использовать delayed
from dask import delayed, compute
# this is lazy
out = [delayed(fun)(fn) for fn in fns]
# now you are actually converting
out = compute(out)
Теперь вы можете использовать dask для анализа.