Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

read csv/tsv with no header line in D3

I have CSV data which looks something like:

Data

1,1,10 1,2,50 1,3,5 etc... 

And I am trying to read in the data. However, my initial data does not contain a header row (as seen above) so it is taking the first data row to be the header (1,1,10). Is there anyway around this. I want to set the header names after I read the data

Javascript

d3.csv("data/testnh.csv", function(data) {     console.log(data); } 

Thanks!

like image 447
Omar Wagih Avatar asked Dec 13 '12 23:12

Omar Wagih


2 Answers

Use d3.text to load the data, and then d3.csvParseRows to parse it. For example:

d3.text("data/testnh.csv", function(text) {   console.log(d3.csvParseRows(text)); }); 

You'll probably also want to convert your columns to numbers, because they'll be strings by default. Assume they are all numbers, you could say:

d3.text("data/testnh.csv", function(text) {   var data = d3.csvParseRows(text).map(function(row) {     return row.map(function(value) {       return +value;     });   });   console.log(data); }); 
like image 157
mbostock Avatar answered Oct 07 '22 11:10

mbostock


Since Bostock's answer in 2012, d3.csv.parseRows allows for an optional accessor function, which enables his answer to be expressed more concisely:

d3.text("data/testnh.csv", function(text) {     var data = d3.csv.parseRows(text, function(d) {         return d.map(Number);     });     // Now do something with data }); 
like image 41
egnha Avatar answered Oct 07 '22 10:10

egnha