gpt4 book ai didi

csv - 如何减少在 Julia 中打开大型 csv 文件所需的时间(使用 CSV 和 DataFrames)?

转载 作者:行者123 更新时间:2023-12-04 17:45:00 25 4
gpt4 key购买 nike

我是RJulia 感兴趣的用户并强烈愿意转用Julia从长远来看。我在网上找了一个很大的 csv 文件,找到了这个 website of US government并下载了 College Scorecard数据集。我试图读取 Juno 中的“csv”文件使用以下命令:

using CSV
using DataFrames

@time df = CSV.read("/Path/to/Most-Recent-Cohorts-Scorecard-Elements.csv", rows_for_type_detect = 7175);

我得到以下输出:

212.333866 seconds (43.84 M allocations: 2.244 GiB, 0.25% gc time)

我插入了行 rows_for_type_detect = 7175因为否则我会收到一条错误消息,无法打开文件。见 this other question为什么会发生

当在 R 中做同样的操作时和

start_time <- Sys.time()
df_try = read.csv("/Path/to/Most-Recent-Cohorts-Scorecard-Elements.csv")
end_time <- Sys.time()
end_time - start_time

我得到以下输出

Time difference of 0.3337972 secs

有没有办法在 Julia 中更有效地读取大型数据帧?

主要编辑

正如@BogumiłKamiński 所指出的, R 之间的这种差异和 Julia对于这项特殊任务 大幅减少 使用最新版本的 Julia 时和 CSV .所以请仔细阅读我上面的信息(坦率地说,我犹豫要不要删除)并阅读 Bogumił Kamiński 的评论!非常感谢所有开发人员利用他们的空闲时间来构建和改进像 Julia 这样美妙的语言免费!

编辑 N°2

现在表演的时候

@time df = CSV.read(joinpath("/path/to/file.csv"))

这是结果

0.184593 seconds (223.44 k allocations: 5.321 MiB)

杰出的!谢谢@Bogumił Kamiński!

最佳答案

您可能应该尝试使用 https://github.com/queryverse/CSVFiles.jl

此包为 FileIO.jl 下的 CSV 文件提供加载和保存支持。包裹。

它是 Queryverse ecosystem 的一部分.

using CSVFiles, DataFrames
fname = "/Path/to/Most-Recent-Cohorts-Scorecard-Elements.csv"
df = DataFrame(load(fname))

但正如 Bogumił Kamiński 所建议的那样,也许简单地使用最新的 CSV.jl 主版本可以帮助提高性能,但我认为意识到这个全新的 Queryverse 世界对 Julia 社区来说很重要。

如果您必须多次加载同一个大文件,也许您应该考虑另一种格式,因为处理文本数据的时间很长。如果快速加载对您来说真的很重要,那么您应该考虑使用带有压缩的二进制格式。

也许你应该看看:
  • https://github.com/JuliaIO/HDF5.jl
  • https://github.com/JuliaIO/JLD.jl
  • https://github.com/JuliaIO/JLD2.jl
  • https://github.com/JuliaComputing/Parquet.jl
  • https://github.com/JuliaData/Feather.jl
  • 关于csv - 如何减少在 Julia 中打开大型 csv 文件所需的时间(使用 CSV 和 DataFrames)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52475931/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com