如何用python导入EIA数据

问题描述 投票:0回答:1

我尝试从 EIA API 中提取一些数据,但出现错误。

EIA 数据网址“https://www.eia.gov/dnav/pet/hist/rbrteD.htm”

pip install EIA_python

import pandas as pd
import eia


def retrieve_data():
    # Create EIA API using your specific API key
    api_key = "abcxyz"
    api = eia.API(api_key)

    # Retrieve Data By Series ID 
    series_ID='PET.RWTC.D'
    series_search = api.data_by_series(series=series_ID)
    df = pd.DataFrame(series_search)    
    df.index.names = ['Date']
    df.columns=[ "Price"]
    df.index = df.index.str.replace('^([\d]{4})\s([\d]{2})([\d]{2})\s[\d]{2}', r'\1-\2-\3',regex=True)
    df.index = pd.to_datetime(df.index)
    return df

data = retrieve_data()
data.to_csv('OK_WTI_Spot_Price_FOB.csv',index=True)

以下是我遇到的错误

Cell In[5], line 1
----> 1 data = retrieve_data()
      2 data.to_csv('OK_WTI_Spot_Price_FOB.csv',index=True)
      3 data

Cell In[4], line 8, in retrieve_data()
      6 # Retrieve Data By Series ID 
      7 series_ID='PET.RWTC.D'
----> 8 series_search = api.data_by_series(series=series_ID)
      9 df = pd.DataFrame(series_search)    
     10 df.index.names = ['Date']

File ~\AppData\Local\anaconda3\lib\site-packages\eia\api.py:424, in API.data_by_series(self, series)
    420         raise InvalidSeries(error_msg)
    422 else:
    423     lst_dates = [x[0][0:4] + " " + x[0][4:] + " " + x[0][6:8]
--> 424                  for x in search.json()['series'][0]['data']]
    425     lst_values = [x[1] for x in
    426                   search.json()['series'][0]['data']]
    427     dates_values_dict = dict(zip(lst_dates, lst_values))

python pandas
1个回答
0
投票

方法 data_by_series 使用已弃用的 API,并显示以下响应:

{"error":"EIA 已于 2023 年 3 月 13 日停用 APIv1。请使用以 /v2 开头的 APIv2 调用,或以 api.eia.gov/seriesid/V1_SERIES_ID 开头的向后兼容性调用。完整文档可在 https:// /www.eia.gov/opendata","代码":404}

© www.soinside.com 2019 - 2024. All rights reserved.