如何将非常大的CSV数据集加载到d3中

问题描述:

正如标题所示,我有一个CSV文件(〜250MB和700k行),我无法将其加载到d3中。我试图按照我通常为csv文件的方式加载它,但没有运气。目前,它不会出错,并在控制台中获得一个空数据数组。不知道该文件是否太大或我加载不正确。将感谢任何帮助。谢谢。如何将非常大的CSV数据集加载到d3中

  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; 
       } 
      }); 
+0

你是如何运行这个文件? Javascript(在浏览器中)无法访问您的本地文件系统。 –

+0

@BurhanKhalid IIS通过Visual Studio – sparta93

+0

想想DOM。看看[PapaParse](http://papaparse.com)。请勿粉碎机器的内存或点击浏览器的硬编码限制:) –

这与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>

+0

非常感谢您使用Gerardo,看起来我需要首先处理我的数据,并创建更小的数据集,以供图形使用。 – sparta93

+2

是的,这是最好的方法。 –