2012-01-03 10 views
16

lo St. Louis Federal Reserve Bank ha un grande insieme di dati disponibili su una varietà delle proprie pagine web, come ad esempio:Importa dati da 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

I set di dati vengono aggiornati , alcuni tutti i giorni. Tendo ad avere un interesse per i dati giornalieri (vedi le impostazioni precedenti sugli URL)

Vorrei importare questi tipi di flussi di dati di prezzo o tasso (accessibili come file CSV o Excel negli URL di cui sopra) direttamente in Mathematica.

Ho esaminato la documentazione di Importazione [] ma trovo scarsa documentazione (in realtà nessuna) su come procedere su qualcosa di simile.

Sembra che sia necessario navigare verso le pagine, inviare alcuni dati per selezionare file e formati specifici, attivare il download, quindi accedere ai dati scaricati dalla mia macchina. Ancora meglio se potessi accedere ai dati direttamente dai siti.

Speravo che Wolfram Alpha potesse rendere questa cosa facile, ma non ho avuto alcun successo.

FinancialData[] sembrerebbe naturale per questo genere di cose, ma non vedo comunque di farlo. I dati finanziari hanno molte funzionalità, ma non vedo come si possa ottenere questo genere di cose.

Qualcuno ha qualche esperienza con questo o qualcuno può indicarmi la giusta direzione?

+1

fino alla fine degli elettori, si tratta di programmazione in Mathematica e non è fuori tema. Voti come questo sono uno dei motivi per cui esiste una proposta per un sito specifico di Mathematica (http://area51.stackexchange.com/proposals/37304/mathematica). – Verbeia

risposta

19

È possibile Import direttamente da un URL. Ad esempio, i dati di federalreserve.gov possono essere ottenuti e visualizzati come segue.

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] 

ho rotto url per comodità, dal momento che è così a lungo. Ho dovuto esaminare il contenuto di data prima di sapere esattamente come tracciarlo - un passaggio che è in genere necessario. Sono sicuro che i dati di stlouisfed.org possono essere ottenuti in modo simile, ma richiede l'uso di un'API con la chiave per accedervi.

+0

Grazie Marco. Il trucco sembra essere la visualizzazione del codice sorgente delle pagine e l'identificazione dell'URL giusto per i dati di cui ho bisogno. – Jagra

+1

Un esempio che ho trovato utile per capire questo problema è in "DateListPlot' [documentation] (http://reference.wolfram.com/mathematica/ref/DateListPlot.html?q=DateListPlot&lang=en), che in realtà sta usando informazioni sul consumo di petrolio dal 1980. –

+0

Ciao Marco, bella risposta e bello vedere che sei tornato! –

12

Come ha affermato Mark, è possibile ottenere i dati direttamente da un URL. I Suoi dati di petrolio possono essere importati da un URL diverso da quello che aveva:

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

Con questo URL, si può fare questo:

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

Nota che "HeaderLines" -> 12 opzione si spoglia il testo dell'intestazione nelle prime 12 righe (devi contare le linee dell'intestazione per sapere quanti ne vuoi rimuovere). Ho anche specificato il formato della data.

Per trovare quell'URL, fai come hai fatto prima, ma fai clic su una serie di dati e poi scegli Visualizza dati dal menu a sinistra quando vedi il grafico.

+0

Tim - Grazie per la raffinatezza, bello avere tutta la formattazione fatta in un solo passaggio. – Jagra

+0

@TimMayes Abbiamo una [proposta per un sito specifico mathematica] (http://area51.stackexchange.com/proposals/37304/mathematica?referrer=hWeRiD9Qz0oIDM_9uBjtlA2) per tutto ciò che riguarda la matematica. Sarebbe bello se tu potessi commettere (comporta la creazione di un account Area51) alla proposta. Siamo molto vicini al lancio (servono solo circa 50 utenti in più). Mi scuso se lo hai già fatto, – abcd

+0

@TimMayes utilizzando l'API è preferibile perché non è necessario sapere in anticipo quante righe rimuovere, ecc. Tutto ciò di cui hai bisogno è la chiave API che è gratuita. Elimina inoltre la necessità di trovare prima l'URL sul sito Web di FRED prima di utilizzare 'Import' –

4

discussione su come fare questo con la tua chiave API qui:

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

la funzione si basa sulla documentazione API. Non ho guardato il codice per un paio d'anni e dalla memoria l'ho messo insieme piuttosto velocemente, ma l'ho usato regolarmente per oltre 2 anni senza problemi. Ecco un esempio per le vendite al dettaglio mensili non destagionalizzati da inizio 1992 ad oggi:

enter image description here

Wolfram Alpha utilizza anche i dati FRED così si potrebbe utilizzare che come alternativa alla importazione diretta ma è più difficile da ottenere la domanda giusta. Preferisco usare direttamente FRED. Anche dalla memoria i dati sono disponibili solo in alpha il giorno successivo alla pubblicazione, che non è quello che vorresti in genere.

enter image description here