Skip to main content

No project description provided

Project description

myeia

PyPI version License: MIT Weekly Downloads Monthly Downloads Downloads

myeia is a simple Python wrapper for the U.S. Energy Information Administration (EIA) APIv2. It is designed to be simple to use and to provide a consistent interface for accessing EIA data.

Installation

pip install myeia

Requirements

  • pandas
  • requests
  • python-dotenv

eia OPEN DATA Registration

To obtain an API Key you need to register on the EIA website.

eia API Query Browser

To find all EIA Datasets visit API Dashboard.

How to use

from myeia.api import API

eia = API()

Prerequisites

# Create your personal .env file in your projects root directory
touch .env

By Default the EIA class will look for your API EIA_TOKEN.

If you have registered for an API key you can set it in your .env file.

EIA_TOKEN=YOUR_TOKEN_HERE

Get Series

Lets look at an example of how to get the EIA Natural Gas Futures. You can use the simpler v1 API method where you only need to pass the series_id or you can use the newer v2 API method where you need to pass the route, series, and frequency.

df = eia.get_series(series_id="NG.RNGC1.D")

df = eia.get_series_via_route(
    route="natural-gas/pri/fut",
    series="RNGC1",
    frequency="daily",
)

df.head()

Output Example:

            Natural Gas Futures Contract 1 (Dollars per Million Btu)
Date
2022-09-13                                              8.284
2022-09-12                                              8.249
2022-09-09                                              7.996
2022-09-08                                              7.915
2022-09-07                                              7.842
...                                                       ...

Different Facets

Lets look at another example the Total OPEC Petroleum Supply where the facet is available as seriesId. By Default it is set as series but we can define the facet as seriesId.

df = eia.get_series(series_id="STEO.PAPR_OPEC.M")

df = eia.get_series_via_route(
    route="steo",
    series="PAPR_OPEC",
    frequency="monthly",
    facet="seriesId",
)

df.head()

Output Example:

            Total OPEC Petroleum Supply
Date
2023-12-01                    34.517314
2023-11-01                    34.440397
2023-10-01                    34.376971
2023-09-01                    34.416242
2023-08-01                    34.451823
...                                 ...

Get Multiple Series

You can also get a list of series for a specific route.

You have to make sure they are both in the same frequency and facet type.

df = eia.get_series_via_route(
    route="natural-gas/pri/fut",
    series=["RNGC1", "RNGC1"],
    frequency="daily",
    facet="series",
)

df.head()

Output Example:

            Natural Gas Futures Contract 1 (Dollars per Million Btu)  Natural Gas Futures Contract 2 (Dollars per Million Btu)
Date                                                                                                                          
2023-08-29                                              2.556                                                     2.662       
2023-08-28                                              2.579                                                     2.665       
2023-08-25                                              2.540                                                     2.657       
2023-08-24                                              2.519                                                     2.636       
2023-08-23                                              2.497                                                     2.592       
...                                                       ...                                                       ...

Define a Start and End Date

You can define a start and end date for your query.

df = eia.get_series(
    series_id="NG.RNGC1.D",
    start_date="2021-01-01",
    end_date="2021-01-31",
)

df.head()

Output Example:

            Natural Gas Futures Contract 1 (Dollars per Million Btu)
Date                                                                
2021-01-29                                              2.564       
2021-01-28                                              2.664       
2021-01-27                                              2.760       
2021-01-26                                              2.656       
2021-01-25                                              2.602       
...                                                       ...       

This also works for the get_series_via_route method.

df = eia.get_series_via_route(
    route="natural-gas/pri/fut",
    series=["RNGC1", "RNGC2"],
    frequency="daily",
    start_date="2021-01-01",
    end_date="2021-01-31",
)

df.head()

Output Example:

            Natural Gas Futures Contract 1 (Dollars per Million Btu)  Natural Gas Futures Contract 2 (Dollars per Million Btu)
Date
2021-01-29                                              2.564                                                     2.592
2021-01-28                                              2.664                                                     2.675
2021-01-27                                              2.760                                                     2.702
2021-01-26                                              2.656                                                     2.636
2021-01-25                                              2.602                                                     2.598
...                                                       ...                                                       ...

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

myeia-0.3.6.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

myeia-0.3.6-py2.py3-none-any.whl (6.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file myeia-0.3.6.tar.gz.

File metadata

  • Download URL: myeia-0.3.6.tar.gz
  • Upload date:
  • Size: 7.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.8.18

File hashes

Hashes for myeia-0.3.6.tar.gz
Algorithm Hash digest
SHA256 f7d1f289c95110d3c23e476262d14024901d08da3c27cf31b0e41123546328c4
MD5 4de1db820682fe906e7f029bbc9967c8
BLAKE2b-256 250efdb123b5601778ebb41afe277571b5145ddda5c1e0e7452e0db33a6d6608

See more details on using hashes here.

File details

Details for the file myeia-0.3.6-py2.py3-none-any.whl.

File metadata

  • Download URL: myeia-0.3.6-py2.py3-none-any.whl
  • Upload date:
  • Size: 6.3 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.8.18

File hashes

Hashes for myeia-0.3.6-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 5edf86e114bdb11ef7a5f93ee1b757d419a3ec8aa5e90d5872265aea2670c10b
MD5 b6ea685e7eba37aff68d6f4fdcbbc1b5
BLAKE2b-256 21933880c993a1f043ba6d8bf9c56f45b97466444672e228fdcf15e5e443cd4b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page