You are on page 1of 60

.

Une introduction au langage Python


pour lanalyse de donnes (gntiques)
Bertrand Servin
Mars 2014

Plan
Introduction
Le langage

1 Introduction

Excution dun programme python


Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

2 Le langage

Excution dun programme python


Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions
3 Liste doutils pour le calcul et lanalyse de donnes

Modules du projet Scipy


Intgration de code C et fortran
Bertrand Servin / Introduction python

Mars 2014

2.

Plan
Introduction
Le langage

1 Introduction

Excution dun programme python


Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

2 Le langage

Excution dun programme python


Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions
3 Liste doutils pour le calcul et lanalyse de donnes

Modules du projet Scipy


Intgration de code C et fortran
Bertrand Servin / Introduction python

Mars 2014

3.

Caractristiques du langage python


Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

Langage de haut niveau ( loin du hardware )


Gnraliste : nombreux domaines dapplication (calcul numrique ,
administration systme, dveloppement web, jeux ...)
multi paradigme : procdural, orient objet, fonctionnel
Gestion mmoire automatique (garbage collection)
Trs grande bibliothque standard
Syntaxe oriente sur la lisibilit du code
Plusieurs contextes dutilisation: Interface interactive (shell) > scripts >
programmes > bibliothques (modules)

Bertrand Servin / Introduction python

Mars 2014

4.

Historique
Introduction
Le langage
Excution dun programme python
Types de donnes

Premires versions du langage datent du dbut des annes 90. Version 1.0 :
1994.

Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

Python 2.0 : 2000


Aujourdhui deux versions co-existent:
python 2.7 : Dernire version de la srie des 2.x, la plus utilise (ici aussi)
python 3.0 : version destine corriger certaines erreurs de design qui
ncessitent de casser la compatibilit.
Certaines bibliothques (modules) dont nous parlerons sont compatibles 2.7 pas
3.x
Il existe un outil de conversion automatique 2to3 qui semble assez ecace (non
test).

Bertrand Servin / Introduction python

Mars 2014

5.

Mon historique personelle avec python


Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

Avant: dveloppement C et R exclusivement


Volont dapprendre un langage de haut niveau pour:
Manipuler / formater des chiers rapidement
Dvelopper rapidement. Tester des ides.

Apprentissage trs rapide, coder est agrable


Excution susamment rapide
Rutilisation du code simple
Aujourdhui: remplace 99.9% du C et 80% du R (subsiste
pour plot + packages spciques)

Bertrand Servin / Introduction python

Mars 2014

6.

Philosophie
Introduction
Le langage
Excution dun programme python
Types de donnes

Les principes

Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

There should be one and preferably only one obvious way to do it


Beautiful is better than ugly
Explicit is better than implicit
Simple is better than complex
Complex is better than complicated
Readability counts

Bertrand Servin / Introduction python

Mars 2014

7.

Plan
Introduction
Le langage

1 Introduction

Excution dun programme python


Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

2 Le langage

Excution dun programme python


Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions
3 Liste doutils pour le calcul et lanalyse de donnes

Modules du projet Scipy


Intgration de code C et fortran
Bertrand Servin / Introduction python

Mars 2014

8.

Plan
Introduction
Le langage

1 Introduction

Excution dun programme python


Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

2 Le langage

Excution dun programme python


Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions
3 Liste doutils pour le calcul et lanalyse de donnes

Modules du projet Scipy


Intgration de code C et fortran
Bertrand Servin / Introduction python

Mars 2014

9.

Lancer un programme python


Introduction

Principe

Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes

Ecrire une suite dinstruction dans un chier texte programme.py.


print 'Hello World '

Excuter python programme.py

Modules du projet Scipy


Intgration de code C et fortran

Droulement
Linterprteur python compile programme.py en un bytecode (indpendant
du systme)
Le bytecode est excut par une Machine Virtuelle.
Bertrand Servin / Introduction python

Mars 2014

10.

Quelques remarques sur ce


fonctionnement
Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

Pas dtape de compilation explicite : lenvironnement dexcution et de


dveloppement sont les mmes.
Le bytecode nest pas du langage machine: peut tre plus lent que du code
compil
Mais le code nest pas toujours rinterprt non plus. Pour des modules (cf
plus loin), python utilisera le byte-code directement sans passer par ltape
de compilation.
Typiquement plus rapide quun langage interprt

