in

Gérer les fuseaux horaires avec Python. Cet article démontre… | par Himalaya Bir Shrestha | Avr, 2023


COMMENT TRAITER LES FUSIONS HORAIRES EN PYTHON POUR ANALYSER LES DONNÉES D’IRRADIANCE SOLAIRE

Introduction

Lorsque je commence à travailler à Bonn, en Allemagne, à 9 heures du matin le 1er octobre, il est déjà l’après-midi à 12h45 chez moi, à Chitwan, au Népal. Mon ami à Sydney, en Australie, a déjà terminé son emploi du temps à 18 heures le même jour. Un autre ami à New York, aux États-Unis, est encore en train de dormir car il est 3 heures du matin chez lui. Il est donc évident que ces quatre villes se trouvent dans différents fuseaux horaires.

Ce texte traite des fonctionnalités en Python pour traiter les fusions horaires, à travers une analyse comparative de données d’irradiance solaire horaire pour quatre villes en 2020 basées sur différents fuseaux horaires.

Détermination des coordonnées géographiques des villes

Pour extraire les données d’irradiance solaire des quatre villes, je commence par extraire leurs coordonnées géographiques à l’aide du package geopy. J’écris une fonction pour la géolocalisation en utilisant Nominatim, qui est un service open-source pour la géolocalisation qui utilise les données OpenStreetMap pour trouver des localisations sur la Terre par le nom et l’adresse.

Pour cela, j’utilise la fonction “get_coordinates” qui prend en paramètre la ville, envoie une requête Nominatim et renvoie les coordonnées sous forme de latitude et longitude.

Acquisition des données grâce à l’api de la NASA

Le service d’API de la NASA Power permet de récupérer les données de Solar Irradiance. Pour ce texte, je télécharge les données d’irradiance solaire pour 2020 de ces quatre villes/pays en résolution horaire depuis NASA Power Data. Le paramètre que j’utilise est le “ALLSKY_SFC_SW_DWN” pour 2020, qui est décrit en détail dans la section suivante.

Le données sont d’abord appelées dans le format UTC et enregist
rées comme un dataframe pandas. Ensuite, j’itère à travers les longitudes et les latitudes de chaque emplacement défini par géolocalisation dans une liste appelée “places” et demande les données d’irradiance solaire horaire pour 2020.

La statistique des données de base

Les données téléchargées sont montrées dans le graphique ci-dessus. Les données montrent une irradiance solaire plus élevée à Sydney vers le début et la fin de l’année, et plus faible vers le milieu de l’année. Ce modèle est inversé dans les trois autres villes, ce qui peut s’expliquer par la position de Sydney dans l’hémisphère sud et des autres villes dans l’hémisphère nord du globe.

Il est observé que Chitwan, au Népal, a reçu l’irradiance solaire annuelle la plus élevée (1669 kWh/m²) en 2020, suivie de Sydney, en Australie (1631 kWh /m²), New York, aux États-Unis (1462 kWh/m²), et Bonn, en Allemagne, ayant reçu le moins (1193 kWh/m²).
Cependant, l’irradiance solaire maximale reçue à une heure particulière est la plus élevée pour Sydney (1061,3 W/m²), suivie de Chitwan (997 W/m²).
Les valeurs de l’irradiance solaire minimale et du 25ème percentile pour chaque ville sont nulles car il n’y a pas d’irradiance solaire pendant les heures de nuit.

Les fusions horaires

1. Dataframe pandas par défaut sans index format “datetime”
Lorsque les données sont téléchargées pour la première fois, son index est de type int64.

2. Conversion de l’index de type int64 en format datetime naïf
L’index de dataframe peut être converti en type datetime en utilisant pd.to_datetime() et en spécifiant le format %Y%m%d%H pour l’année, le mois, le jour et les heures, respectivement.

3. Localisation de l’objet datetime naïf en un objet datetime conscient du fuseau horaire
L’objet datetime de Python peut être utilisé pour accéder, récupérer et manipuler les informations de date et d’heure. Par défaut, la fonction datetime.now() renvoie la date et l’heure locales actuelles ; cependant, elle n’a pas d’informations sur les fuseaux horaires et les horaires d’été.

Pour rendre l’objet datetime conscient du fuseau horaire, la méthode timezone.localize() du package pytz peut être utilisée. Ensuite, l’heure et la date sont celles de Bonn, en Allemagne.

4. Localisation du fuseau horaire du dataframe pandas
Le fuseau horaire de l’index initial du dataframe pandas est localisé en temps universel coordonné (UTC) à l’aide de la méthode df.tz_localize(tz = “UTC”).

5. Liste de toutes les adresses possibles de fuseau horaire
La liste de toutes les adresses possibles de fuseau horaire peut être obtenue à l’aide du module all_timezones du package pytz. Il y en a 594.

Conclusion

La compréhension des fusions horaires est importante lors de l’analyse de données qui sont collectées dans différentes villes ou pays. Ce texte montre comment les données peuvent être gérées pour les objets datetime et des dataframes pandas dans Python.

What do you think?

Written by Barbara

Leave a Reply

Your email address will not be published. Required fields are marked *

Par ailleurs

Les scientifiques affirment qu’un El Niño en formation rapide va accélérer le réchauffement climatique mondial.