如何在 Python 中高效处理大型 CSV 文件?

问题描述 投票:0回答:2

我有一个包含数百万行和列的 CSV 文件,我需要用 Python 处理这些文件。但是,当我尝试使用 pandas 或 csv 模块将它加载到内存中时,我的程序变得非常慢并且占用大量内存。

我可以使用哪些有效的技术或库来处理 Python 中如此大的 CSV 文件?我听说过分块和流式传输数据,但我不确定如何实现它们。你能提供一些代码示例或给我一些有用的资源吗?

任何意见或建议将不胜感激。提前谢谢你!

python csv size
2个回答
1
投票

以下是您可以使用 python 有效处理大型 CSV 文件的 2 种方法: 1.你可以像这样使用带有分块的 pandas 库:

import pandas as pd
chunksize = 100000
for chunk in pd.read_csv('large_file.csv', chunksize=chunksize):
    # process the chunk

在这个例子中,CSV 文件一次以 100,000 行的块读取,每个块在循环中处理。

2.使用Dask库:Dask是一个并行计算库,可用于高效处理大型CSV文件

import dask.dataframe as dd
csv_file = 'large_file.csv'
df = dd.read_csv(csv_file)
# process the dataframe using dask operations here

Dask 会自动将数据拆分成更小的块并并行处理它们,这可以加快处理时间。


1
投票

你可以试试Polars,它真的快(如果你能记住的话)。例如来自他们的文档:

import polars as pl

q = (
    pl.scan_csv("iris.csv")
    .filter(pl.col("sepal_length") > 5)
    .groupby("species")
    .agg(pl.all().sum())
)

df = q.collect()
© www.soinside.com 2019 - 2024. All rights reserved.