【问题标题】:How to load very large CSV dataset into d3如何将非常大的 CSV 数据集加载到 d3
【发布时间】:2017-07-08 11:26:37
【问题描述】:

正如标题所示,我有一个 CSV 文件(约 250mb 和 700k 行),我无法将其加载到 d3 中。我尝试以通常对 csv 文件执行的方式加载它,但没有运气。目前,它不会出错,我在控制台中得到一个空数据数组。不确定文件是否太大或我加载不正确。将不胜感激任何帮助。谢谢。

            var dataset;
            d3.csv("Consumer_Complaints.csv", function (error, data) {
                if (error) {  
                    console.log(error);  
                } else {
                    console.log("file load successful?");
                    console.log(data);   

                    dataset = data;
                }
            });

【问题讨论】:

  • 你是如何运行这个文件的? Javascript(在浏览器中)无法访问您的本地文件系统。
  • @BurhanKhalid IIS 通过 Visual Studio
  • 想想 DOM。看PapaParse。不要破坏机器的内存或达到浏览器的硬编码限制:)

标签: javascript csv d3.js


【解决方案1】:

这与 D3 无关,而与一般的 JavaScript 无关。 D3 对它可以加载和解析的文件大小没有限制。

Javascript 在客户端 端运行(有一些例外)。这意味着您的代码必须下载(如果在不同的服务器中)所有 巨大 CSV 文件,不仅如此,它还必须解析大量对象中的数十万行。实在是太过分了。

所以,常识告诉我们要思考:

  • 用户的连接速度
  • 用户的处理能力
  • 用户耐心地盯着空白屏幕几分钟,等待数据下载/解析。

这是一个加载巨大 CSV 文件(来自data.gov 站点)的演示,您可以在控制台中看到加载的数据量。我还放了一个console.time 来显示下载和解析文件所需的总时间(如果你有耐心等到最后,我没有):

console.time("totalTime:");
d3.csv("https://data.consumerfinance.gov/api/views/s6ew-h6mp/rows.csv")
    .on("progress", function(evt) {
        console.log("Amount loaded: " + evt.loaded)
    })
    .get(function(data) {
        console.timeEnd("totalTime:");
    });
<script src="https://d3js.org/d3.v4.min.js"></script>

【讨论】:

  • 感谢 Gerardo,看来我需要先处理自己的数据并创建更小的数据集,以便将其提供给图表。
  • 是的,这是最好的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-13
  • 1970-01-01
  • 2015-11-29
  • 2013-02-05
  • 1970-01-01
  • 1970-01-01
  • 2017-10-08
相关资源
最近更新 更多