我有3个40 GB的巨大数据帧,我使用块将其打开。现在,我想将它们连接在一起。这是我尝试过的:
path = 'path/to/myfiles'
files = [os.path.join(path,i) for i in os.listdir(path) if i.endswith('tsv')]
for file in files:
cols = ['col1','col2','col3']
chunks = pd.read_table(file, sep='\t', names=cols, chunksize=10000000)
现在,当我尝试连接所有文件时,它会花很多时间。我想提出一些建议来更快地连接所有数据帧。
.tsv
和.csv
是相当慢的读取/写入格式。我发现实木复合地板最适合我最终做的大多数事情。它的读写速度非常快,还使您可以轻松地将大块的文件文件夹作为单个表读回。它确实需要字符串列名称,但是:
In [102]: df = pd.DataFrame(np.random.random((100000, 100)), columns=[str(i) for i in range(100)])
In [103]: %time df.to_parquet("out.parquet")
Wall time: 980 ms
In [104]: %time df.to_csv("out.csv")
Wall time: 14 s
In [105]: %time df = pd.read_parquet("out.parquet")
Wall time: 195 ms
In [106]: %time df = pd.read_csv("out.csv")
Wall time: 1.53 s
如果您无法控制这些分块文件的格式,显然您需要至少一次读取它们的读取成本,但是从长远来看,转换它们仍然可以为您节省一些时间。许多其他读/写。