Haftungsausschluss: Diese Bibliothek wurde geschrieben, um mit verschiedenen Konzepten zu experimentieren. Die Submodules entsoe_client.parameterTypes und entsoe_client.queries sind einfach. Um enttsoe_client.Parsers refactor to Refactor zu repräsentieren, werden die nächsten Schritte darin bestehen, Feorturen festzulegen, die Abflachung des XML -Baums zu standardisieren und die Datensätze aus der DataFrame -Bibliothek zu entkoppeln.
Formulieren lesbare Abfragen und verarbeiten Sie Daten in Pandas, einschließlich einer umfassenden Reihe vordefinierter Abfragen.
> >> import requests
> >> from lxml import objectify
> >> from lxml . etree import dump
> >> url = 'https://transparency.entsoe.eu/api?'
... 'documentType=A81&businessType=A95&psrType=A04&type_MarketAgreement.Type=A01&controlArea_Domain=10YNL----------L'
... f '&periodStart=202101010000&periodEnd=202104010000&securityToken={api_key}'
> >> response = requests . Session (). get ( url = url )
> >> element = objectify . fromstring ( response . content )
> >> dump ( element )
< Balancing_MarketDocument xmlns = "urn:iec62325.351:tc57wg16:451-6:balancingdocument:3:0" >
< mRID > 051 b91beed574b48b4548214e9001afc < / mRID >
< revisionNumber > 1 < / revisionNumber >
< type > A81 < / type >
< process . processType > A34 < / process . processType >
< sender_MarketParticipant . mRID codingScheme = "A01" > 10 X1001A1001A450 < / sender_MarketParticipant . mRID >
< sender_MarketParticipant . marketRole . type > A32 < / sender_MarketParticipant . marketRole . type >
< receiver_MarketParticipant . mRID codingScheme = "A01" > 10 X1001A1001A450 < / receiver_MarketParticipant . mRID >
< receiver_MarketParticipant . marketRole . type > A33 < / receiver_MarketParticipant . marketRole . type >
< createdDateTime > 2021 - 10 - 04 T18 : 12 : 43 Z < / createdDateTime >
< controlArea_Domain . mRID codingScheme = "A01" > 10 YNL - - - - - - - - - - L < / controlArea_Domain . mRID >
< period . timeInterval >
< start > 2020 - 12 - 31 T23 : 00 Z < / start >
< end > 2021 - 03 - 31 T22 : 00 Z < / end >
< / period . timeInterval >
< TimeSeries >
< mRID > 1 < / mRID >
< businessType > A95 < / businessType >
< type_MarketAgreement . type > A01 < / type_MarketAgreement . type >
< mktPSRType . psrType > A04 < / mktPSRType . psrType >
< flowDirection . direction > A03 < / flowDirection . direction >
< quantity_Measure_Unit . name > MAW < / quantity_Measure_Unit . name >
< curveType > A01 < / curveType >
< Period >
< timeInterval >
< start > 2020 - 12 - 31 T23 : 00 Z < / start >
< end > 2021 - 01 - 01 T23 : 00 Z < / end >
< / timeInterval >
< resolution > PT60M < / resolution >
< Point >
< position > 1 < / position >
< quantity > 44 < / quantity >
< / Point >
< Point >
< position > 2 < / position >
< quantity > 44 < / quantity >
[...]wird
> >> import entsoe_client as ec
> >> from entsoe_client . ParameterTypes import *
> >> client = ec . Client ( api_key )
> >> parser = ec . Parser
> >> query = ec . Query (
... documentType = DocumentType ( "Contracted reserves" ),
... psrType = PsrType ( "Generation" ),
... businessType = BusinessType ( "Frequency containment reserve" ),
... controlArea_Domain = Area ( "NL" ),
... type_MarketAgreementType = MarketAgreementType ( "Daily" ),
... periodStart = "2021-01-01T00:00" ,
... periodEnd = "2021-04-01T00:00"
... )
> >> response = client ( query )
> >> df = parser . parse ( response )
> >> df . iloc [:,: 3 ]. head ()
position quantity Period . timeInterval . start ...
2020 - 12 - 31 23 : 00 : 00 + 00 : 00 1 44 2020 - 12 - 31 T23 : 00 Z
2021 - 01 - 01 00 : 00 : 00 + 00 : 00 2 44 2020 - 12 - 31 T23 : 00 Z
2021 - 01 - 01 01 : 00 : 00 + 00 : 00 3 44 2020 - 12 - 31 T23 : 00 Z
2021 - 01 - 01 02 : 00 : 00 + 00 : 00 4 44 2020 - 12 - 31 T23 : 00 Z
2021 - 01 - 01 03 : 00 : 00 + 00 : 00 5 44 2020 - 12 - 31 T23 : 00 Z
...Vordefinierte Abfragen sind Teilmenge der generischen Abfrageklasse, die alle Beispiele des Entso-E-API-Handbuchs abdecken.
> >> predefined_query = ec . Queries . Balancing . AmountOfBalancingReservesUnderContract (
... controlArea_Domain = Area ( "NL" ),
... type_MarketAgreementType = MarketAgreementType ( "Daily" ),
... psrType = PsrType ( "Generation" ),
... periodStart = "2021-01-01T00:00" ,
... periodEnd = "2021-04-01T00:00"
... )
...
> >> predefined_query () == query ()
TrueHauptbeiträge
Diese ermöglichen die Zuordnung zwischen natürlicher Sprache und den für GET -Anforderungen erforderlichen Codes, z. B. DocumentType.A85 == DocumentType("Imbalance price") . Diese Funktion ermöglicht es, Abfragen zu verfolgen, ohne zwischen Dokumenten zu springen oder Kommentare hinzuzufügen.
Der ENTSO-E-API-Handbuch ist ein minialer Set für jeden API-Connector, der alle Dashboards auf der Entso-E-Transparenzplattform reflektiert.
Antwortdokumente sind im XML -Schema erhältlich, das in Pandas -Datenrahmen analysiert werden kann.
Implementiert: GL_MARKETDOCUMENTS, TransmissionNetwork_Marketdocuments, Publication_MarketDocuments und Balancing_MarketDocuments.
Fehlende: Ausfälle, Überlastungsmanagement und Systembetrieb.
Dennoch versucht der Entso-E-Client, von Abfrage zum Datenrahmen zu wechseln, und benötigt Domänenwissen darüber, wie Abfragen formuliert und verschiedene Spalten einer analysierten Antwort interpretiert werden.
Entso-E stützt sich auf viele Codes (Typ), um den gewünschten Abfragen zuzuordnen. Die Typen werden in Enum -Klassen mit einer .Help () -Funktion codiert, um das All aufzulisten. Sie können über Typ [Code] oder Typ (String) behandelt werden, was die Interaktion einfacher macht. HTTP-Anforderungen und Antworten erfordern normalerweise den Code, während wir die Abfrage als menschlich-lesbare Zeichenfolge formulieren möchten.
von entsoe_client Import -Abfragen
von entsoe_client.parameterTypes import *
Queries.transmission.CapacityAllocatedoutsideeu (
out_domain = aa ('sk'),
in_domain = aa ('ua_bei'),
marktagreementtype = marktagreementtype ('Daily'), # Originalcode: A01
AuctionType = AuctionType ('explizit'), # ursprünglicher Code: A02
AuctionCategory = AuctionCategory ('stündlich'), # Originalcode: A04
klassifizierungsequenz_attributeinstancecomponent_position = 1,,
PeriodStart = 201601012300,
Periodend = 201601022300)
>>> Parametertype.DocumentType ['A25'] == ParameterTypes.DocumentType ('Allocation -Ergebnis -Dokument')
WAHR
>>> ec.parameterTypes.documentType.help ()
--- DocumentType ---
API_PARAMETER: Beschreibung
[...]
A25: Allokationsergebnisdokument
A71: Generationsprognose
A72: Informationen zur Füllung des Reservoirs
A73: Tatsächliche Generation
A85: Ungleichgewichtspreise
A86: Ungleichgewichtsvolumen
[...]
API_PARAMETER: Beschreibung
--- DocumentType ---
>>> ec.parameterTypes.businessType.help ()
--- BusinessType ---
API_PARAMETER: Beschreibung
[...]
A25: Allgemeine Kapazitätsinformationen
A29: Bereits zugewiesene Kapazität (AAC)
A97: Manuelle Frequenzrestaurationsreserve
B08: Gesamtnominierte Kapazität
C22: Shared Balancing Reserve Capazy
C24: Tatsächliche Reservekapazität
[...]
API_PARAMETER: Beschreibung
--- BusinessType ---
#shortiert von sample_plot.py
Importieren Sie entsoe_client als EC
Aus Einstellungen importieren Sie api_key
# Kunden, Parser und Abfrage instanziieren.
client = ec.client (api_key)
Parser = ec.parser ()
query = ec.queries.generation.aggregatedgenerationPerType (
in_domain = ec.parameterTypes.area ('de_lu'),
Periodenstart = 202109050200,
Periodend = 202109070200)
# Daten extrahieren.
Antwort = Client (Abfrage)
DF = Parser (Antwort)
[...]
# Daten transformieren.
production = df [~ Consumpt_mask] [['Quantity', 'timeries.mktpsrtype.psrtype']]]]]]]]]]]]]]
## psrtype, z. `B01`: =` biomass`.
Produktion ['GenerationType'] = Produktion ['Timeries.mktpsrtype.psrtype'].
anwenden (lambda x: parameterTypes.prtype [x] .Value) # karten entso-e psrtypes in die menschliche lesbare Zeichenfolge.
production_by_type = pd.pivot_table (Produktion,
index = produktion.index,
Spalten = 'GenerationType',
Werte = 'Menge')
[...]
# Handlung.
production_by_type.plot.bar (title = "Produktion nach Generation Typ in De-lu",
xlabel = "utc",
ylabel = 'mwh',
ax = ax,
** plot_params)
[...]
