2017-02-19 96 views
1

正如標題所示,我有一個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)。請勿粉碎機器的內存或點擊瀏覽器的硬編碼限制:) –

回答

6

這與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

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