Импортировать данные из URL - PullRequest
16 голосов
/ 04 января 2012

Федеральный резервный банк Сент-Луиса имеет большой набор данных, доступных на различных веб-страницах, таких как:

http://research.stlouisfed.org/fred2/series/OILPRICE/downloaddata?cid=32217 http://www.federalreserve.gov/releases/h10/summary/default.htm http://research.stlouisfed.org/fred2/series/DGS20

Наборы данных обновляются, некоторые так же часто, как ежедневно. Я склонен проявлять интерес к ежедневным данным (см. Вышеуказанные настройки в URL)

Я бы хотел импортировать эти виды потоков данных о ценах или курсах (доступные в виде файлов CSV или Excel по указанным выше URL-адресам) непосредственно в Mathematica.

Я посмотрел документацию по импорту [], но нахожу скудную документацию (на самом деле нет) о том, как поступить примерно так.

Похоже, мне нужно перейти на страницы, отправить некоторые данные, чтобы выбрать конкретные файлы и форматы, запустить загрузку, а затем получить доступ к загруженным данным с моего собственного компьютера. Еще лучше, если бы я мог получить доступ к данным прямо с сайтов.

Я надеялся, что Wolfram Alpha может сделать такую ​​вещь легкой, но я не добился успеха.

FinancialData[] может показаться естественным для такого рода вещей, но я не вижу возможности это сделать. Финансовые данные имеют множество функций, но я не вижу, как вы можете получить такую ​​вещь.

Кто-нибудь имеет опыт с этим или кто-то может указывать мне в правильном направлении?

Ответы [ 4 ]

19 голосов
/ 04 января 2012

Вы можете Import напрямую с URL.Например, данные из Federalreserve.gov могут быть получены и визуализированы следующим образом.

url = "http://www.federalreserve.gov/datadownload/Output.aspx?";
url = url<>"rel=H10&series=a660e724c705cea4b7bd1d1b85789862&lastObs=&";
url = url<>"from=&to=&filetype=csv&label=include&layout=seriescolumn";
data = Import[url, "CSV"];
DateListPlot[data[[7 ;;]], Joined -> True]

Я разбил url для удобства, так как это так долго.Мне пришлось изучить содержимое data, прежде чем я точно знал, как его построить - шаг, который обычно необходим.Я уверен, что данные из stlouisfed.org могут быть получены аналогичным образом, но для доступа к ним требуется API с ключом.

12 голосов
/ 04 января 2012

Как сказал Марк, вы можете получить данные напрямую с URL. Ваши данные по нефти могут быть импортированы с другого URL, чем вы имели:

http://research.stlouisfed.org/fred2/data/OILPRICE.txt

С этим URL вы можете сделать следующее:

oil = Import["http://research.stlouisfed.org/fred2/data/OILPRICE.txt",
"Table", "HeaderLines" -> 12, "DateStringFormat" -> {"Year", "Month", "Day"}];
DateListPlot[oil, Joined -> True, PlotRange -> All]

Обратите внимание, что опция "HeaderLines" -> 12 удаляет текст заголовка в первых 12 строках (нужно подсчитать строки заголовка, чтобы узнать, сколько нужно удалить). Я также указал формат даты.

Чтобы найти этот URL, сделайте, как вы делали раньше, но нажмите на ряд данных и затем выберите View Data в меню слева, когда вы видите диаграмму.

5 голосов
/ 04 января 2012

В документации есть короткий пример извлечения данных из веб-страницы:

http://reference.wolfram.com/mathematica/howto/CleanUpDataImportedFromAWebsite.html

Конечно, то, что на самом деле нужно сделать, будет значительно варьироваться от страницы к странице.

4 голосов
/ 05 января 2012

обсуждение того, как сделать это с вашим ключом API здесь:

http://library.wolfram.com/infocenter/MathSource/7583/

функция основана на документации API. Я не смотрел на код в течение нескольких лет, и по памяти я собрал его довольно быстро, но регулярно использую его более 2 лет без проблем. Вот пример ежемесячных розничных продаж без учета сезонных колебаний с начала 1992 года по настоящее время:

enter image description here

Вольфрам альфа также использует данные FRED, так что вы можете использовать их в качестве альтернативы прямому импорту, но сложнее получить правильный запрос. Я предпочитаю использовать FRED напрямую. Кроме того, из памяти данные доступны только в альфа-формате на следующий день после релиза, что обычно не требуется.

enter image description here

...