Bertrand Servin / Introduction python

Mars 2014

11.

Plan
Introduction
Le langage

1 Introduction

Excution dun programme python


Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

2 Le langage

Excution dun programme python


Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions
3 Liste doutils pour le calcul et lanalyse de donnes

Modules du projet Scipy


Intgration de code C et fortran
Bertrand Servin / Introduction python

Mars 2014

12.

Les nombres
Introduction

Types

Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy

Entiers (dimension arbitraire): 3486, -12, 999999999999L


Rels (prcision dpend de larchitecture) : 3.2, 2.5e-10, 4e6
Complexes : 3+4j, 5J
Octets, Hexadcimaux : 0177, 0xFF

Intgration de code C et fortran

Oprateurs : +, *, >>, **, /, % ...


Fonctions : pow, abs, round, ...
Modules : math (log, cos, gamma, pi ...) , random (randint,
gauss, sample, shuffle ...)
Bertrand Servin / Introduction python

Mars 2014

13.

Chanes de caractres (Strings)


Introduction

criture

Le langage
Excution dun programme python
Types de donnes

Simple guillemets: 'Carmen'

Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

Double guillemets: "L'amour est l'enfant de bohme"


chappement:'L\' amour est l\'enfant de bohme\n'
Triple guillemens:'''...opra tragique en quatre actes de Georges
Bizet...''',"""...un des rles les plus exigeants du
rpertoire..."""
Les formes simple et double guillemets sont les plus utilises.
La forme triple permet dcrire du texte sur plusieurs lignes (inclusion de
scripts, documentation ...).
Bertrand Servin / Introduction python

Mars 2014

14.

Chanes de caractres (Strings)


Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base

Actions

Dnir ses propres fonctions


Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

Taille : len('Carmen')
Concatnation : "L'amour " + "est l'enfant de bohme"
Rptition : "Il n'a " + 'jamais '*2 + 'connu de loi'
Exemples de surcharge doprateurs

Bertrand Servin / Introduction python

Mars 2014

15.

Chanes de caractres (Strings)


Introduction

Actions

Le langage
Excution dun programme python
Types de donnes

Les strings sont des squences

Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy

>>> titre ='Carmen '


>>> for c in titre : print c,
...
C a r m e n

Intgration de code C et fortran

Autre utilisation de loprateur in, recherche:


>>> 'b' in titre
False
>>> 'a' in titre
True
Bertrand Servin / Introduction python

Mars 2014

16.

Chanes de caractres (Strings)


Introduction

Indexation, sous-chanes

Le langage
Excution dun programme python
Types de donnes

En tant que squence, on peut accder aux lments par index

Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

Les index sont utiliss la C de 0 (n-1)


Il est possible dindxer en partant de la n avec des indices ngatifs:
>>> titre [0]
'C'
>>> titre [ -1]
'n'

On peut accder une sous-chaine par tranchage (slicing):


>>> titre [1:5] ## ou titre [1: -1]
'arme '
Bertrand Servin / Introduction python

Mars 2014

17.

Chanes de caractres (Strings)


Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes

Les chanes ne sont pas modiables (immutable):


>>> titre [0]= 'B'
Traceback (most recent call last ):
File "<stdin >", line 1, in <module >
TypeError : 'str ' object does not support item assignment

Modules du projet Scipy


Intgration de code C et fortran

Pour modier, il faut crer :


>>> titre ='B'+titre [1:]
>>> titre
'Barmen '

Bertrand Servin / Introduction python

Mars 2014

18.

Chanes de caractres (Strings)


Introduction

Formatage

Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

Utilisation du caractre % pour formater des chanes de caractres. Similaire


la fonction C sprintf
>>> auteur ='Georges Bizet '
>>> annee =1875
>>> '%s, %s (%d)' % (titre ,auteur , annee)
'Carmen , Georges Bizet (1875) '

Ou utiliser la mthode format (compat. python3):


>>> '{0}, {1} ({2}) '. format (titre ,auteur , annee )
'Carmen , Georges Bizet (1875) '

qui permet de nombreuses subtilits.


Bertrand Servin / Introduction python

Mars 2014

19.

Chanes de caractres (Strings)


Introduction

Mthodes

Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

