【发布时间】:2019-02-27 18:20:56
【问题描述】:
我是R 用户,对Julia 非常感兴趣,并且非常愿意长期切换到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 所指出的,当使用最新版本的Julia 和CSV 时,R 和Julia 在此特定任务中的这种差异大幅减小。因此,请仔细阅读我上面的信息(坦率地说,我很犹豫是否要简单地删除),并阅读 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!
【问题讨论】:
-
我会在这里回答(正如您在另一个线程中提出的类似问题)。我已经测试了这个文件,在我的 Julia 和 R.R 上花费了 1.2 秒,而 Julia 在第一次通话中花费了 2.3 秒,在第二次通话中花费了 1.4 秒(由于预编译导致的差异),因此它们具有可比性。 CSV.jl 在过去几周内经历了重大改进。我建议您等到标记 CSV.jl 的新版本(可能在几天后)或使用包的主版本
add CSV#master。 -
亲爱的@BogumiłKamiński。非常感谢您的回答。你完全正确:我实际上使用旧版本的
Julia:Julia-Pro-Juno-0.6.2.2运行了上面的代码。使用Julia 1.0运行代码时,第一次调用需要 9.6 秒,第二次调用需要 1.4 秒。很抱歉给您带来不便。
标签: csv dataframe julia processing-efficiency memory-efficient