使用Python访问NOAA API。已下载数据集,如何打开它们?

4

我尝试从NOAA访问数据集用于一个项目。我已经成功下载了JSON文件,但我不知道如何打开我想要的文件。

url = "http://www.ncdc.noaa.gov/cdo-web/api/v2/data?datasetid=GHCNDMS"
headers = {"token":"my token"}
response = json.loads(requests.get(url, "dataset", headers = headers).text)
response = response['results']
response = response[0]
print(response)

这是我的输出:
{'uid': 'gov.noaa.ncdc:C00861', 'mindate': '1763-01-01', 'maxdate': '2018-04-22', 'name': 'Daily Summaries', 'datacoverage': 1, 'id': 'GHCND'}

我该如何访问数据集内的数据,以便将它们转换为Pandas DataFrame?

当我使用我的令牌运行像这样的http请求时,请求会挂起。 - knb
1个回答

1

你的输出是一个字典,可以通过 df = pd.DataFrame([response]) 直接转换为 pandas dataframe - 注意,我将这个字典作为一个列表传递给 pandas DataFrame 构造函数。

或者你可以根据需要定制你的 url 来获取所需的信息。在下面的示例中,我正在从指定的数据集和日期范围中获取数据,这些信息很容易被获取/编辑。

看起来 NOAA 在某个时候更新了他们的 api 格式,很多现有的资料都不再适用,所以其他人可能会在使用这个示例代码时遇到错误。如果你刚开始学习,这种格式将返回一个带有结果的 json 文件,希望你能从中适应:

import requests
import pandas as pd
import json
from datetime import datetime

token = 'yourtoken'

url = "http://www.ncdc.noaa.gov/cdo-web/api/v2/data?datasetid=GHCNDMS&startdate=1776-07-04&enddate=1776-09-04"
headers = {"token":token}

r = requests.get(url, "dataset", headers = headers).text

response = json.loads(r)
response = response['results']
response = response[0]
print(response)

df=pd.DataFrame([response])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接