Comptage : '0001100110'.count('0') 6
Recherche : oprateur in mthodes find , index
>>> s='genes .csv '
>>> '.' in s , s.find('.'), s.index('.')
(True , 5, 5)
>>> ',' in s , s.find(',')
(False , -1)
>>> s.index (',')
Traceback (most recent call last ):
File "<stdin >", line 1, in <module >
ValueError : substring not found
Bertrand Servin / Introduction python

Mars 2014

20.

Chanes de caractres (Strings)


Introduction
Le langage
Excution dun programme python
Types de donnes

Mthodes: parsing de texte


Deux mthodes principales : split et join

Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

>>> gene='14 ,14231363 ,14232541 , MC1R '


>>> gene. split (',') ## renvoie une "list"
['14 ', '14231363 ', '14232541 ', 'MC1R ']
>>> items=gene. split (',')
>>> '\t'.join( items ) ## conc. les lments avec la chane \t
'14\ t14231363 \ t14232541 \ tMC1R '
>>> print '\t'.join( items)
14 14231363 14232541 MC1R
>>> gene. replace (',','\t') ## plus simple :)
'14\ t14231363 \ t14232541 \ tMC1R '
Bertrand Servin / Introduction python

Mars 2014

21.

Listes
Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

Le type list est un des types les plus utiliss en python


Collection ordonne (de gauche droite) dlments
De taille quelconque, peut grandir, rtrcir, tre modie, tre encapsule
(liste de listes de listes)
Actions similaires celles vues sur les chanes

Bertrand Servin / Introduction python

Mars 2014

22.

Listes par lexemple


Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

>>> gene='14 ,14231363 ,14232541 , MC1R '


>>> L=gene. split (',')
>>> L[3]= 'ENSOARG00000002239 ' ### une liste est modifiable
>>> L
['14 ', '14231363 ', '14232541 ', 'ENSOARG00000002239 ']
>>> L. append ('MC1R ')
>>> L
['14 ', '14231363 ', '14232541 ', 'ENSOARG00000002239 ', 'MC1R ']
>>> L[1]= int(L[1]) ## conversion de string vers integer
>>> L[2]= int(L[2])
>>> L ## les lments sont de types diffrents
['14 ', 14231363 , 14232541 , 'ENSOARG00000002239 ', 'MC1R ']

Bertrand Servin / Introduction python

Mars 2014

23.

Listes par lexemple


Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

>>> L
['14 ', 14231363 , 14232541 , 'ENSOARG00000002239 ', 'MC1R ']
>>> del L[3] ## suppression
>>> L
['14 ', 14231363 , 14232541 , 'MC1R ']
>>> L2
['13 ', 63237431 , 63242627 , 'ASIP ']
>>> genes =[L,L2] ### liste de listes
>>> genes
[[ '14 ', 14231363 , 14232541 , 'MC1R '],
['13 ', 63237431 , 63242627 , 'ASIP ']]

Bertrand Servin / Introduction python

Mars 2014

24.

Listes par lexemple


Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

>>> new_gene
['6', 70189729 , 70234612 , 'KIT ']
>>> genes. append ( new_gene )
>>> genes
[[ '14 ', 14231363 , 14232541 , 'MC1R '],
['13 ', 63237431 , 63242627 , 'ASIP '],
['6', 70189729 , 70234612 , 'KIT ']]
>>> mygene = genes .pop () ## renvoie et supprime le dernier lmen
>>> mygene
['6', 70189729 , 70234612 , 'KIT ']
>>> genes
[[ '14 ', 14231363 , 14232541 , 'MC1R '],
['13 ', 63237431 , 63242627 , 'ASIP ']]
Bertrand Servin / Introduction python

Mars 2014

25.

Et aussi
Introduction
Le langage
Excution dun programme python

List Comprehension Un outil puissant permettant de gnrer de nouvelles


listes avec une syntaxe simple.

Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

###
>>>
>>>
...
###
>>>

Un code horriblement long


glen =[]
for g in genes :
glen. append (g[2]-g[1])
Un code beaucoup plus court et plus explicite :)
glen =[ g[2] -g[1] for g in genes ]

Tuples : Listes non modiables, pour stocker une collection dobjet en


