2012-01-03 18 views
16

El St. Louis Banco de la Reserva Federal tiene un gran conjunto de datos disponibles en una variedad de sus páginas web, tales como:Importar datos de URL

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

Los conjuntos de datos se actualizan , algunos tan a menudo como todos los días. Tiendo a interesarme en los datos diarios (consulte la configuración anterior en las URL)

Me gustaría importar estos tipos de flujo de datos de precio o velocidad (accesibles como archivos CSV o Excel en las URL anteriores) directamente en Mathematica.

He revisado la documentación sobre Importar [], pero encuentro poca documentación (en realidad ninguna) sobre cómo hacer algo como esto.

Parece que necesito navegar a las páginas, enviar algunos datos para seleccionar archivos y formatos específicos, activar la descarga y luego acceder a los datos descargados desde mi máquina. Aún mejor si pudiera acceder a los datos directamente desde los sitios.

Tenía la esperanza de que Wolfram Alpha pudiera facilitar este tipo de cosas, pero no he tenido ningún éxito.

FinancialData[] parece natural para este tipo de cosas, pero no veo de todos modos para hacerlo. Los datos financieros tienen muchas características, pero no veo una manera de obtener este tipo de cosas.

¿Alguien tiene alguna experiencia con esto o alguien puede señalarme en la dirección correcta?

+1

Para el cierre de los votantes, esto es acerca de la programación en Mathematica y no es fuera de tema. Votos como este son uno de los motivos por los que hay una propuesta para un [sitio específico de Mathematica] (http://area51.stackexchange.com/proposals/37304/mathematica). – Verbeia

Respuesta

19

Puede Import directamente desde una URL. Por ejemplo, los datos de federalreserve.gov pueden obtenerse y visualizarse de la siguiente manera.

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] 

Rompí url por conveniencia, ya que es tan larga. Tuve que examinar el contenido de data antes de saber exactamente cómo trazarlo, un paso que normalmente es necesario. Estoy seguro de que los datos de stlouisfed.org se pueden obtener de una manera similar, pero requiere el uso de una API con clave para acceder a ella.

+0

Gracias Mark. El truco parece ser ver el código fuente de las páginas e identificar la URL correcta para los datos que necesito. – Jagra

+1

Un ejemplo que encontré útil para descubrir este problema está en 'DateListPlot' [documentation] (http://reference.wolfram.com/mathematica/ref/DateListPlot.html?q=DateListPlot&lang=en), que en realidad está usando información sobre el consumo de petróleo desde 1980. –

+0

¡Hola Mark, buena respuesta y genial ver que estás de vuelta! –

12

Como dijo Mark, puede obtener los datos directamente de una URL. Sus datos de petróleo pueden ser importados de un URL diferente del que tenía:

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

Con esa URL, usted puede hacer esto:

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

Tenga en cuenta que "HeaderLines" -> 12 tiras opción Desactivado el texto del encabezado en las primeras 12 líneas (debe contar las líneas del encabezado para saber cuántas eliminar). También he especificado el formato de fecha.

Para encontrar esa URL, haga lo que hizo antes, pero haga clic en una serie de datos y luego seleccione Ver datos en el menú de la izquierda cuando vea la tabla.

+0

Tim - Gracias por el refinamiento, es bueno tener todo el formato hecho en una sola pasada. – Jagra

+0

@TimMayes Tenemos una [propuesta para un sitio específico de mathematica] (http://area51.stackexchange.com/proposals/37304/mathematica?referrer=hWeRiD9Qz0oIDM_9uBjtlA2) para todo lo relacionado con mathematica. Sería bueno si pudieras comprometer (implica la creación de una cuenta Area51) a la propuesta. Estamos muy cerca del lanzamiento (solo necesitamos unos 50 usuarios más). Lo siento, si ya lo has hecho, – abcd

+0

@TimMayes usando la API es preferible porque no necesitas saber con anticipación cuántas líneas debes quitar, etc. Todo lo que necesitas es la clave API, que es gratis. También elimina la necesidad de encontrar primero la URL en el sitio web de FRED antes de usar 'Import' –

4

discusión sobre cómo hacer esto con su clave de API aquí:

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

la función se basa en la documentación de la API. No he visto el código durante un par de años y desde la memoria lo armé bastante rápido pero lo he usado regularmente durante más de 2 años sin problemas. Este es un ejemplo para las ventas al por menor desestacionalizados no mensuales desde principios de 1992 hasta ahora:

enter image description here

Wolfram Alpha también utiliza datos FRED por lo que podría usar eso como una alternativa a la importación directa, pero es más difícil de conseguir la consulta correcta. Prefiero usar FRED directamente. También desde la memoria, los datos solo están disponibles en alfa el día posterior a la publicación, que no es lo que normalmente querría.

enter image description here

Cuestiones relacionadas