如何从CSV文件中提取信息以用于堆积条形图

时间:2017-04-27 20:44:57

标签: javascript csv d3.js

我有一个真实的数据集(https://data.gov.uk/dataset/road-traffic-accidents - 2009),我试图从中提取信息,它有大约2500项,作为样本 -

enter image description here

我使用d3创建一个堆积条形图,显示x轴上的类别 - "轻微,严重,致命"以及y轴上每个类别的事故发生频率。实际的酒吧本身将分为这些事故中有多少是女性和男性。

目前,我正试图弄清楚如何最好地从csv中提取信息。看了几个d3堆叠图表的几个例子,数据似乎是这样安排的(例如来自 - http://www.adeveloperdiary.com/d3-js/create-stacked-bar-chart-using-d3-js/) -



	var data=[
 
    {month:'Jan', A:20, B: 5,  C: 10},
    {month:'Feb', A:25, B: 10, C: 20}

    ]
var xData = ["A", "B", "C"];




所以使用该示例作为基础,我猜测从这个特定的csv格式化数据的最佳方式可能是什么? -



	var data = [

		{'Casualty Severity':'Slight', 'Male': 1567, 'Female': 1200 },
		{'Casualty Severity':'Serious', 'Male': 100, 'Female': 120 },
		{'Casualty Severity':'Fatal', 'Male': 15, 'Female': 5 }
	]




不幸的是,我不是很擅长格式化数据,但大致知道如何使用d3.nest



	d3.csv('/road_accidents/2009.csv', function(data) {
		var severity = d3.nest()
			.key(function(d) {
				return d['Casualty Severity'];
			})
			.entries(data);
			
		console.log(severity)
	})




在控制台中提供了这个输出 -

enter image description here

扩展看起来像这样 -

enter image description here

所以我想,问题是什么是格式化数据的最佳方式,使用真实数据集在堆积条形图中使用,这是正确的方法吗?

任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:1)

这是组织数据的一种方法,可以在构建堆积条形图时轻松使用。如果您不希望它嵌套这么多,它可以进一步简化。



var url = "https://aql.datapress.com/leeds/dataset/road-traffic-accidents/2016-05-19T15:29:13/2009.csv";

d3.csv(url, function(data) {
  var severityBySex = d3.nest()
    .key(function(d) { return d['Casualty Severity'];})
    .key(function(d) { return d['Sex of Casualty']; })
    .entries(data);
    
    for (var i = 0; i < severityBySex.length; i++){
       console.log(severityBySex[i].key + " - " + "MALE: "  + 	
       severityBySex[i].values[0].values.length + " - " 
       + "FEMALE: " + severityBySex[i].values[1].values.length);
    }
});
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
&#13;
&#13;
&#13;