Javascript 从CSV文件中选择一些列

Javascript 从CSV文件中选择一些列,javascript,csv,d3.js,Javascript,Csv,D3.js,我有一个CSV文件,其中包括100行(作为案例)和1100列(作为特征) (每个案例有1100个功能) 我想使用20列(比如55-74列)并将其可视化,而不是1100列。如何选择这些数据(100 x 20)并在代码中使用它?理论上,这可以做到 您可以使用accessor函数创建仅包含指定范围(20列)的输出数据: d3.csv('path/to/your/file.csv') // this is run once for each row of your data .row(funct

我有一个CSV文件,其中包括100行(作为案例)和1100列(作为特征) (每个案例有1100个功能)


我想使用20列(比如55-74列)并将其可视化,而不是1100列。如何选择这些数据(100 x 20)并在代码中使用它?

理论上,这可以做到

您可以使用accessor函数创建仅包含指定范围(20列)的输出数据:

d3.csv('path/to/your/file.csv')
  // this is run once for each row of your data
  .row(function accessor(d) {
    // make an array of all the keys (1100 of them)
    var keys = d3.map(d).keys();
    // create an empty object
    var outputDatum = {};
    // fill it with the key/value pairs from indexes 55 - 74
    for (var i = 55; i < 75; i++) {
      outputDatum[keys[i]] = d[keys[i]];
    }
    // return the object you built
    return outputDatum;
  })
  // this is the callback that runs when the data is ready
  .get(function callback(error, data) {
    // use the data to make something
  });
这将为每行创建包含第7列中的值的div…但不完全是这样,因为对象键/值对不是按定义的顺序存储或检索的

您可能需要重新考虑数据的结构。如果列的索引比它们的名称更相关,那么它们可能应该是您的行


更新

如果您知道感兴趣的列的标签,那么问题就简单多了。然后,您可以使用accessor函数输出所选数据,如下所示:

d3.csv('path/to/your/file.csv')
  .row(function(d) {
    return {
      x: d.featureX,
      y: d.featureY,
      z: d.featureZ
    };
  })
  .get(function(e, data) {
    d3.selectAll('div')
      .data(data)
      .enter().append('div')
      .text(function(d) { return d.x; });
  });

这一次,accessor函数返回的数据具有属性
x
y
z
,这些属性表示(在本例中)调用的原始数据
featureX
featureY
featureZ
。然后,此示例将为每行的featureX创建一个div。

是否要在客户端执行此操作?CSV文件在哪里?谢谢您的回答。实际上,我拥有的是一堆数据,但我只对案例的一些特性感兴趣(我指的是所有行,但有些列)。我认为你的代码对我很有帮助。如果我想选择一些使用标签的列,我应该怎么做?我尝试了类似的东西,但没有成功:key==“label1”| | key==“label2”| | key==“label3”。此外,我还尝试了您提供的代码。控制台抱怨:UncaughtTypeError:无法读取未定义的属性“row”有什么问题?我已经编辑了答案。在
.row()
函数中,
d.featureX
表示原始数据中标记为
featureX
的列。它输出一个具有属性
x
的对象,该属性稍后在指定属性时可作为
d.x
访问。x、 y和z当然是完全任意的,你可以指定你想要的任何标签。你确定d3库加载正确吗?d3.csv()。应该始终定义行,即使文件在指定的路径上不存在……是的,我有它:我的项目
d3.csv('path/to/your/file.csv')
  .row(function(d) {
    return {
      x: d.featureX,
      y: d.featureY,
      z: d.featureZ
    };
  })
  .get(function(e, data) {
    d3.selectAll('div')
      .data(data)
      .enter().append('div')
      .text(function(d) { return d.x; });
  });