Мне нужно объединить большие фреймы данных в dask, но ядро моего ноутбука Jupyter выходит из строя из-за нехватки памяти. У меня 64 ГБ ОЗУ, но исходные наборы данных настолько скудны (данные о медицинских требованиях), и это объединение приводит к более чем 100 миллионам строк. Я читал, что Dask будет хорошим инструментом для обработки данных, которые не помещаются в память, но не уверен, правильно ли я его использую. Я читаю все свои файлы CSV, а также использовал размер блоков, чтобы перераспределить их для Dask. Я также включил функцию сохранения промежуточных ступеней как паркета. Есть ли способ, например, сохранить промежуточные результаты во время последнего слияния на диск, чтобы освободить немного памяти во время этой процедуры. Или есть другие инструменты, которые лучше подойдут для решения этой проблемы?
import dask.dataframe as dd
def save_and_reload(df, file_name):
"""
Saves the Dask DataFrame to a Parquet file and reloads it.
"""
df = df.repartition(npartitions=10) # Adjust partitions for better performance
df.to_parquet(file_name, write_index=False)
return dd.read_parquet(file_name)
def main():
# Read 11 CSV with smaller partitions
df = dd.read_csv(
file_path,
sep='\t',
dtype=dtypes.get(table_name, None),
parse_dates=parse_dates.get(table_name, None),
assume_missing=True,
blocksize="16MB"
)
# Merge step-by-step with intermediate saving for 11 .csvs
df_merged = dd.merge(dataframes['insurance_information'], dataframes['insurants'], on='pid', how='left')
df_merged = save_and_reload(df_merged, 'intermediate_1.parquet')
# This goes on for 10 more .csvs
df_merged = dd.merge(df_merged, dataframes['outpatient_fees'], on='pid', how='left')
df_merged = save_and_reload(df_merged, 'intermediate_10.parquet')
# After this merge the kernel crashes
df_merged = dd.merge(df_merged, dataframes['inpatient_fees'], on='pid', how='left')
df_merged = save_and_reload(df_merged, 'final_result.parquet')
if __name__ == "__main__":
main()
Подробнее здесь: https://stackoverflow.com/questions/793 ... nto-memory
Dask объединяет два больших фрейма данных, которые не помещаются в память ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Dask – Как оптимизировать вычисление первой строки каждого раздела в кадре данных dask?
Anonymous » » в форуме Python - 0 Ответы
- 33 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Dask – Как оптимизировать вычисление первой строки каждого раздела в кадре данных dask?
Anonymous » » в форуме Python - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Python объединяет или объединяет несколько dfs с пересекающимся индексом даты и времени
Anonymous » » в форуме Python - 0 Ответы
- 28 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Python объединяет или объединяет несколько dfs с пересекающимся индексом даты и времени
Anonymous » » в форуме Python - 0 Ответы
- 21 Просмотры
-
Последнее сообщение Anonymous
-