garantissant son intgrit. Ils nont que deux mthodes : count et index. Ils
scrivent en gnral avec des parenthses :
('Carmen', 'Georges Bizet', 1875)
Bertrand Servin / Introduction python

Mars 2014

26.

Dictionnaires
Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions

Liste: collection dobjets ordonne, accs par indice : L[0]


Dictionnaire: collection dobjets non ordonne, accs par clef : R['D2']
Les clefs doivent tre de type immutable : nombres, strings, ...

Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

>>> genes ## rappel


[[ '14 ', 14231363 , 14232541 , 'MC1R '],
['13 ', 63237431 , 63242627 , 'ASIP '],
['6', 70189729 , 70234612 , 'KIT ']]
>>> glen ={} ## dictionnaire vide
>>> for g in genes :
...
glen[g[ -1]]=g[2]-g[1] ## clef = nom du gne
>>> glen
{'MC1R ': 1178 , 'KIT ': 44883 , 'ASIP ': 5196}
Bertrand Servin / Introduction python

Mars 2014

27.

Dictionnaires par lexemple


Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

>>> glen.keys ()
['MC1R ', 'KIT ', 'ASIP ']
>>> glen. values ()
[1178 , 44883 , 5196]
>>> glen. items () ## liste de tuples
[( 'MC1R ', 1178) , ('KIT ', 44883) , ('ASIP ', 5196)]
>>> len(glen)
3
>>> for g in glen.keys ():
...
print g,'\t',glen[g]
MC1R 1178
KIT 44883
ASIP 5196
Bertrand Servin / Introduction python

Mars 2014

28.

Dictionnaires par lexemple


Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

>>> glen. items () ## rappel


[( 'MC1R ', 1178) , ('KIT ', 44883) , ('ASIP ', 5196)]
## cration a partir d'une liste de tuples
>>> dict(glen. items ())
{'MC1R ': 1178 , 'ASIP ': 5196 , 'KIT ': 44883}
## Warning : a commence devenir moche :(
>>> dict ([ (g[-1],g[2]-g[1]) for g in genes ])
{'MC1R ': 1178 , 'KIT ': 44883 , 'ASIP ': 5196}

Bertrand Servin / Introduction python

Mars 2014

29.

Fichiers
Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

Le type dobjet file sert manipuler les chiers dans des programmes
python.
Ces objets sont crs avec la fonction open.
Ils fournissent des mthodes pour travailler sur les chiers
>>>
>>>
>>>
>>>
>>>

input=open('small_gene_list .csv ','r') ## r: read , par dfau


input=open('small_gene_list .csv ')
input. close ()
output =open('/tmp/ small_gene_list .tsv ','w') ## write
output =open('/tmp/ small_gene_list .tsv ','a') ## append

Bertrand Servin / Introduction python

Mars 2014

30.

Lecture de chiers
Introduction

>>> input=open('small_gene_list .csv ','r')

Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

Lecture de lensemble du chier:


input.read() Une seule chane
input.readlines() Une liste de lignes (chanes)
>>> input =open('small_gene_list .csv ')
>>> input .read ()
'14 ,14231363 ,14232541 , MC1R\n13 ,63237431 ,63242627 , ASIP\n6 ,7018
>>> input =open('small_gene_list .csv ')
>>> input . readlines ()
['14 ,14231363 ,14232541 , MC1R\n',
'13 ,63237431 ,63242627 , ASIP\n',
'6 ,70189729 ,70234612 , KIT\n']
Bertrand Servin / Introduction python

Mars 2014

31.

Lecture de chiers
Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base

Lecture dune partie du chier:


input.read(N) Lit N caractres
input.readline() lit une ligne

Dnir ses propres fonctions


Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

>>> input .read (10)


'14 ,1423136 '
>>> input . readline ()
'14 ,14231363 ,14232541 , MC1R\n'

Parcourir ligne par ligne:


>>> for ligne in input:
...
pass ## ici , on ne fait rien.

Bertrand Servin / Introduction python

Mars 2014

32.

criture de chiers
Introduction
Le langage

output =open('/tmp/toto ','w')

Excution dun programme python


Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy

Mthodes dun objet file:


output.write(S) : crit la chane S dans output
output.writelines(L) : crit la liste de chaines L dans output

Utilisation du mot clef print:

Intgration de code C et fortran

print >> output , S ## ajoute un \n final


