Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Certificat Big Data – Apprentissage TP1 – Introduction à Python Olivier Schwander 30 septembre 2015 1 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Outline Environnement de travail Commentaires Installation Éditeur Base du langages Expressions Structures de contrôle Définition de fonction Manipulation des données Création de matrices Opérations Chargement et sauvegarde Calcul scientifique Algèbre linéaire Variables aléatoires Visualisation 2 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Commentaires Installation Éditeur Remarques importantes Ce n’est pas un cours de Python ! I Connaissances tranposables dans d’autres langages I Matlab, R voire même C ou C++ Ce n’est pas un cours de programmation ou d’algorithmique I On supposera (volontairement ou non) quelques connaissances de bases, I mais ne surtout pas hésiter à poser des questions ! 3 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Commentaires Installation Éditeur Pourquoi Python Un langage généraliste I Gros projet ou petit projet I Calcul scientifique ou non I Interface graphique ou non I Client ou serveur I Prototype ou projet final Pour le traitement de données I Calcul scientifique : numpy, scipy I Apprentissage : sklearn I Visualisation : matplotlib Très grande communauté I Académique ou entreprise I Beaucoup de code existant I Beaucoup de gens à qui poser des questions I Beaucoup de gens intéressés 4 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Commentaires Installation Éditeur Si vous avez des habitudes Gardez-les ! I Système d’exploitation : Windows, Linux, Mac I Installation de Python I Éditeur de texte 5 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Commentaires Installation Éditeur Distribution Python Python Anaconda I À télécharger sur https://www.continuum.io/anaconda I Clé usb pour essayer maintenant I Python 3 I Tout le nécessaire devrait être inclu Installation I Voir https://www.continuum.io/downloads I Windows : click-click I Mac/Linux : bash Anaconda3-2.3.0-XXX.sh 6 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Commentaires Installation Éditeur Éditeur de texte : Spyder 7 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Commentaires Installation Éditeur Descriptions Interface en style Matlab 3 sous-fenêtres I Code source à gauche I Interpréteur Python en bas à droite I Autres informations en haut à droite I Des boutons partout Un raccourci utile I Ctrl+i pour obtenir de l’aide sur le code autour du curseur 8 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Expressions Structures de contrôle Définition de fonction Expressions arithmétiques À tester dans l’interpréteur : >>> 263 >>> 256 >>> 1.5 >>> 1 >>> 1.5 (126 + 5) * 2 + 1 2**8 3/2 3//2 3.0/2.0 Attention au type des valeurs : int, float 9 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Expressions Structures de contrôle Définition de fonction Variables À tester dans l’interpréteur : >>> a = 3; a 3 >>> b = "blablabla"; b ’blablabla’ >>> a = a + 1; a 4 >>> a += 1; a 5 >>> a = "hop"; a ’hop’ 10 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Expressions Structures de contrôle Définition de fonction Bibliothèques À tester dans l’interpréteur : >>> import math >>> math.sqrt(3) 1.7320508075688772 >>> math.sqrt(4) 2.0 >>> int(2.0) 2 >>> float(2) 2.0 11 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Expressions Structures de contrôle Définition de fonction Affichage À tester dans l’interpréteur : >>> print(3) 3 >>> print("bof") bof >>> a = 1111 >>> print(a) 1111 La fonction print tente de faire un affichage raisonnable sur n’importe quel type d’objet. 12 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Expressions Structures de contrôle Définition de fonction Listes À tester dans l’interpréteur : >>> >>> >>> >>> [3, >>> [3, >>> >>> [3, l = [] l.append(3) l.append("toto") print(l) ’toto’] l ’toto’] m = [1, 2, 3, 4] l + m ’toto’, 1, 2, 3, 4] 13 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Expressions Structures de contrôle Définition de fonction Tests : structure if Version plus générale Version simple if condition: ... if condition: ... elif autre_condition: ... else: ... Condition I Une expression booléenne I x<12 and y<z or a+b<espilon 14 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Expressions Structures de contrôle Définition de fonction Boucles Structure while Structure for while condition: ... for i in range(n): ... Remarques I La boucle for est très générique en Python I Notion de générateur I range(n) : les entiers entre 0 et n − 1 inclus I range(n1, n2) : les entiers entre n1 et n2 inclus I [a, b, c, d] : les éléments de la liste 15 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Expressions Structures de contrôle Définition de fonction Définition d’une fonction def nom(arg1, arg2, arg3): """ Documentation optionnelle """ ... return resultat I Des arguments nommés avec des valeurs par défaut sont possibles I Des fonctions avec un nombre variable d’argument aussi 16 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Expressions Structures de contrôle Définition de fonction Exemple de fonction Version basique import math def aire_disque(r): pi = math.pi r2 = r**2 return pi * r2 Mieux def aire_disque(r): """ Calcule l’aire d’un disque de rayon r """ pi = math.pi r2 = r**2 return pi * r2 Conseil I Toujours découper le code en fonctions élémentaires I Plus facile à lire, à réutiliser, à débugger 17 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Création de matrices Opérations Chargement et sauvegarde Matrices (et tenseurs, en fait) Bibliothèque de base I numpy I Contient les structures de données et les opérations de base I Prérequis dans le code : import numpy as np Création >>> m = np.array([[1, 2], [3, 4]]); m array([[1, 2], [3, 4]]) 18 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Création de matrices Opérations Chargement et sauvegarde Matrices et vecteurs particuliers Matrices I Matrice diagonale : np.diag(liste_des_valeurs) I Matrice identité : np.eye(dim1, dim2) I Matrice avec des 1 partout : np.ones((dim1, dim2)) Vecteurs I Valeurs entre x1 et x2 (exclu) par pas de step : np.arange(x1, x2, step) I n valeurs entre x1 et x2 (inclus) : np.linspace(x1, x2, n) Aléatoire I Uniforme entre 0 et 1 : np.random.rand(dim1, dim2) I Gaussienne centrée réduite : np.random.randn(dim1, dim2) 19 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Création de matrices Opérations Chargement et sauvegarde Opérations arithmétiques Addition et soustraction terme à terme I m1 + m2, m1 - m2 Multiplication I Terme à terme : m1 * m2 I Produit matriciel : np.dot(m1, m2) Exponentiation I Terme à terme : m**p I Matricielle : np.linalg.matrix_power(m, p) Transposition I Sur une matrice : M.T 20 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Création de matrices Opérations Chargement et sauvegarde Récupérations de valeurs Valeur simple I m[i,j] Extraction d’une partie I Colonne : m[i, :] I Ligne : m[:,j] I Sous-matrice : m[i1:i2, j1:j2] I Jusqu’à la fin, à partir du début : utiliser i_min: ou :i_max 21 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Création de matrices Opérations Chargement et sauvegarde Chargement de données Au format texte I Chargement : np.loadtxt(filename) I Sauvegarde : np.savetxt(filename, mat) Au format numpy I Chargement : np.load(filename) I Sauvegarde : np.save(filename, mat) Autres sources I Matlab : scipy.io.loadmat I Autres formats : XML, JSON I Pas forcément dans des fichiers : site web 22 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Algèbre linéaire Variables aléatoires Algèbre linéaire Inversion de matrice I Inverse : np.linalg.inv(M) I Ne jamais calculer directement A−1 b : np.dot(np.linalg.inv(b), B) I Résoudre plutôt le système linéaire AX = b : np.linalg.solve(A, b) Autres opérations I Trace : np.trace I Déterminant : np.linalg.det 23 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Algèbre linéaire Variables aléatoires Algèbre linéaire Décompositions I Cholesky : np.linalg.cholesky I Et bien d’autres Autre I Plein de choses ! I Voir les documentations des modules numpy.linalg et scipy.linalg http://docs.scipy.org/doc/numpy/reference/routines. linalg.html http://docs.scipy.org/doc/scipy/reference/linalg.html 24 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Algèbre linéaire Variables aléatoires Distributions Énormément de lois classiques dans le module scipy.stats I Normale monovariée ou multivariée : norm, multivariate_normal I Bernoulli : bernoulli I etc Une interface commune I Densité : law.pdf(x) ou law.pdf(x, paramètres) I Répartition : law.cdf I Générateur aléatoire : law.rvs(size=(dim1, dim2)) http://docs.scipy.org/doc/scipy/reference/stats.html 25 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Présentation Dessins Matplotlib Visualisation 2D I Courbes I Histogrammes I Points I Images Galerie d’exemples I Idéal pour trouver comme faire la visualisation de ses rêves http://matplotlib.org/gallery.html 26 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Présentation Dessins Courbes import matplotlib.pyplot as plt x = np.linspace(-np.pi, np.pi, 1000) y_cos = np.cos(x) y_sin = np.sin(x) 1.0 0.5 plt.plot(x, y_cos) plt.plot(x, y_sin) plt.show() 0.0 0.5 1.0 4 3 2 1 0 1 2 3 4 27 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Présentation Dessins Histogrammes data = scipy.stats.norm.rvs(size=10000) plt.hist(data) plt.show() 3000 2500 2000 1500 1000 500 0 5 4 3 2 1 0 1 2 3 4 28 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Présentation Dessins Images mat = np.random.randn(100, 100) plt.imshow(mat) plt.show() 0 20 40 60 80 0 20 40 60 80 29 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Aller plus loin Sauvegarde dans un fichier I savefig à la place de plot Limites du graphique I xlim(x1, x2) I ylim(y1, y2) Couleurs et marqueurs I plt.plot(x, y, "r-*") I Voir http://matplotlib.org/api/pyplot_api.html# matplotlib.pyplot.plot 30 / 31 Environnement de travail Base du langages Manipulation des données Calcul scientifique Visualisation Remarques finales Chez vous I Prise en main de l’éditeur, des bibliothèques I Pratiquer sur quelques exemples I Chercher dans la documentation en ligne, et sur internet en général Mini-projet à la fin du cours I Charger des données I Traiter les données I Visualiser les résultats Site web http://www-connex.lip6.fr/~schwander/enseignement/ 2015-2016/m2bigdata_apprentissage/ 31 / 31