CSV格式化(d3.csv)

最后更新于:2022-04-01 11:11:04

> [Wiki](Home) ? [[API--中文手册]] ? [[核心函数]] ? *CSV格式化* * 如发现翻译不当或有其他问题可以通过以下方式联系译者: * 邮箱:zhang_tianxu@sina.com * QQ群:[D3数据可视化](http://jq.qq.com/?_wv=1027&k=ZGcqYF)205076374,[大数据可视化](http://jq.qq.com/?_wv=1027&k=S8wGMe)436442115 CSV 格式化 (d3.csv) ? d3.csv - 获取一个CSV (comma-separated values, 冒号分隔值)文件。 ? d3.csv.parse - 将CSV文件字符串转化成object的数组,object的key由第一行决定。如: [{"Year": "1997", "Length": "2.34"}, {"Year": "2000", "Length": "2.38"}] ? d3.csv.parseRows - 将CSV文件字符串转化成数组的数组。如: [ ["Year", "Length"],["1997", "2.34"],["2000", "2.38"] ] ? d3.csv.format - 将object的数组转化成CSV文件字符串,是d3.csv.parse的逆操作。 ? d3.csv.formatRows - 将数组的数组转化成CSV文件字符串,是d3.csv.parseRows的逆操作。 ? d3.tsv - 获取一个TSV (tab-separated values, tab分隔值)文件。 ? d3.tsv.parse - 类似于d3.csv.parse。 ? d3.tsv.parseRows - 类似于d3.csv.parseRows。 ? d3.tsv.format - 类似于d3.csv.format。 ? d3.tsv.formatRows - 类似于d3.csv.formatRows。 ? d3.dsv - 创建一个类似于d3.csv的文件处理对象,可以自定义分隔符和mime type。如:vardsv = d3.dsv("|", "text/plain"); CSV D3解析comma-separated values,制表符分隔值和任意分割值提供内置支持。这些表格格式深受诸如Microsoft Excel电子表格程序。表格格式通常比JSON更省空间,这可以提高大型数据集加载时间。 #d3.csv(url[, accessor][, callback]) 在指定的url为逗号分隔值(CSV)文件发出一个HTTP GET请求。一般认为文件内容是RFC4180-compliant(应该是csv文件介绍)。请求的mime(多用途互联网邮件扩展类型)类型一般为“text/ csv”。此请求会当做异步处理,在打开请求后此方法会立即返回。CSV数据可用时,将以parsed rows作为参数调用指定的回调。如果出现错误,此回调函数将返回null。一个可选的访问器方法可能被指定,然后传递给d3.csv.parse;也可以通过使用返回请求对象的row函数来指定。例如: d3.csv("path/to/file.csv") .row(function(d){return{key:d.key,value:+d.value};}) .get(function(error,rows){console.log(rows);}); 查看样例:unemployment choropleth。 #d3.csv.parse(string[, accessor]) 通过一个CSV文件的内容解析指定的字符串,返回一个代表解析行的对象数组。一般认为文件内容是RFC4180-compliant。与parseRows方法不同的是,这种方法要求CSV文件的第一行包含一个以逗号分隔的列名;这些列名成为返回的对象的属性。例如,参考以下CSV文件: Year,Make,Model,Length 1997,Ford,E350,2.34 2000,Mercury,Cougar,2.38 生成的JavaScript数组: [ {"Year":"1997","Make":"Ford","Model":"E350","Length":"2.34"}, {"Year":"2000","Make":"Mercury","Model":"Cougar","Length":"2.38"} ] 值得注意的是这些值都是字符串;它们不会自动转为数字类型值。JavaScript会强制字符串自动转换成数字类型值(例如,使用+运算符)。通过指定一个访问器函数,您可以将字符串转换为数字或其他特定的类型,如日期: d3.csv("example.csv",function(d){ return{ year:newDate(+d.Year,0,1),// convert "Year" column to Date make:d.Make, model:d.Model, length:+d.Length// convert "Length" column to number }; },function(error,rows){ console.log(rows); }); 尽管由很多的限制,但使用连接符”+”比parseInt或parseFloat 通常更快。例如,“30 px”当强制使用“+“返回NaN,而parseInt和parseFloat返回30。 #d3.csv.parseRows(string[, accessor]) 通过一个CSV文件的内容解析指定的字符串,返回一个代表解析行的对象数组。一般认为文件内容是RFC4180-compliant。与parse 方法,不论CSV文件是否不包含一个头,该方法将标题行作为标准并且使用。每一行都被表示为一个数组而不是一个对象。行可能会变长。例如,考虑以下CSV文件: 1997,Ford,E350,2.34 2000,Mercury,Cougar,2.38 生成的JavaScript数组: [ ["1997","Ford","E350","2.34"], ["2000","Mercury","Cougar","2.38"] ] 值得注意的是这些值都是字符串;它们不会自动转为数字类型值。有关详细请参阅parse。 第二个参数([, accessor])可以指定一个访问器函数。这个函数调用CSV文件中的每一行数据,通过当前行数据对象和当前行索引作为两个参数。函数的返回值将取代所在返回数组里的元素数据;如果函数返回null,此行便从返回的数组里剔除。实际上,这个访问器类似于map 和filter操作符去返回数据行。访问器函数通过parse 将每一行转换为一个带有一些已命名属性的对象。 #d3.csv.format(rows) 将指定数组里的行内容转换为逗号分隔值格式的字符串并返回。这个操作是parse方法的逆转。每一行将会由一个换行符(\ n)隔开,并在每一行的每一列将以逗号(,)隔开。数据值中包含的逗号,双引号(“)或换行符会使用双引号将其取代(最后这句实践后不理解,理解不透)。 每一行视为一个对象,并且所有的对象属性将被转换成字段。为了更好的控制那些被转换的属性,将行内容转换为只包含这些应该被转换的属性的数组并且使用formatRows方法。 # d3.csv.formatRows(rows) 将指定数组里的行内容转换为逗号分隔值格式的字符串并返回。这个操作是parseRows方法的逆转。每一行将会由一个换行符(\ n)隔开,并在每一行的每一列将以逗号(,)隔开。值所包含的逗号,双引号(“)或换行符会使用双引号将其脱逃。 TSV 除了分隔符由制表符代替了逗号(制表符分隔值相当于逗号分隔值),其它没有太大区别。 #d3.tsv(url[, accessor][, callback]) 相当于d3.csv,只是分隔符为制表符而已。 #d3.tsv.parse(string[, accessor]) 相当于csv.parse,只是分隔符为制表符而已。 #d3.tsv.parseRows(string[, accessor]) 相当于csv.parseRows,只是分隔符为制表符而已。 #d3.tsv.format(rows) 相当于csv.format,只是分隔符为制表符而已。 #d3.tsv.formatRows(rows) 相当于csv.formatRows,只是分隔符为制表符而已。 Arbitrary Delimiters #d3.dsv(delimiter, mimeType) 对于给定分隔符和mime类型构造一个新的解析器。例如,解析值由“|”分隔,竖线字符,使用如下: vardsv=d3.dsv("|","text/plain"); #dsv(url[, accessor][, callback]) 相当于d3.csv,只是分隔符为具体值而已。 # dsv.parse(string[, accessor]) 相当于csv.parse,只是分隔符为具体值而已。 # dsv.parseRows(string[, accessor]) 相当于csv.parseRows,只是分隔符为具体值而已。 # dsv.format(rows) 相当于csv.format,只是分隔符为具体值而已。 # dsv.formatRows(rows) 相当于csv.formatRows,只是分隔符为具体值而已。 HarryT20140329
';