print >> output , S, ## sans \n ajout

Note: Incompatible avec python3 qui introduit une fonction de base


print() en remplacement.

Bertrand Servin / Introduction python

Mars 2014

33.

Fichiers compresss , archives


gzip:

Introduction
Le langage
Excution dun programme python

import gzip
f = gzip.open('small_gene_list .csv.gz ')
file_content = f.read ()

Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy

bz2
import bz2
f = bz2. BZ2File ('small_gene_list .csv.bz2 ')
file_content = f.read ()

Intgration de code C et fortran

Dans une archive tar:


import tarfile
myarch = tarfile .open('monarchive .tar.bz2 ') ## bzip 'ed archiv
f = myarch . extractfile ('small_gene_list .csv ')
file_content = f.read ()
Bertrand Servin / Introduction python

Mars 2014

34.

Plan
Introduction
Le langage

1 Introduction

Excution dun programme python


Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

2 Le langage

Excution dun programme python


Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions
3 Liste doutils pour le calcul et lanalyse de donnes

Modules du projet Scipy


Intgration de code C et fortran
Bertrand Servin / Introduction python

Mars 2014

35.

help
Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

Python dispose dune aide en ligne consultable partir de linterprteur en


ligne de commande ( la R):
help() ouvre une session interactive pour consulter laide. Rubriques:
modules, keywords, topics
Pour les modules, fonctions, mthodes help(item):
>>>
>>>
>>>
>>>

import random
help( random ) ## importer le module pour consulter
help(abs)
help(''. format )

Bertrand Servin / Introduction python

Mars 2014

36.

Fonctions de conversion
Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

oat(x) Convertit la chaine ou le nombre x en rel.


>>> float ("1.32 e6")
1320000.0

## ou float (1320000)

int(x) Convertit la chaine ou le nombre x en entier. Arrondit lentier


infrieur si x est un rel
>>> int("42")
42
>>> int (2.8)
2

str(o) Renvoie une chaine de caractre repsentant lobjet o.


>>> str (10)
'10 '
Bertrand Servin / Introduction python

Mars 2014

37.

range, xrange
Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions

range permet de crer des listes dentiers successifs.


La fonction xrange cre un gnrateur: elle ne construit pas la liste mais
renvoie les lments successivement.

Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

>>> range (5)


[0, 1, 2, 3, 4]
>>> range (1 ,5)
[1, 2, 3, 4]
>>> range (0 ,6 ,2)
[0, 2, 4]
>>> xrange (0 ,6 ,2)
xrange (0, 6, 2)
Bertrand Servin / Introduction python

Mars 2014

38.

range, xrange
Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

>>> L= range (100000000000) ## trop gros passera pas


Traceback (most recent call last ):
File "<stdin >", line 1, in <module >
MemoryError
>>> L= xrange (100000000000)
>>> for x in L:
if x < 10:
print x,
else:
break
0 1 2 3 4 5 6 7 8 9

Bertrand Servin / Introduction python

Mars 2014

39.

sorted
Introduction
Le langage
Excution dun programme python

Fonction gnrique de tri de liste (diterables)

Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy

>>> sorted (glen.keys ()) ## ['ASIP ', 'KIT ', 'MC1R ']
>>> sorted (glen. values ()) ## [1178 , 5196 , 44883]
>>> sorted (glen. values (), reverse =True) ## [44883 , 5196 , 1178]

Arguments optionnels:

Intgration de code C et fortran

cmp Spcie une fonction de comparaison entre deux lments.


key Spcie une fonction calculant une clef associe un lment
sur laquel le tri seectue.

Bertrand Servin / Introduction python

Mars 2014

40.

Plan
Introduction
Le langage

1 Introduction

Excution dun programme python


Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

2 Le langage

Excution dun programme python


Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions
3 Liste doutils pour le calcul et lanalyse de donnes

Modules du projet Scipy


Intgration de code C et fortran
Bertrand Servin / Introduction python

Mars 2014

41.

Syntaxe de base
Introduction
Le langage
Excution dun programme python
Types de donnes

Une fonction est dnie avec le mot clef def. Il est suivi du nom de la fonction
et dune liste entre () de ses arguments.

Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

>>> def droite (x): # Ecrit le rsultat de 2x+1


