我正在尝试读取 CSV 文件并将其解析为向量图。因此,映射的键是 CSV 中的列名称,映射的值是包含 CSV 中的值列的向量。
我使用内置函数clojure.data.csv
来读取文件,尽管 CSV 文件(在此处找到)只有 32 MB,但我的代码运行速度确实相当慢。
(require '[clojure.data.csv :as csv]
'[clojure.java.io :as io])
(defn csv->df [file-path]
(with-open [reader (io/reader file-path)]
(let [in-file (csv/read-csv reader)
names (first in-file)
data (rest in-file)]
(zipmap (map keyword names) (apply mapv vector data)))))
(csv->df "data/flights.csv")
我怀疑我正在做一些与惰性序列相关的愚蠢的事情,因为作为 Clojure 新手,我仍然在掌握它们,但我无法确定问题的根本原因。
是否可以重组此功能,使其运行速度不至于缓慢?