在 Julia 中读取大型 CSV 文件所需的时间

Mar*_*aph 6 julia

我有一个很大的 CSV 文件——将近 2800 万行和 57 列——8.21GB——数据是不同类型的——整数、字符串、浮点数——但没有什么不寻常的。

当我在 Python/Pandas 中加载它时,使用以下代码需要 161 秒。

df = pd.read_csv("file.csv", header=0, low_memory=False)
Run Code Online (Sandbox Code Playgroud)

在 Julia 中,它需要更长的时间 - 一个多小时。更新:我不知道为什么,但是当我今天早上运行代码(检查两次)时,它花了大约 702 和 681 秒。这比一个小时好多了,但它仍然比 Python 慢得多。

我的 Julia 代码也很简单:

df = CSV.File("file.csv") |> DataFrame
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?有什么我可以做的来加快速度吗?或者这只是你和朱莉娅一起玩的代价?

小智 1

来自CSV.jl 文档

在某些情况下,接收器可能会为了自身安全而复制传入数据;通过调用 CSV.read(file, DataFrame),不会创建已解析的 CSV.File 的副本,并且 DataFrame 将直接拥有 CSV.File 的列,这比执行 CSV.File(file) | 更有效。 > DataFrame 这将导致为每列创建一个额外的副本。

所以你可以尝试

CSV.read("file.csv", DataFrame)
Run Code Online (Sandbox Code Playgroud)