...
""" Ecrit le rsultat de 2x+1 """
...
print 2*x+1
>>> x= droite (2)
5
>>> x
>>> print x
None
>>> help( droite ) ## grace la docstring

Bertrand Servin / Introduction python

Mars 2014

42.

Syntaxe
Introduction
Le langage
Excution dun programme python

return

Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

Le mot clef return permet de renvoyer la valeur de la fonction. Sil est omis, ou
nest pas suivi dune expression, la fonction renvoie la valeur None.
>>> def droite (x): # Renvoie le rsultat de 2x+1
...
""" Renvoie le rsultat de 2x+1 """
...
return 2*x+1
>>> x= droite (2)
>>> x
5

Bertrand Servin / Introduction python

Mars 2014

43.

Arguments nomms et valeurs par


dfaut
Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

il est possible de dnir des valeurs par dfaut pour certains arguments dune
fonction. Ces arguments nomms doivent tre donns aprs les autres (dits
positionnels).
>>> def droite (x,a=2,b=1):
...
""" Renvoie le rsultat de a*x+b"""
...
return a*x+b
>>> droite (2) ## 5
>>> droite (2,a=1) ## 3
>>> droite (2,b=2,a=3) ## 8 ordre b,a n'import pas
>>> droite (b=2,a=3,x=2) ## ici non plus car nomms
>>> droite (b=2,a=3 ,2) ## aie
File "<stdin >", line 1
SyntaxError : non - keyword arg after keyword arg
Bertrand Servin / Introduction python

Mars 2014

44.

Expressions Lambda
Introduction
Le langage
Excution dun programme python
Types de donnes

De petites fonctions anonymes peuvent tre cres en utilisant le mot clef


lambda. Elles ne doivent tre constitues que dune seule expression.

Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

Exemple: Tri des items dun dictionnaire


>>> glen. items ()
[( 'ASIP ', 5196) , ('MC1R ', 1178) , ('KIT ', 44883)]
>>> sorted (glen. items (), key= lambda i: i[0])
[( 'ASIP ', 5196) , ('KIT ', 44883) , ('MC1R ', 1178)]
>>> sorted (glen. items (), key= lambda i: i[1])
[( 'MC1R ', 1178) , ('ASIP ', 5196) , ('KIT ', 44883)]

Bertrand Servin / Introduction python

Mars 2014

45.

Plan
Introduction
Le langage

1 Introduction

Excution dun programme python


Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

2 Le langage

Excution dun programme python


Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions
3 Liste doutils pour le calcul et lanalyse de donnes

Modules du projet Scipy


Intgration de code C et fortran
Bertrand Servin / Introduction python

Mars 2014

46.

Interface interactive
Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

$ python
Python 2.7.6 (default , Mar
....
>>> print " Hello World "
Hello World
>>>

Bertrand Servin / Introduction python

8 2014 , 08:59:18)

Mars 2014

47.

Script
Introduction
Le langage
Excution dun programme python

script.py

Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

#!/ usr/bin/env python


print " Hello World "

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

Execution
python script .py
chmod +x script .py
./ script .py

Bertrand Servin / Introduction python

Mars 2014

48.

Programme
Introduction
Le langage

bonjour.py

Excution dun programme python


Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

def dis_bonjour ():


''' Dis Bonjour '''
print 'Hello World '
def main ():
''' Fonction principale '''
dis_bonjour ()
if __name__ == '__main__ ':
# vaut True si xcut avec: python bonjour .py
main ()
Bertrand Servin / Introduction python

Mars 2014

49.

Module
Introduction
Le langage
Excution dun programme python

Importer tout le module

Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

import bonjour
bonjour . dis_bonjour ()

Importer un sous ensemble de fonctions


from bonjour import dis_bonjour
dis_bonjour ()

Bertrand Servin / Introduction python

Mars 2014

50.

Pour continuer
Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base

Syntaxe
Autres types

Dnir ses propres fonctions


Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

Programmation Objet
Exceptions
Modules de la bibliothque standard
Pour continuer dcouvrir, apprendre les bases du langage:
http://docs.python.org/2/
et en particulier le tutorial:
http://docs.python.org/2/tutorial/index.html

Bertrand Servin / Introduction python

Mars 2014

51.

Plan
Introduction
Le langage

1 Introduction

Excution dun programme python


Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

2 Le langage

