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.4.0.0.tar.gz (14.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

omiedata-0.4.0.0-py3-none-any.whl (24.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for omiedata-0.4.0.0.tar.gz
Algorithm Hash digest
SHA256 c9ca7c32dadd61154decba35a165cc8ecf159b86f6f1859f4819d4a99210afe6
MD5 c2d970f948d3e9b7e13459fb54a646b5
BLAKE2b-256 dbad96c7d2897db8e7231d67939a79a56b48b5f0153f08e39e9412f6dd2efcc0

See more details on using hashes here.

File details

Details for the file omiedata-0.4.0.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for omiedata-0.4.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a3cdd4c0d1212b13a5c3e8b6afa29c65eafb228b2d067c22e9a0797b22516a0d
MD5 a2cc739f27d5e45363b32dc7d225a515
BLAKE2b-256 40d0ecbfed515bf24361181927fffe1a547ab8c85df5775ebb0ed8d410917f54

See more details on using hashes here.

Supported by

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