Skip to main content

Package to download electricity time series from https://www.omie.es/

Project description

OMIEData:

made-with-python PyPI version fury.io PyPI pyversions

Python package to import data from OMIE (Iberian Peninsula's Electricity Market Operator): https://www.omie.es/

Concretely, you can easily access to data for the following markets:

  • Daily market: hourly prices in Spain and Portugal, total hourly energy after auction (with/without billateral contracts), breakdown of the total hourly energy by technology and bid/ask curves.
  • Intra-day market: hourly prices for the different sessions and total hourly energy.
  • Additional data in next releases.

Installation

The package is uploaded at https://pypi.org/project/OMIEData/, so

python -m pip install OMIEData

from the command line will install the last version uploaded to pypi.

Aternatively, to install it from GitHub repository, type:

python -m pip install git+https://github.com/acruzgarcia/OMIEData

in the command line. You can also install the .whl or .tar.gz files within dist as:

python -m pip install OMIEData-VERSION-py3-none-any.whl

or

python -m pip install OMIEData-VERSION.tar.gz

or to install a previous version from dist_old.

Examples:

A very simple example to download hourly electricity prices and demand:

import datetime as dt
import matplotlib.pyplot as plt

from OMIEData.DataImport.omie_marginalprice_importer import OMIEMarginalPriceFileImporter
from OMIEData.Enums.all_enums import DataTypeInMarginalPriceFile

dateIni = dt.datetime(2020, 1, 1)
dateEnd = dt.datetime(2022, 3, 22)

# This can take time, it is downloading the files from the website..
df = OMIEMarginalPriceFileImporter(date_ini=dateIni, date_end=dateEnd).read_to_dataframe(verbose=True)
df.sort_values(by='DATE', axis=0, inplace=True)
print(df)

The code will generate a data-frame like the following one:

            DATE         CONCEPT        H1  ...       H22       H23       H24
0     2020-01-01        PRICE_SP     41.88  ...     45.60     42.90     37.55
1     2020-01-01        PRICE_PT     41.88  ...     45.60     42.90     37.55
2     2020-01-01         ENER_IB  18132.30  ...  22492.60  21800.90  19946.30
3     2020-01-01  ENER_IB_BILLAT  26488.50  ...  32611.70  31523.70  29088.30
4     2020-01-02        PRICE_SP     35.40  ...     42.00     38.60     33.39
          ...             ...       ...  ...       ...       ...       ...
3241  2022-03-21        PRICE_PT    218.69  ...    261.44    240.29    228.88
3245  2022-03-22        PRICE_PT    223.00  ...    256.00    242.18    212.99
3246  2022-03-22         ENER_IB  20652.20  ...  27113.50  24167.60  21841.50
3244  2022-03-22        PRICE_SP    223.00  ...    256.00    242.18    212.99
3247  2022-03-22  ENER_IB_BILLAT  29840.30  ...  38281.20  34781.90  31872.50
[3248 rows x 26 columns]

You can filter the data-frame to have only the prices in spain, and then plot

# Just prices in spain
str_price_spain = str(DataTypeInMarginalPriceFile.PRICE_SPAIN)
dfPrices = df[df.CONCEPT == str_price_spain]

# Plotting
plt.figure()
plt.plot(dfPrices.DATE, dfPrices.H12, label='H12')
plt.plot(dfPrices.DATE, dfPrices.H23, label='H23')
plt.legend()
plt.show()

which will produce the following plot:

alt text

Another example to download hourly demand resulting of the daily market auction, breakdown by technologies:

import datetime as dt
from OMIEData.Enums.all_enums import SystemType
from OMIEData.DataImport.omie_energy_by_technology_importer import OMIEEnergyByTechnologyImporter

dateIni = dt.datetime(2020, 6, 1)
dateEnd = dt.datetime(2020, 7, 30)
system_type = SystemType.SPAIN

# This can take time, it is downloading the files from the website..
df = OMIEEnergyByTechnologyImporter(date_ini=dateIni,
                                    date_end=dateEnd,
                                    system_type=system_type).read_to_dataframe(verbose=True)
df.sort_values(by=['DATE', 'HOUR'], axis=0, inplace=True)
print(df)

Another example to download supply/demand curves:

import datetime as dt
from OMIEData.DataImport.omie_supply_demand_curve_importer import OMIESupplyDemandCurvesImporter

dateIni = dt.datetime(2020, 6, 1)
dateEnd = dt.datetime(2020, 6, 1)
hour = 1

# This can take time, it is downloading the files from the website..
df = OMIESupplyDemandCurvesImporter(date_ini=dateIni, date_end=dateEnd, hour=hour).read_to_dataframe(verbose=True)
df.sort_values(by=['DATE', 'HOUR'], axis=0, inplace=True)
print(df)

Other examples that illustrate the use of the package in here:

Enjoy!.

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

omiedata-0.3.0.0.tar.gz (14.0 kB view details)

Uploaded Source

Built Distribution

OMIEData-0.3.0.0-py3-none-any.whl (24.0 kB view details)

Uploaded Python 3

File details

Details for the file omiedata-0.3.0.0.tar.gz.

File metadata

  • Download URL: omiedata-0.3.0.0.tar.gz
  • Upload date:
  • Size: 14.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.3

File hashes

Hashes for omiedata-0.3.0.0.tar.gz
Algorithm Hash digest
SHA256 4ff3de5cb8085a898afc4e6e372b9575ab22ec68c3ccba466bec524b6b5a1fa4
MD5 f32d1e2abf43176827d0e7425d148d40
BLAKE2b-256 d707e2f8505efd963d80456934b91c1ffd0f3b702822cd306f1eea389bff8e76

See more details on using hashes here.

File details

Details for the file OMIEData-0.3.0.0-py3-none-any.whl.

File metadata

  • Download URL: OMIEData-0.3.0.0-py3-none-any.whl
  • Upload date:
  • Size: 24.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.3

File hashes

Hashes for OMIEData-0.3.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c7ea7e85733f0a2dcd6eec322379d9b9e194d39edd8b817028532e7f626a9fb5
MD5 ed38f600cecd86478a499e3897a358db
BLAKE2b-256 3831778858319cd8c8642846d5103470d558db7c0a1426e53dcc785af821c4e1

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