énoncé

publicité
Journée Python IPSL - 8 avril 2010
TP Python - 1er Chapitre
Introduction à Python : manipulation interactive
L'objectif de ce TP est en premier lieu de prendre contact avec Python en douceur, en
vous familiarisant à la manipulation interactive de données. Nous vous proposons
notamment :
• de lire des séries de données contenues dans un fichier ASCII;
• d'en extraire des informations statistiques (moyenne, écart-type, etc.);
• de créer des vecteurs de dates;
• d'effectuer des régressions simples;
• d'obtenir une représentation visuelle des données (séries temporelles,
histogrammes) avec Matplotlib.
1. Environnement
• Naviguez dans le répertoire TP_Chap1 de votre répertoire racine. Vous y trouverez un
fichier nommé ALS_LNA_RAD_TSI_2002_2009_eps5_complet.asc. Ce fichier ASCII
contient des données organisées en 19 colonnes, chaque ligne décrivant une heure
d'observation. Ce jeu de données décrit certaines propriétés de la couverture nuageuse
au-dessus du SIRTA (le site instrumenté de Palaiseau) depuis 2002, et provient
d'observations combinées de plusieurs instruments (radiomètre, lidar).
• Vous pouvez afficher ce fichier avec la commande more pour en étudier le contenu.
Vérifiez que les 5 premières colonnes décrivent la date et l'heure de la mesure (au
format AAAA MM JJ hh minutes). Au cours de ce TP nous utiliserons ces données et
également l'altitude de la base de nuages bas (colonne 10), moyen (11) et haut (12) en
km.
• Lancez ipython -pylab si ce n'est pas déjà fait.
2. Chargement et extraction des données
• Chargez les données contenues dans le fichier dans une variable data dans
l'environnement ipython en utilisant la commande loadtxt de numpy. Si vous rencontrez
un problème lié au format du fichier, la solution réside sans doute dans l'utilisation d'un
argument particulier de loadtxt, la liste des arguments possibles peut être obtenue par
help loadtxt.
• Vérifiez avec la commande whos que les 19 colonnes de données ont bien été chargées
dans data, notez la longueur de chaque colonne.
• Utilisez le "slicing" sur data pour extraire :
• les 5 premières colonnes (index 0, 1, 2, 3, 4) dans les variables aa, mm, jj, hh, minutes
(éviter "min")
• les colonnes 10, 11, 12 (index 9, 10, 11) dans les variables cblow, cbmid, cbhigh.
• Vérifiez avec whos que les dimensions des variables sont cohérentes.
3. Création de vecteurs de dates
1
Nous allons ici transformer les valeurs numériques année/mois/jour, heures/minutes en
variables de type date.
• Importez la fonction datetime du module datetime :
• from datetime import datetime
• Utilisez les commandes suivantes pour créer la variable "dates":
• dates = [datetime(*row[:5]) for row in data]
• dates = np.array(dates)
Note : la compréhension de ces commandes n'est pas obligatoire aujourd'hui, mais
constitue un bon exercice si/lorsque vous êtes bien à l'aise avec python.
4. Affichage des données
• Affichez la série temporelle cblow en fonction du temps en utilisant la commande scatter
(voir help scatter) et la variable dates. Notez que matplotlib affiche automatiquement les
dates de façon optimale.
• Vérifiez que les données invalides, identifiées par la valeur -999.96, perturbent
l'affichage. Trouvez un moyen d'afficher uniquement les données valides de la série
temporelle.
• Rappel : x[x > 0] sélectionne uniquement les valeurs positives de x.
• Limitez l'axe horizontal entre le 1er janvier 2005 et le 31 mars 2005. Remarquez que
matplotlib adapte l'affichage des dates.
• Indice 1 : help xlim
• Indice 2 : xlim peut prendre des dates en argument
• Indice 3 : date2 = datetime(2005,12,31)
• Répétez l'opération pour afficher simultanément les données valides de la série
temporelle cbmid, puis cbhigh.
• Affichez la distribution des 3 séries temporelles avec la commande hist (voir help hist).
5. Statistiques
• Obtenez la moyenne et la déviation standard de chaque série temporelles cblow, cbmid,
cbhigh en utilisant les fonctions numpy mean, std (attention à ne pas prendre en compte
les données invalides).
• Ajoutez ces informations sur une figure avec la commande legend. Note : il est possible
d'ajouter du code latex dans n'importe quelle commande d'affichage texte de matplotlib
en encadrant le code latex par $...$. Documentez les axes grâce aux commandes xlabel,
ylabel, title, etc.
6. Script
• Reprendre les commandes testées de façon interactive dans IPython et le recopier dans
un script exécutable.
• Vérifier qu'on obtient les mêmes figures en lançant le script.
2
Téléchargement