从 D3.js 中的数据中删除 NaN 值
Remove NaN values from data in D3.js
这是我的代码:
d3.csv('stockdataToPlot.csv', function(d){
return {date : d3.timeParse("%Y-%m-%d")(d.Date), aapl : d.AAPL,
aapl_sma: d.SMA_AAPL, tsla : d.TSLA, tsla_sma: d.SMA_TSLA}
}).then(plot_data);
我想从 d.SMA_AAPL
和 d.SMA_TSLA
中删除 NaN 值
如果有人帮助我正确地合并 this 示例,我将不胜感激:
d3.csv('stockdataToPlot.csv', function(d){
var data = d.filter(function(e){
if(isNaN(e.value)){
return false;
}
e.value = parseInt(e.value, 10);
return true;
});
return {date : d3.timeParse("%Y-%m-%d")(d.Date), aapl : d.AAPL,
aapl_sma: data.SMA_AAPL, tsla : d.TSLA, tsla_sma: data.SMA_TSLA}
}).then(plot_data);
当前错误为TypeError: d.filter is not a function
。这是令人困惑的,因为 .filter 将数据数组作为参数,它应该是第一行中引用的 d
。
这是文档中的一行精简代码:
const result = words.filter(word => word.length > 6);
这是怎么改编的?
var data = d.filter(?? => ??.isNan(??));
?
我确定我想多了,但我是 javascript 的新手,我不完全理解它是如何工作的。在 python pandas 我会做 data.dropna()
:(
固定:
d3.csv('stockdataToPlot.csv', function(d){
function removeNaN(e,c){
if(e>0){return e}else{return c}
}
return {date : d3.timeParse("%Y-%m-%d")(d.Date), aapl : d.AAPL,
aapl_sma: removeNaN(+d.SMA_AAPL,d.AAPL), tsla : d.TSLA, tsla_sma: removeNaN(+d.SMA_TSLA,d.TSLA)}
}).then(plot_data);
在我的例子中,NaN 注册为“”,当使用 + 传递时默认为 0。幸运的是,我的数据中没有任何小于或等于 0 的值。我没有删除它们,而是用与收盘价相同的值替换它们,因为它只是一个移动平均线。不太理想,但暂时还可以。
这是我的代码:
d3.csv('stockdataToPlot.csv', function(d){
return {date : d3.timeParse("%Y-%m-%d")(d.Date), aapl : d.AAPL,
aapl_sma: d.SMA_AAPL, tsla : d.TSLA, tsla_sma: d.SMA_TSLA}
}).then(plot_data);
我想从 d.SMA_AAPL
和 d.SMA_TSLA
中删除 NaN 值
如果有人帮助我正确地合并 this 示例,我将不胜感激:
d3.csv('stockdataToPlot.csv', function(d){
var data = d.filter(function(e){
if(isNaN(e.value)){
return false;
}
e.value = parseInt(e.value, 10);
return true;
});
return {date : d3.timeParse("%Y-%m-%d")(d.Date), aapl : d.AAPL,
aapl_sma: data.SMA_AAPL, tsla : d.TSLA, tsla_sma: data.SMA_TSLA}
}).then(plot_data);
当前错误为TypeError: d.filter is not a function
。这是令人困惑的,因为 .filter 将数据数组作为参数,它应该是第一行中引用的 d
。
这是文档中的一行精简代码:
const result = words.filter(word => word.length > 6);
这是怎么改编的?
var data = d.filter(?? => ??.isNan(??));
?
我确定我想多了,但我是 javascript 的新手,我不完全理解它是如何工作的。在 python pandas 我会做 data.dropna()
:(
固定:
d3.csv('stockdataToPlot.csv', function(d){
function removeNaN(e,c){
if(e>0){return e}else{return c}
}
return {date : d3.timeParse("%Y-%m-%d")(d.Date), aapl : d.AAPL,
aapl_sma: removeNaN(+d.SMA_AAPL,d.AAPL), tsla : d.TSLA, tsla_sma: removeNaN(+d.SMA_TSLA,d.TSLA)}
}).then(plot_data);
在我的例子中,NaN 注册为“”,当使用 + 传递时默认为 0。幸运的是,我的数据中没有任何小于或等于 0 的值。我没有删除它们,而是用与收盘价相同的值替换它们,因为它只是一个移动平均线。不太理想,但暂时还可以。