Excution dun programme python


Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions
3 Liste doutils pour le calcul et lanalyse de donnes

Modules du projet Scipy


Intgration de code C et fortran
Bertrand Servin / Introduction python

Mars 2014

52.

Plan
Introduction
Le langage

1 Introduction

Excution dun programme python


Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

2 Le langage

Excution dun programme python


Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions
3 Liste doutils pour le calcul et lanalyse de donnes

Modules du projet Scipy


Intgration de code C et fortran
Bertrand Servin / Introduction python

Mars 2014

53.

Numpy
Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

Numpy est un ensemble de modules (package) ddi au calcul numrique en


python
Bas sur un nouveau type dobjet : le tableau (array) multidimensionnel
homogne. Il est associ un type (entier, ottant, complexe ...).
Des modules numpy fournissent des fonctions pour le calcul numrique, en
particulier:
Algbre Linaire (numpy.linalg): calcul matriciel, dcompositions, rsolution
dquations
Echantillonage alatoire (numpy.random): Gnrateurs de nombres alatoires,
principales distributions, permutations, mlanges

Bertrand Servin / Introduction python

Mars 2014

54.

Autres lments du projet scipy


Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

Bibliotheque Scipy
Bas sur numpy
Etend le panel de fonction de numpy
scipy.linalg = extension de numpy.linalg
scipy.stats : accs lensemble des distributions
statistiques /tests ...
Shell ipython Une interface en ligne de commande amliore, qui inclut
demble les modules numpy et permet dexcuter des
commandes shell (ls, cd ...)
matplotlib Une bibliothque de reprsentation graphique 2D. Peut tre
utilise de manire interactive (dans ipython) ou au sein de
programmes python /numpy.
Bertrand Servin / Introduction python

Mars 2014

55.

Scikits
Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

Packages pour certaines analyses plus spcialises. En particulier, pour


lanalyse de donnes gntiques on peut mentionner les packages :
scikit-learn: Machine Learning. Stable.
classication (SVM, random forest ...)
clustering : k-means, hclust, melange gaussiens ...
regression : ridge, lasso, elastic net, Automatic Relevance Determination ...
Reduction de dimension : PCA, Analyse factorielle

scikit-statsmodel : en developpement, : Modles linaires et linaires


gnraliss, ANOVA, tests statistiques ...

Bertrand Servin / Introduction python

Mars 2014

56.

Plan
Introduction
Le langage

1 Introduction

Excution dun programme python


Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

2 Le langage

Excution dun programme python


Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions
3 Liste doutils pour le calcul et lanalyse de donnes

Modules du projet Scipy


Intgration de code C et fortran
Bertrand Servin / Introduction python

Mars 2014

57.

Ecrire des extensions en C


Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

Python fournit une interface permettant :


dcrire des extensions en C
dinclure linterprteur dans un programme C.
Les mains dans le camboui ...

Cython est un logiciel permettant de faciliter lcriture dextensions C.


Convertit automatiquement du code python en code C
Fournit une extension du langage python pour gnrer du code C plus ecace.
Compatible openMP pour la paralllisation ne du code.

pythran : Meme objectif que cython. Gnre du C++

Bertrand Servin / Introduction python

Mars 2014

58.

Ecrire des extensions en Fortran


Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

F2py est un ensemble doutils permettant de construire des interfaces entre


fortran et python. Fait partie du projet scipy, dpend de numpy.
Construire des modules cods en fortran utilisables en python
Appeller des fonctions python depuis un code fortran

Bertrand Servin / Introduction python

Mars 2014

59.

Conclusions
Introduction
Le langage
Excution dun programme python
Types de donnes
Fonctions de base
Dnir ses propres fonctions
Conclusions

Liste doutils pour le


calcul et lanalyse de
donnes
Modules du projet Scipy
Intgration de code C et fortran

Python est un langage complet, facile apprendre


Apprentissage progressif:
Interface interactive pour tester /apprendre
Langage de script pour la manipulation de chiers
Langage objet pour lcriture de programmes complets / de bibliothques
Extension / Optimisation pour le calcul intensif
Packages danalyse numrique / statistique

Potentiel certain remplacer R ...


Bon candidat pour lapprentissage dun nouveau langage :)

Bertrand Servin / Introduction python

Mars 2014

60.

You might also like