使用python访问在线数据

时间:2018-11-28 19:43:51

标签: python

我正在尝试访问https://fred.stlouisfed.org/series/FEDFUNDS上的联邦储备银行数据 我可以写什么代码来访问该数据库,然后将其放入字典中?还是我必须先下载文件并将其保存在计算机上?

2 个答案:

答案 0 :(得分:1)

最简单的方法是下载并解析“下载”按钮下列出的CSV文件。

您可以使用Requests库下载文件,然后使用本机CSV库。

答案 1 :(得分:0)

有关如何操作,请参见https://stackoverflow.com/a/32400969/9214517

假设您允许将数据保留在pandas DataFrame中(如上面的链接所示),这是代码:

import pandas as pd
import requests
import io
url = "https://fred.stlouisfed.org/graph/fredgraph.csv?bgcolor=%23e1e9f0&chart_type=line&drp=0&fo=open%20sans&graph_bgcolor=%23ffffff&height=450&mode=fred&recession_bars=on&txtcolor=%23444444&ts=12&tts=12&width=968&nt=0&thu=0&trc=0&show_legend=yes&show_axis_titles=yes&show_tooltip=yes&id=FEDFUNDS&scale=left&cosd=1954-07-01&coed=2018-10-01&line_color=%234572a7&link_values=false&line_style=solid&mark_type=none&mw=3&lw=2&ost=-99999&oet=99999&mma=0&fml=a&fq=Monthly&fam=avg&fgst=lin&fgsnd=2009-06-01&line_index=1&transformation=lin&vintage_date=2018-11-28&revision_date=2018-11-28&nd=1954-07-01"
s = requests.get(url).content.decode("utf-8")
df = pd.read_csv(io.StringIO(s)

那么您的df将是:

           DATE  FEDFUNDS
0    1954-07-01      0.80
1    1954-08-01      1.22
2    1954-09-01      1.06
3    1954-10-01      0.85
4    1954-11-01      0.83
....

如果您坚持使用dict,请使用它代替上面的最后一行来转换CSV数据s

mydict = dict([line.split(",") for line in s.splitlines()])

关键是如何获取URL:单击引用页面上的下载按钮,然后将链接复制到CSV。