如何使用D3.js拆分CSV管道符分隔列并统计各唯一值的出现次数
D3.js拆分分隔符列并统计唯一值次数实现方案
首先需要先将B列的管道符分隔内容拆分、打平为单个值的一维数组,再执行统计逻辑,具体实现代码如下:
// 1. 拆分B列内容并打平为一维数组,同时去除每个值的前后空白字符 const allBValues = data.flatMap(row => { return row.B.split('|').map(val => val.trim()) }) // 2. 对打平后的数组进行分组统计 const b_counts = d3.nest() .key(d => d) .rollup(items => items.length) .entries(allBValues) .map(group => ({ B: group.key, Count: group.value })) // 可选:按计数从高到低排序 b_counts.sort((a, b) => b.Count - a.Count)
如果运行环境不支持flatMap语法,可以用以下等价写法替换第一步的打平逻辑:
const allBValues = [].concat(...data.map(row => row.B.split('|').map(val => val.trim())))
上述代码的逻辑和你给出的pandas实现逻辑完全对应:split('|')对应分隔符拆分、flatMap/concat逻辑对应explode的打平操作,后续的d3.nest分组统计对应value_counts的计数功能。运行后输出的结果和你预期的统计结果完全一致。
内容的提问来源于stack exchange,提问作者Adam Boyher
相关产品推荐
相关产品推荐

