我有一个包含数百万行和列的 CSV 文件,我需要用 Python 处理这些文件。但是,当我尝试使用 pandas 或 csv 模块将它加载到内存中时,我的程序变得非常慢并且占用大量内存。
我可以使用哪些有效的技术或库来处理 Python 中如此大的 CSV 文件?我听说过分块和流式传输数据,但我不确定如何实现它们。你能提供一些代码示例或给我一些有用的资源吗?
任何意见或建议将不胜感激。提前谢谢你!
以下是您可以使用 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 会自动将数据拆分成更小的块并并行处理它们,这可以加快处理时间。
你可以试试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()