Académique Documents
Professionnel Documents
Culture Documents
Cours Prog Sci
Cours Prog Sci
2022-2023/ jacques.beilin@ensg.eu
2 L'environnement python 2
3 Numpy 3
3.1 Construction des vecteurs et des matrices . . . . . . . . . . . . . . . . . . . . 3
3.2 Accès aux éléments et extractions des matrices . . . . . . . . . . . . . . . . . . 5
3.3 Opérations sur les matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4 pandas 6
4.1 Structure des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.2 Import des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.3 Création d'un dataframe vide et remplissage . . . . . . . . . . . . . . . . . . . 7
4.4 Informations générales sur le dataframe créé . . . . . . . . . . . . . . . . . . . 7
4.5 Accès aux données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.6 Itérer dans un dataframe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.7 Sélections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.8 Statistiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.9 Expressions régulières dans un dataframe . . . . . . . . . . . . . . . . . . . . . 9
4.10 Écriture des résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5 Structures de contrôle 10
7 Chaînes de caractères 12
1
8 Graphiques 13
9 Lecture de chiers 14
10 Le temps 14
1 Avant-propos
Python-numpy permet d'accéder, au prix d'une complexité informatique légèrement plus grande
aux fonctionnalités de calcul numérique présentes dans des outils comme Gnu-Octave ou Matlab.
Cependant, il permet plus facilement de déboucher sur des outils de qualité professionnelle, au
delà du prototypage, domaine d'élection de Matlab.
La documentation de l'ensemble des fonctions de numpy est disponible à l'adresse http://
docs.scipy.org/doc/numpy/reference/.
2 L'environnement python
1. Interface : invite de commande sous spyder
2. Dénition d'une variable et premières opérations
1 a = 3
b = 2
3 a* b
a* *4
7. Fichiers scripts : chier d'extension .py. Exécution par appel dans le shell depuis le
répertoire contenant le chier python3 toto.py ou commande d'exécution de l'IDE
1 [ toto . py ]
import math
3 a= math . pi /4
2
math . sin (a)
changer de répertoire
import os
2 os . chdir ( '/ home / documents ')
lister répertoire
import os
2 os . listdir ( '/ home / documents ')
9. conventions d'écriture
module_name , package_name , ClassName , method_name ,
ExceptionName , function_name , GLOBAL_CONSTANT_NAME ,
global_var_name , instance_var_name ,
function_parameter_name , local_var_name
3 Numpy
3.1 Construction des vecteurs et des matrices
np . squeeze (M )
7
V = np . linspace (1 ,5 ,3)
9
M1 = V [: , None ]
11 M1 = V [: , np . newaxis ]
# [[ 1.]
13 # [ 3.]
# [ 5.]]
15 M2 = V[ np . newaxis ,:] # [[ 1. 3. 5.]]
3. transposée : np.transpose() ou .T
4. réplication : np.repeat()
5. concaténation : np.concatenate(), np.hstack(), np.vstack()
6. Dénition par valeurs espacées : np.range(), np.arange(), np.linspace()
a= np . arange (5) # [0 1 2 3 4]
2 a= np . arange (1 ,5) # [1 2 3 4]
a= np . arange (1 ,5 ,0.5) # [ 1. 1.5 2. 2.5 3. 3.5 4.
4.5]
4
4
a= np . random . randn (1 ,5)
4 if np . all (V >0.001) :
blabla ...
# * => and
8 # + => or
B = 2.0 * (( A >=0.0) * (A <0.25) + (A >0.75) * (A <=1) )
10 # B = [[ 2. 2. 0. 2. 2.]
# [ 0. 0. 2. 2. 0.]
12 # [ 2. 2. 0. 2. 0.]
# [ 0. 0. 0. 0. 2.]
5
14 # [ 2. 2. 2. 2. 2.]]
4 pandas
La bibliothèque pandas est spécialisée dans l'analyse de données. Elle est complémentaire de
numpy. Pour les usages de la géomatique, les deux biliothèques -numpy et pandas- sont très
complémentaires.
Pandas permet de gérer/stocker/analyser la donnée et on va débrancher sur numpy dès lors
que des traitements numériques son eectués.
6
4.1 Structure des données
La structure de base sous pandas est le dataframe. Le dataframe peut être vu comme un
tableau accessible par des indices ou des noms de lignes/colonnes.
4.2 Import des données
Si les noms des colonnes ne sont pas présents sur la première ligne, on peut les dénir :
# !/ usr / bin / python
2 # -* - coding : iso -8859 -15 -* -
import pandas as pd
4 data = pd . read_csv ( os . path . join ( path , ' data . txt ') , delimiter = '
; ', names = [ " name " , " lat " , " lon " , " alti " , " num " ])
import pandas as pd
2 import numpy as np
5. Dimensions du tableau
1 print ( data . shape )
8
2. Itérer sur les lignes (sur les index)
for i in data . index :
2 phiA = data . loc [i , ' latitude ']
lonA = data . loc [i , ' longitude ']
4.7 Sélections
3 df = data . loc [( data [ ' type1 ' ]== "A ") & ( df [ ' type2 '] == " Z")
,:]
3 df3 = dfCore [( dfCore [ ' longitude '] < 45) & ( dfCore [ '
longitude '] > -45) & ( dfCore [ ' latitude '] > -45) & (
dfCore [ ' latitude '] < 45) ]
4.8 Statistiques
3. Tri
1 df2 = data [" x" ]. sort_values ()
1. match
1 df2 = df [ df . name . str . match ( '^A. * ') ]
9
2. replace
1 df . name . replace ( ' MARSEILLE ' ,' LYON ', regex = True , inplace =
True )
3. split
1 df . name . split (r "s" , n = -1 , expand = False )
5 Structures de contrôle
1. Dénition des fonctions (format .py, ), sous-fonctions
1 # !/ usr / bin / python
# -* - coding : iso -8859 -15 -* -
3 import numpy as np
def ma_somme (x) :
5 x1 = np . squeeze ( x)
s = x1 . vdot ( x1 )
7 return s
9 print ( ma_somme (A ))
2. Structures itératives :
1 for i in range (10) :
blabla ...
3
for v in MyVector :
5 blabla ...
elif a >1:
4
else :
6. Exceptions
try :
2 print (5/0)
except Exception as e:
4 print (e , type ( e)) # division by zero < class '
ZeroDivisionError '>
2. Ajout d'une méthode d'impression du contenu de la classe (pour débugger par exemple)
class point () :
2 """ point en cooldonnee X , Y """
def __init__ ( self , name ,X ,Y) :
4 self . name = name . strip ()
self . X=X
6 self . Y=Y
11
10 for s in self . __dict__ :
print ( '% -35 s : ' % (s) , self . __dict__ . get (s) )
7 Chaînes de caractères
1. Dénition : ' ' ou " "
2. Concaténation (+), modication (forcément par création d'une nouvelle chaîne), com-
paraison ('==')
s= ' foo '+ ' bar '
2 print (s ) # foobar
5. Écriture formatée : %
s = '%s %6.4 f ' % ( 'x= ', pi ) # s = 'x= 3.1416 '
2 print (s ) # x= 3.1416
12
7. Découpe de chaînes : re.split
1 import re
r = re . compile ( '[ \t \n\ r :]+ ')
3 mylist = r. split (" abc : def ghi ") # [' abc ', ' def ', ' ghi ']
for s in mylist :
5 print ( s) # ' abc ' puis ' def ' puis ' ghi '
8 Graphiques
1. package : import matplotlib.pyplot as plt
2. nouvelle gure : figure
3. tracé d'une fonction 2D
tracé 2D avec axes classiques : plt.plot
1 import matplotlib . pyplot as plt
import numpy as np
3 x = np . linspace (0 ,2 * np .pi ,20)
y= np . sin (x)
5 plt . plot (x ,y , 'o - ')
13
plt . show ()
9 Lecture de chiers
1. Interaction avec des chiers open readlines close
1 with open ( filename ) as F:
lines = F. readlines ()
ou mieux :
try :
2 with open ( filename , encoding = 'utf -8 ', errors = ' replace ')
as F:
lines = F. readlines ()
4 except :
print ( ' Unable to open %s ' % ( filename ) )
10 Le temps
1. Dates : package gpsdatetime
1 import gpsdatetime as gps
3 t0 = gps . gpsdatetime ()
t1 = gps . gpsdatetime ()
5 t0 . ymdhms_t (1944 ,1 ,4)
t0 . print_dates ()
7 age =( t1 - t0 ) /86400/365.2425
print ( age )
14