-
Notifications
You must be signed in to change notification settings - Fork 1
RU Форматирование CSV
Вики ▸ Справка по API ▸ Форматирование CSV
English | Русский
D3 предоставляет встроенную поддержку разбора формата значений, разделённых запятой, разделённых знаками табуляции и вообще произвольными символами. Эти табличные форматы пользуются большой популярностью в табличный процессорах типа Microsoft Excel. Табличные форматы часто более компактные, нежели JSON, что позволяет сократить время загрузки больших наборов данных.
# d3.csv(url[, accessor][, callback])
Совершает HTTP GET-запрос файла со значениями, разделёнными запятой (CSV) по указанному адресу url. Содержимое файла предполагается совместимым с RFC4180. MIME-тип запроса будет «text/csv». Запрос выполняется асинхронно, так что метод возвращает управление сразу же после отправки запроса. Когда данные CSV загрузятся, вызовется указанная функция обратного вызова callback с разобранными строками в качестве аргумента. Если возникнет ошибка, аргументом функции будет null
. Если указана необязательная функция доступа accessor, она будет передана в 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); });
Смотрите картограмму безработицы для примера.
# d3.csv.parse(string[, accessor])
Разбирает указанную строку string, являющуюся содержимым CSV-файла, возвращает масив объектов, представляющих разобраные строки. Содержимое строки предполагается совместимым с RFC4180. В отличии от метода 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 позволяет автоматически приводить строки к числам (например, путём использования оператора +). Указав функцию доступа accessor, вы сможете преобразовывать строки в числа или другие подходящие типы, например, даты:
d3.csv("example.csv", function(d) {
return {
year: new Date(+d.Year, 0, 1), // преобразуем колонку «Year» в объект Date
make: d.Make,
model: d.Model,
length: +d.Length // преобразуем колонку «Length» в число
};
}, function(error, rows) {
console.log(rows);
});
Использование оператора + вместо функций parseInt или parseFloat обычно быстрее, но и накладывает больше ограничений. Например, строка «30px» при приведении к числу с помощью оператора + превратися в NaN, в то время как parseInt и parseFloat вернут значение 30.
# d3.csv.parseRows(string[, accessor])
Разбирает указанную строку string, являющуюся содержимым CSV-файла, возвращает масив массивов, представляющих разобраные строки. Содержимое строки предполагается совместимым с RFC4180. В отличии от метода 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)
Преобразует указанный массив строк rows в строку значений, разделённых запятыми. Этот оператор делает обратную работу по отношению к методу parse. Строки будут разделены символами новой строки (\n
), а колонки — запятыми (,
). Значения, содержащие запятые, двойные кавычки ("
) или символы новой строки будут экранированы двойными кавычками.
Каждая строка должна быть объектом и все свойства объекта будут преобразованы в поля. Для более детального контроля над тем, какие свойства нужно преобразовывать, преобразуйте строки в массив, содержащий только те свойства, что должны быть преобразованы и воспользуйтесь методом formatRows.
# d3.csv.formatRows(rows)
Преобразует указанный массив строк rows в строку значений, разделённых запятыми. Этот оператор делает обратную работу по отношению к методу parseRows. Строки будут разделены символами новой строки (\n
), а колонки — запятыми (,
). Значения, содержащие запятые, двойные кавычки ("
) или символы новой строки будут экранированы двойными кавычками.
Формат значений, разделённых символами табуляции эквивалентен формату значений, разделённых запятыми, за исключением того, что в качестве разделителя используются символы табуляции, а не запятые.
# 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, но для значений, разделённых символами табуляции.
# d3.dsv(delimiter, mimeType)
Конструирует новый парсер для указанных разделителя и MIME-типа. Например, для разбора значений, разделённых вертикальной чертой («|»), используйте:
var dsv = 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, но для значений, разделённых произвольным разделителем.