我有一些大型 csv 文件,我需要将它们合并在一起。每个文件大约 5gb,我的 RAM 只有 8gb。我使用以下代码将一些 csv 文件读入数据框并将它们合并到列fund_ticker
ticker
和date
.
import numpy as np
import pandas as pd
# Read in data, ignore column "version"
table1 = pd.read_csv(r'C:\data\data1.csv', usecols=lambda col: col not in ["Version"])
table2 = pd.read_csv(r'C:\data\data2.csv', usecols=lambda col: col not in ["Version"])
weight = pd.read_csv(r'C:\data\data3.csv', usecols=lambda col: col not in ["Version"])
print("Finish reading")
# merge datasets
merged = data1.merge(data2, on=['fund_ticker', 'TICKER', 'Date']).merge(data3, on=['fund_ticker', 'TICKER', 'Date'])
不幸的是,我收到以下错误:
numpy.core._exceptions.MemoryError: Unable to allocate 105. MiB for an array with shape (27632931,) and data type object
在互联网上搜索后,我认为问题在于数据大于我的 RAM。为了克服这个问题,我正在考虑使用一些数据库,例如 SQL 或 parquet 文件。我的问题是处理大型数据集最有效的方法是什么?我的数据是财务数据,最高可达 500 Gb 或 1 Tb。一些关于如何设置的指导将不胜感激。谢谢