Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        5年前关闭。
                                                                                            
                
        
我有一个CSV文件,其中包含100行(视情况而定)和1100列(视情况而定)
(每种情况下有1100个功能)。

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

最佳答案

从理论上讲,这可以做到...

您可以使用访问器函数创建仅包含指定范围的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
  });


问题是,在不事先知道这些键的名称的情况下,它们可能对您没有太大用处。另外,在这些神秘的20列中存储了什么样的值?它们都是同一类型吗?

从技术上讲,您仍然可以使用这些值,例如:

function callback(error, data) {
  d3.selectAll('div')
    .data(data)
    .enter().append('div')
    .text(function(d) { return d3.values(d)[6]; }
}


这将创建包含每行第7列中的值的div ...不完全一样,因为对象键/值对未按定义的顺序存储或检索。

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



更新

如果您知道您感兴趣的列的标签,那么这将成为一个简单得多的问题。然后,您可以使用访问器功能输出所选数据,如下所示:

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


这次,访问器函数返回给您具有属性xyz的数据,这些属性表示被调用的原始数据(在本示例中为featureXfeatureYfeatureZ)。然后,本示例将为每行的featureX创建一个div。

关于javascript - 从CSV文件中选择一些列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24500827/

10-11 13:21