代码之家  ›  专栏  ›  技术社区  ›  ecjb

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

  •  2
  • ecjb  · 技术社区  · 7 年前

    我是一个 R 用户对 Julia 朱莉娅 website of US government 下载了 College Scorecard 数据集。我试图在中读取一个“csv”文件 Juno

    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 为什么会发生这种事

    在中执行相同操作时

    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
    

    有没有一种方法可以更有效地读取 朱莉娅

    主要编辑

    正如@BogumiKamiski所指出的 R 对于这个特殊的任务 使用最新版本的 朱莉娅 CSV . 所以,请阅读我上面的留言(我坦率地说,我犹豫了一下,不想简单地删除它)并阅读博古米·卡米斯基(Bogumi Kamiski)的评论!感谢所有利用空闲时间来构建和改进一种奇妙的语言的开发者 朱莉娅 免费!

    现在表演的时候

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

    这是结果

    0.184593 seconds (223.44 k allocations: 5.321 MiB)
    

    太棒了!谢谢@Bogumi Kamiski!

    1 回复  |  直到 7 年前
        1
  •  0
  •   scls    7 年前

    你应该试着用 https://github.com/queryverse/CSVFiles.jl

    FileIO.jl 包裹。

    它是 Queryverse ecosystem .

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

    但正如Bogumi Kamiski所建议的,可能只是使用最新的主版本CSV.jl可能有助于提高表现,但我认为了解这个全新的Queryverse世界对Julia社区来说是很重要的。

    也许你应该看看:

    推荐文章