为了账号安全,请及时绑定邮箱和手机立即绑定

在线下载 CSV 并转换为 Pandas DF

在线下载 CSV 并转换为 Pandas DF

四季花海 2023-08-08 15:21:50
我有一个正在网上下载的 CSV 文件。我正在尝试将其放入 Pandas DataFrame 中。来源是联邦储备银行并使用通胀数据(CPI)。我缺少一些东西来完成这项工作。这是下载网址:s_url = https://fred.stlouisfed.org/graph/fredgraph.csv?cosd=1990-01-01&coed=2040-01-01&id=CPIAUCSL我正在获取该 URL 并使用以下内容读取它:response = urlopen(s_url).read()这给了我看起来像这样的东西:b'DATE,CPIAUCSL\n1990-01-01,127.5\n1990-02-01,128.0\n1990-03-01,128.6\n1990-04-01,128.9\n1990-05-01,129.1\n1990-06-01,129.9\n1990-07-01,130.5\n1990-08-01,131.6\n1990-09-01,132.5\n1990-10-01,133.4\n1990-11-01,133.7\n1990-12-01,134.2\n1991-01-01,134.7\n1991-02-01,134.8\n1991-03-01,134.8\n1991-04-01,135.1\n1991-05-01,135.6\n1991-06-01,136.0\n'然后我尝试将这个响应读入 Pandas:df = pd.read_csv(response)那是行不通的。我在此过程中缺少哪些步骤?
查看完整描述

2 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

看来直接使用 url 作为 df 参数是可行的。你尝试过吗?


import pandas as pd 

s_url = 'https://fred.stlouisfed.org/graph/fredgraph.csv?cosd=1990-01-01&coed=2040-01-01&id=CPIAUCSL' 

df = pd.read_csv(s_url)


查看完整回答
反对 回复 2023-08-08
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

您可以使用stringIO从字符串中读取数据。


data = b'DATE,CPIAUCSL\n1990-01-01,127.5\n1990-02-01,128.0\n1990-03-01,128.6\n1990-04-01,128.9\n1990-05-01,129.1\n1990-06-01,129.9\n1990-07-01,130.5\n1990-08-01,131.6\n1990-09-01,132.5\n1990-10-01,133.4\n1990-11-01,133.7\n1990-12-01,134.2\n1991-01-01,134.7\n1991-02-01,134.8\n1991-03-01,134.8\n1991-04-01,135.1\n1991-05-01,135.6\n1991-06-01,136.0\n'

from io import StringIO

import pandas as pd

data = data.decode('utf-8') #decode binary string to utf-8

df = pd.read_csv(StringIO(data)) #read the data

df

输出:


DATE    CPIAUCSL

0   1990-01-01  127.5

1   1990-02-01  128.0

2   1990-03-01  128.6

3   1990-04-01  128.9

4   1990-05-01  129.1

5   1990-06-01  129.9


查看完整回答
反对 回复 2023-08-08
  • 2 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信