2012-01-03 50 views
16

St. Louis Ngân hàng Dự trữ Liên bang có một bộ lớn dữ liệu có sẵn trên một loạt các trang web của họ, chẳng hạn như:Nhập dữ liệu từ 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

Các bộ dữ liệu được cập nhật , một số thường xuyên như hàng ngày. Tôi có xu hướng quan tâm đến dữ liệu hàng ngày (xem các cài đặt ở trên trên URL)

Tôi muốn nhập các loại dữ liệu giá hoặc tốc độ này (có thể truy cập dưới dạng tệp CSV hoặc Excel tại các URL trên) trực tiếp vào Mathematica.

Tôi đã xem tài liệu về Nhập [] nhưng tôi tìm thấy tài liệu không rõ ràng (thực sự là không có) về cách thực hiện một việc như thế này.

Có vẻ như tôi cần điều hướng đến các trang, gửi một số dữ liệu để chọn tệp và định dạng cụ thể, kích hoạt tải xuống, sau đó truy cập dữ liệu đã tải xuống từ máy của riêng tôi. Thậm chí tốt hơn nếu tôi có thể truy cập dữ liệu trực tiếp từ các trang web.

Tôi đã hy vọng Wolfram Alpha có thể làm cho việc sắp xếp này trở nên dễ dàng, nhưng tôi đã không thành công.

FinancialData[] sẽ có vẻ tự nhiên đối với loại điều này, nhưng tôi không thấy anyway để làm điều đó. Dữ liệu tài chính có rất nhiều tính năng, nhưng tôi không thấy cách nào có được thứ như thế này.

Có ai có kinh nghiệm với điều này hoặc ai đó có thể chỉ cho tôi đi đúng hướng không?

+1

Để cử tri gần, đây là về lập trình trong Mathematica và không phải là chủ đề. Các phiếu bầu như vậy là một trong những lý do có đề xuất cho một [trang web cụ thể về toán học] (http://area51.stackexchange.com/proposals/37304/mathematica). – Verbeia

Trả lời

19

Bạn có thể Import trực tiếp từ URL. Ví dụ, dữ liệu từ Federalreserve.gov có thể được lấy và hình dung như sau.

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] 

Tôi đã chia tay url để thuận tiện, vì quá lâu. Tôi đã phải kiểm tra các nội dung của data trước khi tôi biết chính xác làm thế nào để vẽ nó - một bước thường là cần thiết. Tôi chắc chắn rằng dữ liệu từ stlouisfed.org có thể thu được theo cách tương tự, nhưng nó yêu cầu sử dụng một API có khóa để truy cập nó.

+0

Cảm ơn Mark. Bí quyết dường như đang xem mã nguồn của trang và xác định đúng URL cho dữ liệu tôi cần. – Jagra

+1

Một ví dụ tôi thấy hữu ích cho việc tìm ra vấn đề này là trong 'DateListPlot' [documentation] (http://reference.wolfram.com/mathematica/ref/DateListPlot.html?q=DateListPlot&lang=en), mà thực sự đang sử dụng thông tin về mức tiêu thụ dầu từ năm 1980. –

+0

Xin chào Mark, câu trả lời hay và tuyệt vời khi thấy bạn trở lại! –

12

Như Mark đã nói, bạn có thể lấy dữ liệu trực tiếp từ URL. dữ liệu dầu bạn có thể được nhập khẩu từ một URL khác hơn bạn có:

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

Với URL đó, bạn có thể làm điều này:

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

Lưu ý rằng "HeaderLines" -> 12 tùy chọn dải tắt văn bản tiêu đề trong 12 dòng đầu tiên (bạn phải đếm các dòng tiêu đề để biết số lượng tiêu đề cần xóa). Tôi cũng đã chỉ định định dạng ngày.

Để tìm URL đó, hãy làm như bạn đã làm trước đó, nhưng nhấp vào chuỗi dữ liệu và sau đó chọn Xem dữ liệu từ menu ở bên trái khi bạn thấy biểu đồ.

+0

Tim - Cảm ơn bạn đã sàng lọc, hay để có được tất cả các định dạng được thực hiện trong một lần. – Jagra

+0

@TimMayes Chúng tôi có [đề xuất cho một trang web cụ thể về toán học] (http://area51.stackexchange.com/proposals/37304/mathematica?referrer=hWeRiD9Qz0oIDM_9uBjtlA2) cho bất kỳ điều gì liên quan đến toán học. Nó sẽ được tốt đẹp nếu bạn có thể cam kết (liên quan đến việc tạo một tài khoản Area51) để đề xuất. Chúng tôi khá gần để khởi chạy (chỉ cần khoảng 50 người dùng nữa). Lời xin lỗi của tôi nếu bạn đã làm như vậy – abcd

+0

@TimMayes sử dụng API là thích hợp hơn bởi vì bạn không cần phải biết trước bao nhiêu dòng để bỏ đi vv Tất cả bạn cần là khóa API miễn phí. Nó cũng giúp loại bỏ sự cần thiết phải tìm URL đầu tiên trên trang web FRED trước khi sử dụng 'Nhập ' –

4

thảo luận về làm thế nào để làm điều này với khóa API của bạn ở đây:

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

chức năng được dựa trên tài liệu API. Tôi đã không nhìn vào mã trong một vài năm và từ bộ nhớ tôi đặt nó với nhau khá nhanh chóng nhưng tôi đã sử dụng nó thường xuyên trong hơn 2 năm mà không có vấn đề. Dưới đây là một ví dụ cho doanh số bán lẻ điều chỉnh theo mùa không hàng tháng từ đầu năm 1992 đến nay:

enter image description here

Wolfram Alpha cũng sử dụng dữ liệu FRED, do đó bạn có thể sử dụng như là một thay thế cho nhập khẩu trực tiếp nhưng nó là khó khăn hơn để có được quyền truy vấn. Tôi thích sử dụng FRED trực tiếp. Cũng từ bộ nhớ, dữ liệu chỉ có sẵn trên alpha ngày sau khi phát hành, mà không phải là những gì bạn thường muốn.

enter image description here

Các vấn đề liên quan