SlideShare une entreprise Scribd logo
1  sur  107
Happy CodersAcademy
Formation Python
1
PYTHON & Algorithme
1. Développement d’algorithme ‘Greedy approach’
2. Développement d’algorithme ‘Divide-and-Conquer’
3. La programmation dynamique 'Dynamic Programming'
4. Backtracking
5. Modules classiques sur Python et modules personnalisés
6. Les interfaces graphique Sur Python
7. Base de données et Python ‘MySQL’
8. Traitement et visualisation de données
9. Projets
2
Python & traitement de données - 2ème session
J1 J2 J3 J4 J5
Formation Code/Pédagogie
* Développement d'algorithme
glouton 'Greedy Approach'
* Développement d'algorithme
'Divide-and-Conquer'
* Résolution d'un problème
d'opimisation par la méthode
algorithmique Programmation
dynamique 'Dynamic Programming'.
* Développement de la technique
algorithmique Le retour sur trace
'Backtracking'.
From unit 30 to unit 33
Formation Créativité
* Exercices et Challenge avancés
(Situations réelles)
Formation Code
* Découverte et manipulation des
différents Modules et librairies sur
Python :
1. Module Standards (Math, time,
Random et Turtle, numpy...)
2. Module pesonnalisés.
Unit 34
* Découverte Interface graphique (IHM)
sur Python (Tkinter)
* Manipulation et opérations sur les
matrices.
* Manipulation et administration des
base de données 'MySql'
Formation Créativité
* Développement d'un mini-projet (II)
Formation Code
* Traitement et visualisation de
données avec le module Pandas :
1. Séries.
2. DataFrame.
* Oraganisation des données par la
technqiue 'Tidy Data'
* Time Series Data
From unit 35 to unit 38
Formation Créativité
* Développement d'un mini-projet
(III).
Atelier projet 'Partie I'
* Projets encadré :
- Analyse des données financières :
développer les compétences
d'analyse de données financières afin
de résoudre les divers problèmes
sociaux du monde réel.
Unit 39
Atelier projet 'Partie II'
* Projets encadré :
- Etude, Analyse et visualisation des
données relatives à la pandémie
mondiale de Corona
Unit 40
Atelier projet
* Projets fin de formation
1. Méthodologie de travail
2. Choix des projets
3. Elaboration et présentation du cahier
des charges
4. Développement du projet
5. Test, vérification et Validation
6. Présentation des projets.
Quiz Global et feedbacks
3
1. Développement d’algorithme ‘Greedy approach’ :
Dans cette partie, nous allons aborder la notion d'optimisation d'un problème.
Un problème d'optimisation est un problème pour lequel on cherche la meilleure solution (selon un critère
défini) dans un ensemble de solutions possibles.
Quelques exemples de problèmes d'optimisation :
• Rendre la monnaie avec un minimum de pièces.
• Ranger le maximum d'éléments : sac à dos, colis dans un camion, etc.
• Réservation de véhicules dans une société pour minimiser la taille du parc nécessaire.
• Parcourir un ensemble de lieux en minimisant le temps ou la distance nécessaire.
• Et d'autres.
Note :
On parle de solution optimale toute une solution qui fait partie des solutions possibles et qui est la meilleure
des solutions selon le critère défini.
4
1. Développement d’algorithme ‘Greedy approach’ :
Les algorithmes gloutons ‘Greedy approach’ sont souvent utilisés pour résoudre ces problèmes d'optimisation . On cherche
une solution optimale en effectuant le meilleur choix possible à chaque étape de l'algorithme. Dans ce type de résolution, il n'y a
pas de retour en arrière. Lorsqu'un choix est fait, il n'est pas modifié par la suite. On se retrouve donc à chaque étape, avec un
problème de plus en plus petit à résoudre.
Attention toutefois, cette méthode ne fournit pas systématiquement la solution optimale au problème proposé.
• Pour un rendu de monnaie, le critère pour la solution optimale sera le nombre de pièces et/ou billets.
• Pour un parcours de lieux, le critère peut être le nombre de lieux ou la distance parcourue (minimale, maximale).
• Pour un système de réservation, le critère peut être le nombre de réservations ou la durée de réservation.
• Etc.
5
1. Développement d’algorithme ‘Greedy approach’ :
Projet : Coin Chnage Problem
Nous allons étudier un problème d'optimisation classique : le problème du rendu
de monnaie de manière optimale. On cherche à rendre la monnaie avec un nombre
minimal de pièces et billets.
• Pièces : 0,01 ; 0,02 ; 0,05 ; 0,1 ; 0,2 ; 1 ; 2 .
• Billets : 5 ; 10 ; 20 ; 50 ; 100 ; 200; 500.
On cherche par exemple à rendre 53 euros. On peut dans un
tableau énumérer quelques solutions possibles et choisir celle qui
minimise le nombre de pièces et de billets.
Rendus de monnaie Nombre de pièces et de billets
5300×0,01€ 5 300
53×1€ 53
5×10+1×2+1×1€ 7
2×20+3×5+1×2€ 6
1×50+1×1+1×2€ 3
Voici notre système de monnaie (exprimé en euros) :
6
1. Développement d’algorithme ‘Greedy approach’ :
Solution : Coin Change Problem
def coin_change(coins, amount):
changes = []
largest = 0
while amount > 0 :
if amount < coins[largest]:
largest +=1
else :
changes.append(coins[largest])
amount -=coins[largest]
return changes
coins_client = list(map(int, input("Input coins : ").split()))
a = sum(coins_client)
coins = [500, 100, 50, 10]
changes = coin_change(coins, a)
print(changes, len(changes))
if (len(changes) == len(coins_client)):
print("Vous n'avez pas besoin de réduire le nombre de pièce")
print("Le nouveau nombre de pièces est ",len(changes),"au lieu de ",len(coins_client))
print("Le nombre de pièce réduit est : ", len(coins_client) - len(changes))
7
1. Développement d’algorithme ‘Greedy approach’ :
Bilan
Un algorithme glouton consiste à effectuer des choix "locaux" (dans le cas du rendu de monnaie : rendre la plus grande valeur
possible), choix qui ne seront plus jamais remis en cause mais qui permettent de réduire le problème à un problème plus "simple"
(dans le cas du rendu de monnaie : rendre la somme diminuée de la valeur maximale)
Les algorithmes gloutons constituent une méthode algorithmique, parmi d'autres, pour résoudre des problèmes, en particulier
d'optimisation.
Lorsqu'un algorithme glouton permet d'obtenir une solution, celle-ci n'est pas forcément la solution optimale au problème.
Un algorithme glouton peut ne trouver aucune solution bien que des solutions existent.
8
2. Développement d’algorithme ‘Divide-and-Conquer’ :
Le diviser pour régner est une méthode algorithmique basée sur le principe suivant :
On prend un problème (généralement complexe à résoudre), on divise ce problème en une multitude de petits problèmes,
l'idée étant que les "petits problèmes" seront plus simples à résoudre que le problème original. Une fois les petits problèmes
résolus, on recombine les "petits problèmes résolus" afin d'obtenir la solution du problème de départ.
Le paradigme "diviser pour régner" repose donc sur 3 étapes :
• DIVISER : le problème d'origine est divisé en un certain nombre de sous-problèmes
• RÉGNER : on résout les sous-problèmes (les sous-problèmes sont plus faciles à résoudre que le problème d'origine)
• COMBINER : les solutions des sous-problèmes sont combinées afin d'obtenir la solution du problème d'origine.
Les algorithmes basés sur le paradigme "diviser pour régner" sont très souvent des algorithmes récursifs.
Nous avons étudié un de ces algorithmes basés sur le principe diviser pour régner : le tri-fusion
9
Projet : Minimum Triangle Path
Nous allons étudier un problème d'optimisation classique : le problème du rendu de monnaie de manière optimale. On cherche
à rendre la monnaie avec un nombre minimal de pièces et billets.
2. Développement d’algorithme ‘Divide-and-Conquer’ :
Étant donné une structure triangulaire de nombres, trouvez la somme minimale du chemin de haut en bas.
À chaque étape, vous pouvez vous déplacer vers des numéros adjacents sur la ligne ci-dessous.
10
Projet : Minimum Triangle Path
Traverser l’approche naïve en parcourant tous les chemins possibles. Mais, cela coûte cher. Il y a deux manières d’atteindre la
solution :
1 - La Mémorisation.
2 - De bas en haut : Commencez à partir des nœuds de la rangée du bas ; la somme de chemin min pour ces nœuds sont les
valeurs des nœuds eux-mêmes. Et après cela, la somme de chemin minimale au ième nœud de la kème ligne serait le minimum de la
somme de chemin de ses deux enfants + la valeur du nœud, c’est-à-dire :
2. Développement d’algorithme ‘Divide-and-Conquer’ :
11
Solution : Minimum Triangle Path
2. Développement d’algorithme ‘Divide-and-Conquer’ :
def find_minimum(row, col, triangle):
if row == len(triangle):
return 0
else :
minimum = min (find_minimum(row+1, col, triangle), find_minimum(row+1, col+1, triangle))
return triangle[row][col] + minimum
triangle = [
[2],
[3,4],
[6,5,7],
[4,1,8,3]
]
minimum = find_minimum(0, 0, triangle)
print("The minimum cost is : ", minimum)
12
3. La programmation dynamique 'Dynamic Programming' :
La programmation dynamique permet de résoudre plus efficacement des problèmes d’optimisation.
La programmation dynamique consiste à résoudre un problème en le décomposant en sous-problèmes, puis à résoudre les
sous-problèmes, des plus petits aux plus grands en stockant les résultats intermédiaires.
Cette méthode a été introduite au début des années 1950 par Richard Bellman.
Le triangle de Pascal :
Principe
En mathématiques, le triangle de Pascal est une présentation des coefficients binomiaux dans un triangle. Il fut nommé ainsi
en l’honneur du mathématicien français Blaise Pascal. Il est connu sous l’appellation « triangle de Pascal » en Occident, bien qu’il
fût étudié par d’autres mathématiciens, parfois plusieurs siècles avant lui.
13
3. La programmation dynamique 'Dynamic Programming' :
Solution 1 : Algorithme récursif non optimisé
def pascal_recur(n,p):
if p==0:return 1
if p>n:
return 0
else:
return pascal_recur(n-1,p) + pascal_recur(n-1,p-1)
def pascal(n):
T = [[0] * (n+1) for p in range(n+1)]
for n in range(n+1):
for k in range(n+1):
T[n][k] = pascal_recur(n,k)
return T
14
3. La programmation dynamique 'Dynamic Programming' :
Solution 2 : Algorithme avec mémorisation
def trianglePascal(n):
T = [[0] * (n+1) for p in range(n+1)]
for n in range(n+1):
if n == 0:
T[n][0] = 1
else:
for k in range(n+1):
if k == 0:
T[n][0] = 1
else:
T[n][k] = T[n-1][k-1] + T[n-1][k]
return T
15
4. Backtracking :
Le retour sur trace (appelé aussi backtracking en anglais) est un algorithme qui consiste à revenir
légèrement en arrière sur des décisions prises afin de sortir d'un blocage. La méthode des essais et erreurs
constitue un exemple simple de backtracking. Le terme est surtout utilisé en programmation, où il désigne une
stratégie pour trouver des solutions à des problèmes de satisfaction de contraintes.
La résolution d’un problème par la méthode de backtracking repose sur la construction d’une solution
partielle que l’on va améliorer afin de s’approcher de plus en plus de la solution finale. Si une solution partielle ne
peut pas être améliorée, elle est abandonnée et l’on revient en arrière pour examiner d’autres solutions possibles.
16
4. Backtracking :
PRINCIPE
Dans l’utilisation du backtracking pour résoudre un problème particulier, nous avons besoin de deux choses :
 Une procédure pour examiner une solution partielle (notée SP par la suite) afin de déterminer si :
• Il s’agit d’une solution actuelle ACCEPTABLE.
• Il s’agit d’une solution actuelle à ABANDONNER (elle ne respecte pas la règle du jeu).
• Il faut poursuivre L’EXTENSION de la solution actuelle.
 Une procédure pour ETENDRE la SP, générant une ou plusieurs solutions qui se rapprochent de la solution finale.
Dans un algorithme de backtraking, on explore toutes les solutions possibles, quand une solution possible se termine
en impasse, on revient en arrière et on teste d’autres solutions.
17
4. Backtracking :
MISE EN ŒUVRE SUR LE PROBLEME DES N-REINES
Pour résoudre le problème des N-reines, il faut considérer le cas de N=4. Le
problème des 4 reines est le problème consistant à placer quatre reines sur un
échiquier 4*4.
Il s’agit de trouver la position de quatre reines sur un jeu d’échec de telle façon
qu’aucune des reines ne puisse en attaquer une autre. En d’autres termes, il ne peut
pas y avoir deux reines sur la même ligne, sur la même colonne et sur la même
diagonale. La figure ci-contre représente une solution possible.
Dans ce problème, il est assez facile d’examiner une SP : Si deux reines s’attaquent, il faut la rejeter. Si les huit quatre
ne s’attaquent pas, on l’accepte. Autrement, on continue la procédure.
18
4. Backtracking :
La méthode la plus simple consiste à placer la reine dans tous
les emplacements possibles.
Si une reine noire est placée à la position (0, 0) comme
indiqué ci-dessous, vous pouvez essayer de placer la reine rouge
dans toutes les positions possibles de la deuxième rangée.
Les première et deuxième cases de la deuxième ligne ne
peuvent pas être choisies.
Cela est dû au fait que la reine noire, qui a déjà été placée, ne
peut pas coexister avec une autre reine dans la même
ligne/colonne ou diagonale.
19
4. Backtracking :
On suit la même méthode, et on place les reines dans les bonnes cases jusqu’on trouve la bonne
solution. La figure ci-contre présente une solution particulière.
L'arbre de l'espace de recherche du problème des N-Queens peut être dessiné comme suit :
20
4. Backtracking :
Pour implémenter la solution, on aura besoin de deux fonctions.
La première fonction ‘promising()’ permet de vérifier si deux reines se trouvent dans la même ligne, colonne ou diagonale.
Supposons que col[i] est le numéro de la colonne dans la i-ème ligne.
Autrement dit, col = [1, 0, 2, 3] présente l'état suivant.
Comme nous ne placerons les reines que dans des rangées différentes,
nous pouvons alors éviter le chevauchement des reines.
Afin de vérifier si les deux reines existent dans la même colonne, il
faut vérifier la situation suivante.
Afin de déterminer si les deux reines peuvent exister en diagonale, il
faut vérifier la valeur absolue de la différence entre les rangées et les
colonnes comme suit. 21
4. Backtracking :
L'implémentation de la solution :
Étant donné une liste de colonnes et l'indice i comme paramètres d'entrée, vérifiez si la i-ième colonne est
prometteuse.
La ligne sur laquelle la reine est déjà placée est la branche 0 à i - 1, elle parcourt donc la boucle for de 0 à I – 1
Pour chaque indice k, on vérifie s'il y a déjà différentes reines dans la même colonne, ou s'il y a différentes reines sur la
diagonale.
S'il y a une reine dans la même colonne ou dans sa diagonale, on retourne False. Sinon, on retourne Vrai.
22
4. Backtracking :
L'implémentation de la solution :
Avec i et col comme paramètres d'entrée, si la i-ème colonne
n'est pas prometteuse, il retourne immédiatement une valeur.
Si la i-ème colonne est prometteuse et que i est la dernière
ligne, la solution a été trouvée, alors la liste col correspondante est
entrée.
Si la i-ème colonne est prometteuse et que i n'est pas la dernière
ligne, alors on continue la recherche en profondeur.
Avant de poursuivre la recherche en profondeur, placer la reine dans la colonne i+1ème.
Puis on continue la recherche de la ligne i + 1.
23
4. Backtracking :
L'implémentation de la solution :
Après avoir reçu la valeur de N comme entrée de l'utilisateur, la liste col initialise la i-ème ligne à -1, et les éléments de
la liste à -1 est donnée comme valeur de paramètre, puis on exécute la fonction n_queens().
24
4. Backtracking :
25
5. Modules classiques sur Python et modules personnalisés :
On appelle “module” tout fichier constitué de code Python (c’est-à-dire tout fichier avec l’extension .py) importé
dans un autre fichier ou script.
Les modules permettent la séparation et donc une meilleure organisation du code. En effet, il est courant dans un
projet de découper son code en différents fichiers qui vont contenir des parties cohérentes du programme final pour
faciliter la compréhension générale du code, la maintenance et le travail d’équipe si on travaille à plusieurs sur le projet.
En Python, on peut distinguer trois grandes catégories de module en les classant selon leur éditeur :
• Les modules standards qui ne font pas partie du langage mais sont intégrés automatiquement par Python ;
• Les modules développés par des développeurs externes qu’on va pouvoir utiliser ;
• Les modules qu’on va développer nous mêmes.
26
5. Modules classiques sur Python et modules personnalisés :
Pour installer les modules qui ne sont pas intégrés de base à Python, il faut commencer pour ouvrir
votre console. Attention, nous ne parlons pas ici de la console Python mais bien de celle de votre système lui-
même.
Pour installer un module, il suffit maintenant d'utiliser : pip install nom_du_module
pip install
chart
27
5. Modules classiques sur Python et modules personnalisés :
Un programme Python va généralement être composé d’un script principal qui va importer différents
modules (c’est-à-dire différents fichiers Python) pour pouvoir les utiliser.
Pour importer un module, on utilise la syntaxe import nom-de-mon-module. Pour utiliser les éléments
du module dans notre script, il faudra préfixer le nom de ces éléments par le nom du module et un point.
Cela permet d’éviter les conflits dans le cas où on aurait défini des éléments avec le même nom que ceux
disponibles dans le module.
Parfois, nous n’aurons besoin que de certains éléments précis dans un module. On va alors pouvoir se
contenter d’importer ces éléments en particulier. Pou cela, on va utiliser l’instruction : from nom-du-module
import un-element.
28
5. Modules classiques sur Python et modules personnalisés :
5.1. Les modules standards :
Les modules Python standard à connaitre sont les suivants :
• Le module datetime fournit des classes pour manipuler de façon simple ou plus complexe des dates et des heures ;
• Le module json permet l’encodage et le décodage de données au format JSON ;
• Le module math fournit un ensemble de fonctions permettant de réaliser des calculs mathématiques complexes ;
• Le module os fournit une manière portable d’utiliser les fonctionnalités dépendantes du système d’exploitation ;
• Le module random implémente des générateurs de nombres pseudo-aléatoires pour différentes distributions ;
• Le module re fournit des opérations sur les expressions rationnelles similaires à celles que l’on trouve dans Perl ;
• Le module sys fournit un accès à certaines variables système utilisées et maintenues par l’interpréteur, et à des fonctions
interagissant fortement avec ce dernier ;
• Les modules urllib.request et urllib.parse permettent d’ouvrir, de lire et d’analyser des URLs.
29
5. Modules classiques sur Python et modules personnalisés :
5.2. Les modules personnalisés :
En Python, la création d'un module est très simple. Il suffit d'écrire un ensemble de fonctions (et/ou de constantes)
dans un fichier, puis d'enregistrer ce dernier avec une extension .py (comme n'importe quel script Python).
Remarque :
La première fois qu'un module est importé, Python crée un répertoire nommé __pycache__ contenant un fichier avec
une extension .pyc qui contient le bytecode, c'est-à-dire le code précompilé du module.
30
6. Les interfaces graphique Sur Python :
Tkinter est un module de base intégré dans Python. L'un des avantages de Tkinter est sa portabilité sur les OS les plus
utilisés par le grand public. Tkinter est installé par défaut.
Pour créer un logiciel graphique vous devez ajouter dans une fenêtre des éléments graphiques que l'on nomme
widget. Ce widget peut être tout aussi bien une liste déroulante que du texte.
Les boutons
Les boutons permettent de proposer une action à
l'utilisateur. Dans l'exemple ci-dessous, on lui propose de
fermer la fenêtre.
bouton=Button(fenetre, text="Fermer", command=fenetre.quit)
bouton.pack()
Les labels
Les labels sont des espaces prévus pour écrire du
texte. Les labels servent souvent à décrire un widget
comme un input.
label = Label(fenetre, text="Texte par défaut", bg="yellow")
label.pack()
31
6. Les interfaces graphique Sur Python :
Case à cocher
Les checkbox proposent à l'utilisateur de cocher une
option.
bouton = Checkbutton(fenetre, text="Nouveau?")
bouton.pack()
Entrée / input
value = StringVar()
value.set("texte par défaut")
entree = Entry(fenetre, textvariable=string, width=30)
entree.pack()
Boutons radio
Les boutons radio sont des cases à cocher qui sont dans
un groupe et dans ce groupe seul un élément peut être
sélectionné.
value = StringVar()
bouton1 = Radiobutton(fenetre, text="Oui", variable=value, value=1)
bouton2 = Radiobutton(fenetre, text="Non", variable=value, value=2)
bouton3 = Radiobutton(fenetre, text="Peu être", variable=value, value=3)
bouton1.pack()
bouton2.pack()
bouton3.pack()
32
6. Les interfaces graphique Sur Python :
Les listes
Les listes permettent de récupérer une valeur
sélectionnée par l'utilisateur.
liste = Listbox(fenetre)
liste.insert(1, "Python")
liste.insert(2, "PHP")
liste.insert(3, "jQuery")
liste.insert(4, "CSS")
liste.insert(5, "Javascript")
liste.pack()
Les alertes
Pour pouvoir utiliser les alertes de votre os, vous pouvez
importer le module tkMessageBox (Python 2).
from tkMessageBox import *
from tkinter.messagebox import *
Exemple d'utilisation:
def callback():
if askyesno('Titre 1', 'Êtes-vous sûr de vouloir faire ça?'):
showwarning('Titre 2', 'Tant pis...')
else:
showinfo('Titre 3', 'Vous avez peur!')
showerror("Titre 4", "Aha")
Voici les alertes possibles:
showinfo(), showwarning(), showerror()
askquestion(), askokcancel(), askyesno()
askretrycancel()
33
6. Les interfaces graphique Sur Python :
Projet : Jeu de Morpion (Tik Tak Toe)
Réaliser le projet suivant (cf image ci-dessous) :
34
6. Les interfaces graphique Sur Python :
Projet : Solution du Jeu de Morpion (Tik Tak Toe)
35
6. Les interfaces graphique Sur Python :
Projet : Solution du Jeu de Morpion (Tik Tak Toe)
36
6. Les interfaces graphique Sur Python :
Projet : Solution du Jeu de Morpion (Tik Tak Toe)
37
7. Base de données et Python ‘MySQL’ :
Une base de données, c'est quoi?
Une base de données ( database en anglais) est un conteneur dans lequel il est possible de stocker des données de
façon structurée. Cette structure permet au programme informatique connectée à celle-ci de faire des recherches
complexes .
Un langage standardisé -SQL- est dédié à cette structure et permet aussi bien de faire des recherches mais aussi des
modifications ou des suppressions.
Les logiciels de gestion de bases de données les plus utilisés aujourd'hui sont des SGBDR - Système de gestion de base
de données relationnelles -, c'est à dire que les données sont liées les unes aux autres.
Par exemple on peut établir que si on supprime une information, d'autres informations dépendantes de cette
dernière sont elles-aussi automatiquement supprimées. Cela garantit une cohérence de données .
38
7. Base de données et Python ‘MySQL’ :
Quels sont les SGBDR les plus connus?
PostgreSQL PostgreSQL est la base de données à utiliser pour les gros projets. Stable et très puissant, il permet de gérer des Gigabytes de données sans problème.
MySQL
Mysql est l'un des SGBDR les plus utilisés au monde. Il est gratuit et très puissant. Il possède la double licence GPL et propriétaire depuis son rachat par Sun
Microsystem eux-mêmes rachetés par Oracle (concurrent direct de MySQL). Le logiciel reste cependant entièrement gratuit et libre. Il répond à une logique
client/serveur , c'est à dire que plusieurs clients (ordinateurs distants) peuvent se connecter sur un seul serveur qui héberge les données.
MariaDB Le créateur de MySQL a crée MariaDB suite au rachat de MySQL pour continuer le projet en open source.
SQLite
SQLite est une bibliothèque écrite en C . SQLite est parfait pour les petits projets. Sa particularité est d'être intégré directement à un programme et ne répond donc
pas à la logique client-serveur. Il est le moteur de base de données le plus distribué au monde puiqu'il est intégré à de nombreux logiciels grand public comme
FireFox, Skype, Adobe, etc. Le logiciel pèse moins de 300 ko et peut donc être intégré à des projets tournant sur de petites supports comme les smartphones. Souvent
aucune installation n'est nécessaire pour l'utiliser.
Oracle Oracle Database est sous licence propriétaire, c'est à dire payant. Il est souvent utilisé pour les projets à gros budget nécessitant de réaliser des actions complexes.
Microsoft SQL Server Produit Microsoft ne tourne que sur un OS Windows, payant n'apporte rien de plus que les logiciels concurrents libre de droit. Si vous avez trop d'argent à la limite...
39
7. Base de données et Python ‘MySQL’ :
MySQL vs Postgre, Quel est le meilleur SGBDR entre postgre et mysql?
Il existe toujours des faux débats pour savoir quelle technologie est meilleure que l'autre. Dire que MySQL est
meilleur que Postgre n'a aucun sens, chacun est bon dans ce pour quoi il a été crée .
On préférera MySQL pour des projets plus limités avec un faible nombre d'utilisateurs et un petit volume de données.
Par contre pour des projets plus ambitieux avec des données dépassant la dizaine de téraoctets, on utilisera Postgre. Il
faudra alors optimiser la configuration, etc..
40
7. Base de données et Python ‘MySQL’ :
SQLite :
Notre premier exemple concernera SQLite.
SQLite a été conçu pour être intégré dans le programme même. Pour des projets plus ambitieux / projets
web le choix de MySQL serait plus judicieux.
Utiliser le module SQLite
Pour importer le module SQLite:
import sqlite3
Créer une base de données avec SQLite
La aussi pour créer une base de données avec SQLite, rien de plus simple:
conn = sqlite3.connect('ma_base.db')
Créer une table avec SQLite
41
7. Base de données et Python ‘MySQL’ :
SQLite :
Créer une table avec SQLite
Voici un exemple de création de table :
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS users(
id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,
name TEXT,
age INTERGER
)
""")
conn.commit()
Supprimer une table avec SQLite
Voici un exemple de création de table :
cursor = conn.cursor()
cursor.execute("""
DROP TABLE users
""")
conn.commit()
Insérer des données
Il existe plusieurs manières d'insérer des données, la plus
simple étant celle-ci :
cursor.execute("""
INSERT INTO users(name, age) VALUES(?, ?)""", ("olivier", 30))
42
7. Base de données et Python ‘MySQL’ :
SQLite :
Récupérer des données
Vous pouvez récupérer la première ligne
correspondant à votre recherche à l'aide de la
fonction fetchone.
cursor.execute("""SELECT name, age FROM users""")
user1 = cursor.fetchone()
print(user1)
Modeifier des entrées/données
Pour modifier des entrées/données :
cursor.execute("""UPDATE users SET age = ? WHERE id = 2""", (31,))
43
7. Base de données et Python ‘MySQL’ :
MySQL:
MySQL est le logiciel idéal pour vos projets.
Installation de MySQL pour python
pip install mysql
pip install MySQL-python
pip install mysql-connector-python --allow-external mysql-connector-python
Connexion au serveur MySQL
import mysql.connector
conn = mysql.connector.connect(host="localhost",user="root",password="XXX", database="test1")
cursor = conn.cursor()
conn.close()
44
7. Base de données et Python ‘MySQL’ :
MySQL:
Insérer des données
Il existe deux manières d'ajouter des données dans une table:
user = ("olivier", "34")
cursor.execute("""INSERT INTO users (name, age) VALUES(%s, %s)""", user)
user = {"name": "olivier", "age" : "34"}
cursor.execute("""INSERT INTO users (name, age) VALUES(%(name)s, %(age)s)""", user)
45
7. Base de données et Python ‘MySQL’ :
MySQL:
Trouver des données avec mysql
La logique est la même que pour SQLite:
cursor.execute("""SELECT id, name, age FROM users WHERE id = %s""", ("5", ))
rows = cursor.fetchall()
for row in rows:
print('{0} : {1} - {2}'.format(row[0], row[1], row[2]))
46
8. Traitement et visualisation de données :
Python est un langage scientifique très mature. On y trouve des librairies pour de nombreuse applications,
notamment le Machine Learning et l’analyse de data. La visualisation de données est une partie importante pour explorer
nos données et pour communiquer les résultats.
Par exemple, on pourra récupérer des données stockées dans une base et appliquer des méthodes de machine
Learning avant d’exporter les résultats sous forme de fichiers csv pour être utilisés dans une application.
47
8. Traitement et visualisation de données :
1- L’importation des données et le prétraitement
Nous allons utiliser pour cela une bibliothèque très complète :
pandas : pour l’importation et le prétraitement des données. Il s’agit d’une bibliothèque qui vous permet de mettre
en œuvre des DataFrame.
import pandas as pd
On va donc récupérer les données et les stocker dans un DataFrame afin de les transformer. Pour cela, on fait une
requête directement dans la base de données et on remplit un DataFrame avec le résultat.
frame = pd.read_sql_query('SELECT * FROM mytable', engine)
48
Bibliothèque « Pandas »:
Pandas fait partie des librairies de base pour la data science en Python. Pandas fournit des structures de données puissantes et simples
à utiliser, ainsi que les moyens d'opérer rapidement des opérations sur ces structures.
Dans ce chapitre, nous verrons l'intérêt de la librairie Pandas, ainsi que les opérations basiques sur l'objet phare de cette librairie, le
dataframe.
DataFrame est très similaire à certains concepts que l'on trouve en dehors du cadre du langage Python. Il est similaire aux tables des
bases des données relationnelles.
Pour installer la bibliothèque, on utilise : pip install pandas
8. Traitement et visualisation de données :
49
Pandas nous facilite la manipulation des tableaux de tableaux sous forme d’un DataFrame:
On importe pandas pour exploiter nos données:
On peut changer les noms sur le DataFrame:
Bibliothèque « Pandas »:
50
Pour accéder à une colonne, on a deux syntaxes :
Parcourir le DataFrame à l’aide d’une boucle For :
Bibliothèque « Pandas »:
51
Pour accéder à une position, par indice et par nom du ligne:
Testez si les colonnes ont les caractéristiques demandées:
Bibliothèque « Pandas »:
52
L’opération précédente est très pratique pour filtrer des lignes:
Pour inverser le résultat de l’opération, il suffit d’ajouter l’opérateur « ~ »:
Bibliothèque « Pandas »:
53
Pour ajouter des lignes à notre DataFrame:
On a dupliqué la ligne 1 et maman pour les dédoublonner:
Cette fonction renvoie juste un nouveau DataFrame, et il garde la source comme elle est.
Bibliothèque « Pandas »:
54
Pour afficher les noms des colonnes du DataFrame :
Pour ajouter une colonne au DataFrame :
Le nombre des lignes du DataFrame :
Pour obtenir les valeurs distinctes d’une colonne :
Bibliothèque « Pandas »:
55
La fonction describe donne des statistiques diverses sur les
données dans le DataFrame:
L’argument include = « all », sert à inclure les colonnes non-
numériques dans l’analyse.
NaN une valeur définie pour représenter quelque chose
qui n'est pas un nombre (Not a Number) alors que son type
l'exige. Par exemple, on obtient NaN si on demande à Pandas de
calculer la moyenne d'une colonne de texte ou bien si les valeurs
de la colonnes sont manquantes.
Bibliothèque « Pandas »:
56
Pour renommer une colonne:
Pour renommer une ligne:
Bibliothèque « Pandas »:
57
Supprimez une ligne, si inplace = false le DataFrame ne
change pas l’origine:
Supprimez une colonne, si inplace = false le DataFrame ne
change pas l’origine :
Bibliothèque « Pandas »:
58
Pandas peut manipuler les tableaux croisés dynamiques:
Bibliothèque « Pandas »:
59
Créez un tableau croisé dynamique :
Calculez la somme comme une fonction d’agrégation :
Créez un tableau croisé dynamique avec une agrégation à
plusieurs niveaux :
Bibliothèque « Pandas »:
60
Combinez deux dictionnaires de données
dans un DataFrame:
On peut exploiter des opérations de
l’algèbre relationnelle (sélection):
Bibliothèque « Pandas »:
61
On peut exploiter des opérations de l’algèbre relationnelle (Union):
Bibliothèque « Pandas »:
On peut exploiter des opérations de l’algèbre relationnelle (Jointure) :
62
On peut exploiter des opérations de l’algèbre relationnelle (Jointure):
Bibliothèque « Pandas »:
63
Lire un fichier csv:
Lire des colonnes d’un fichier csv:
Bibliothèque « Pandas »:
64
2- Les analyses en utilisant le machine Learning
Une fois les données nettoyées, stockées dans un DataFrame et prêtes à être analysées,
vous pouvez maintenant appliquer des outils de machine Learning (apprentissage automatique)
et représenter les résultats par des visualisations.
Les deux bibliothèques de référence pour cela sont scikit-learn et matplotlib. Elles sont
toutes les deux extrêmement complètes et possèdent de nombreuses fonctionnalités pour
python en data science.
8. Traitement et visualisation de données :
3- L’exportation des données
Les informations importantes pour l’affichage en sortie sont les catégories de clients, on va
donc uniquement exporter les centres des classes dans un fichier csv grâce aux outils de pandas.
class_center.to_csv("centers.csv")
65
l'utilisation de Matplotlib comme outil de visualisation dans les notebooks Jupyter.
Pour commencer, mettons en place l'environnement de travail.
Bibliothèque « Matplotlib »:
66
La variable Fig correspond à un conteneur qui contient tous les objets (axes, labels, données, etc). Les axes correspondent au carré
que l'on voit au-dessus, et qui contiendra par la suite les données du graphe.
Bibliothèque « Matplotlib »:
67
Maintenant, voyons un exemple un peu plus poussé.
Bibliothèque « Matplotlib »:
68
Bibliothèque « Matplotlib »:
69
Dans la vie réelle, les données que nous sommes amenés à analyser sont souvent bruitées, c'est-à-dire qu'il existe une part
d'incertitude sur leur valeur réelle. Il est extrêmement important d'en tenir compte non seulement lors de l'analyse des données, mais aussi
quand on veut les présenter..
Bibliothèque « Matplotlib »:
70
Données discrètes
Dans le cas de données discrètes (des points), nous utilisons souvent les barres d'erreur pour représenter, pour chaque point,
l'incertitude quant à sa valeur exacte. Souvent la longueur des barres correspond à l'écart type des observations empiriques. C'est chose
aisée avec Matplotlib.
Bibliothèque « Matplotlib »:
71
Bibliothèque « Matplotlib »:
Données continues
Parfois, comme quand on essaie
d'appliquer la régression par processus
gaussien, nous avons besoin de représenter
une incertitude sur une fonction continue.
On peut le faire en utilisant la
fonction plot conjointement avec la
fonction fill_between.
Mais nous allons voir plus tard dans
ce chapitre comment le faire plus
simplement avec la librairie Seaborn.
72
Dans ce projet, on va explorer la bibliothèque Pandas qui a
été développer au départ pour organiser et analyser les données
financières.
L’analyse des données financières est considérée la
pratique la plus efficace dans l’analyse de données.
Grace à la pratique au traitement de données financières de
divers facteurs accumulés sur une période de temps, vous
pouvez être suffisamment préparés à la plupart des types de
données que vous verrez dans le travail du monde réel.
9. Projets :
9.1. Analyse des données financières :
73
Maintenant, utilisons toutes les compétences que nous avons apprises jusqu'à présent pour résoudre les tâches suivantes.
• Obtention de données financières à partir de référentiels de données distants.
• Visualisation des données sur le cours des actions sur la base de données de séries chronologiques.
• Visualisation des données de volume de transactions basées sur des données de séries chronologiques.
• Mesurer le taux journalier simple.
• Calcul du taux de rendement cumulatif quotidien simple.
• Calcul du taux de rendement en déplaçant la période par mois.
• Calcul de la moyenne mobile.
• Analyser la corrélation entre chaque facteur de données financières Calculer la volatilité du cours des actions.
9. Projets :
9.1. Analyse des données financières :
Nous avons choisi les données financières du marché des états unis, à cause de son grand impact sur l’économie mondiale.
• SPY, il suit l’indice S&P 500.
• IYW, il suit l’indice de bourse des entreprises technologiques américaines.
• VT, il investit dans des entreprises de monde entier.
• DBA, il suit l’offre, la demande et les prix de produits agricoles.
• Taux obligatoire américain TLT.
• PDBC, il suit l’offre et la demande et les prix de matières premières.
• L’or IAU. 74
1. Récupération des données:
• Créez une fonction get_stock_data, qui lit les données de stock à partir de Yahoo Finance, puis créez une colonne « Ticker » de l’indice
0 du dataframe nommé « data », et mettez "ticker" comme nom pour l’élément de données, et enfin, demandez l’intervalle du temps
[start, end].
• Pour tester la fonction, entrez le ticker de Disney, « DIS» et affectez les résultats à une dataframe.
• Étant donné que l'analyse sera basée uniquement sur le closing price « Close » de chaque ticker, pivotez dans la forme requise.
9. Projets :
9.1. Analyse des données financières :
75
9. Projets :
9.1. Analyse des données financières :
1. Récupération des données:
76
2. Création de dataframe:
• Créez un dataframe pour chaque ticker (SPY, IYW, VT, DBA, TLT, PDBC, IAU).
• Affichez les informations des dataframe créés.
9. Projets :
9.1. Analyse des données financières :
77
9. Projets :
9.1. Analyse des données financières :
2. Création de dataframe:
• Pivotez les dataframes sur le closing price « Close ».
• Concaténez les dataframes.
78
3. Visualisation des données:
• Présentez graphiquement les données concaténées en utilisant ‘ggplot’.
9. Projets :
9.1. Analyse des données financières :
79
9. Projets :
9.1. Analyse des données financières :
3. Visualisation des données:
• Tranchez la période de Corona, [‘’2020-2-1, ‘2020-7-31’].
80
9. Projets :
9.1. Analyse des données financières :
3. Visualisation des données:
• Présentez graphiquement la période tranchée.
81
9. Projets :
9.1. Analyse des données financières :
3. Visualisation des données:
• Choisissez et comparez 3 types de personnalités en les présentant graphiquement.
82
4. Visualisation des données de volume sous la forme d'un graphique à barres:
• Récupérez les données de matières premières (PDBC).
9. Projets :
9.1. Analyse des données financières :
83
9. Projets :
9.1. Analyse des données financières :
4. Visualisation des données de volume sous la forme d'un graphique à barres:
• Supprimez tout les colonnes sauf celle du volume.
84
9. Projets :
9.1. Analyse des données financières :
4. Visualisation des données de volume sous la forme d'un graphique à barres:
• Présentez graphiquement le volume.
85
5. Visualisation de deux ensembles de données sur le même graphique:
• En exploitant les étapes 2 et 4, présentez les graphiques en utilisant subplot2grid.
9. Projets :
9.1. Analyse des données financières :
86
6. Calcul de la variation quotidienne en pourcentage en utilisant pandas.Series.shift():
• Décalez un jour pour obtenir le prix de clôture du jour de l’indice S&P 500.
• Calculez sa variation quotidienne en pourcentage.
9. Projets :
9.1. Analyse des données financières :
87
9. Projets :
9.1. Analyse des données financières :
6. Calcul de la variation quotidienne en pourcentage en utilisant pandas.Series.shift():
• Présentez les résultats graphiquement.
88
9. Projets :
9.1. Analyse des données financières :
6. Calcul de la variation quotidienne en pourcentage en utilisant pandas.Series.shift():
• En décalant le jour, la première valeur est manquée, remplacez-la par 0.
• Affichez les résultat sur un histogramme.
89
7. Analyse de la corrélation entre la variation quotidienne du prix des actions et les rendements cumulés:
• Calculez sa variation quotidienne en pourcentage de l’ensemble des actions.
• Calculez le rendement cumulé quotidien.
9. Projets :
9.1. Analyse des données financières :
90
9. Projets :
9.1. Analyse des données financières :
7. Analyse de la corrélation entre la variation quotidienne du prix des actions et les rendements cumulés:
• Présentez graphiquement les rendements cumulés.
91
8. Analyse de la dispersion:
• Calculez la corrélation entre les différentes actions.
• Présentez graphiquement la corrélation en utilisant heatmap.
• Présentez graphiquement la dispersion des deux actions (SPY, VT) en utilisant scatter.
9. Projets :
9.1. Analyse des données financières :
92
9. Projets :
9.1. Analyse des données financières :
8. Analyse de la dispersion:
93
9. Suivre l'évolution des actions sur une période donnée:
• Calculez l’écart type mobile des variations quotidiennes.
9. Projets :
9.1. Analyse des données financières :
94
9. Projets :
9.1. Analyse des données financières :
9. Suivre l'évolution des actions sur une période donnée:
• Présentez graphiquement l’écart type de (SPY, TLT, DBA).
95
Dans ce projet, on va exploiter les données de
vaccination contre le COVID-19, la base de données
est collectée en temps réel par
https://ourworldindata.org/ .
Tout au long de ce projet, on va essayer
d’obtenir des statistiques descriptives de quelques
pays avec le plus grand nombre d'infections.
On va exploiter des package de python pour
afficher les infections de chaque pays sur la carte.
9. Projets :
9.2. Etude, Analyse et visualisation des données relatives au Covid19 :
96
1. Préparation des données:
 Importez les données.
 Affichez le résumé technique des données.
9. Projets :
9.2. Etude, Analyse et visualisation des données relatives au Covid19 :
97
9. Projets :
9.2. Etude, Analyse et visualisation des données relatives au Covid19 :
1. Préparation des données:
 Convertissez la colonne « Day » à datetime et stockez-le dans une colonne « Date ».
 Donner l’indice à la colonne Date.
 Supprimer la colonne « Day ».
 Afficher DataFrame.
 Afficher le nombre de pays.
98
2. Manipulation des données:
 Groupez les données par pays, et stockez les dans une nouvelle DataFrame.
 Séparez les informations du groupe crée par clé et afficher-les.
 Affichez le nom du groupe.
 Affichez le nombre des lignes de chaque groupe (pays).
 Affichez les 5 lignes de chaque group.
9. Projets :
9.2. Etude, Analyse et visualisation des données relatives au Covid19 :
# Separate the information of the created group by key and print them.
99
2. Manipulation des données:
 Stockez dans une nouvelle colonne le total de personnes vaccinées pour chaque pays.
9. Projets :
9.2. Etude, Analyse et visualisation des données relatives au Covid19 :
# Separate the information of the created group by key and print them.
100
On va visualiser par la suite les données sur la carte
en utilisant la bibliothèque folium.
Durant ce mini projet, on va essayer de représenter la
situation mondiale du COVID-19 en changeant les couleurs
des pays sur la carte en se basant sur le poids d’infections.
Mais avant, on va détailler comment exploiter les
données sur la carte en utilisant folium.
9. Projets :
9.2. Etude, Analyse et visualisation des données relatives au Covid19 :
101
1. Visualisation des données:
 Installez la librairie .
 Obtenir les données (latitude et longitude) a afficher d’après Google
Maps.
 Entrez les coordonnées (latitude et longitude) de localisation choisie.
 Saisissez le zoom initial de la carte.
 Sauvegardez la carte dans un fichier html.
 Changez le style d’affichage de la carte, tiles = .
• stamenterrain
• stamentoner
• stamenwatercolor
• cartodbpositron
• cartodbdark_matter
• Openstreetmap (par défaut)
9. Projets :
9.2. Etude, Analyse et visualisation des données relatives au Covid19 :
102
• pip installfolium
• conda installfolium -c conda-forge: It is recommended to install using conda.
9. Projets :
9.2. Etude, Analyse et visualisation des données relatives au Covid19 :
1. Visualisation des données:
 Installez la libraire .
 Obtenir les données (latitude et longitude) a afficher d’après Google
Maps.
 Entrez les coordonnées (latitude et longitude) de localisation choisie.
103
9. Projets :
9.2. Etude, Analyse et visualisation des données relatives au Covid19 :
1. Visualisation des données:
 Saisissez le zoom initial de la carte.
104
1. Visualisation des données:
 Marquez une position sur la carte en utilisant une icone et un libellé descriptif.
 Visualisez les données en colorant des zones sur la carte, au fur et à mesure que la valeur de l'information à délivrer augmente, la couleur
peinte dans la zone correspondante devient plus foncée.
9. Projets :
9.2. Etude, Analyse et visualisation des données relatives au Covid19 :
105
2. Visualisez les données groupées pendant data manipulation en suivant la méthode étudiée aux étapes précédentes.
9. Projets :
9.2. Etude, Analyse et visualisation des données relatives au Covid19 :
106
107

Contenu connexe

Similaire à Support Formation Samsung - Python - Session 2 - 2022.pptx

cours d'algorithmique et programmation 3sc final .pdf
cours d'algorithmique et programmation 3sc final .pdfcours d'algorithmique et programmation 3sc final .pdf
cours d'algorithmique et programmation 3sc final .pdfLamissGhoul1
 
La complexité des algorithmes récursives Géométrie algorithmique
La complexité des algorithmes récursivesGéométrie algorithmiqueLa complexité des algorithmes récursivesGéométrie algorithmique
La complexité des algorithmes récursives Géométrie algorithmiqueHajer Trabelsi
 
Calibration de modèles d'agents de marchés financiers par une démarche d'infé...
Calibration de modèles d'agents de marchés financiers par une démarche d'infé...Calibration de modèles d'agents de marchés financiers par une démarche d'infé...
Calibration de modèles d'agents de marchés financiers par une démarche d'infé...MohamedAmineHACHICHA1
 
Outils d'aides à la décision multicritere
Outils d'aides à la décision multicritereOutils d'aides à la décision multicritere
Outils d'aides à la décision multicriteremahraznajib
 
BigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopBigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopLilia Sfaxi
 
Problème De Sac à Dos
Problème De Sac à Dos Problème De Sac à Dos
Problème De Sac à Dos chagra bassem
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite Saddem Chikh
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
livre-algorithmes.pdf
livre-algorithmes.pdflivre-algorithmes.pdf
livre-algorithmes.pdfDurelDonfack
 
Pricing of American options on stocks with discrete dividends
Pricing of American options on stocks with discrete dividendsPricing of American options on stocks with discrete dividends
Pricing of American options on stocks with discrete dividendsJulien Royer
 

Similaire à Support Formation Samsung - Python - Session 2 - 2022.pptx (20)

PLNE.pptx
PLNE.pptxPLNE.pptx
PLNE.pptx
 
WAAUB_DIAPO_2_2.pdf
WAAUB_DIAPO_2_2.pdfWAAUB_DIAPO_2_2.pdf
WAAUB_DIAPO_2_2.pdf
 
cours d'algorithmique et programmation 3sc final .pdf
cours d'algorithmique et programmation 3sc final .pdfcours d'algorithmique et programmation 3sc final .pdf
cours d'algorithmique et programmation 3sc final .pdf
 
chapitre 5.pptx
chapitre 5.pptxchapitre 5.pptx
chapitre 5.pptx
 
La complexité des algorithmes récursives Géométrie algorithmique
La complexité des algorithmes récursivesGéométrie algorithmiqueLa complexité des algorithmes récursivesGéométrie algorithmique
La complexité des algorithmes récursives Géométrie algorithmique
 
Programmation binaire
Programmation binaireProgrammation binaire
Programmation binaire
 
6
66
6
 
Calibration de modèles d'agents de marchés financiers par une démarche d'infé...
Calibration de modèles d'agents de marchés financiers par une démarche d'infé...Calibration de modèles d'agents de marchés financiers par une démarche d'infé...
Calibration de modèles d'agents de marchés financiers par une démarche d'infé...
 
Oc1 2013
Oc1 2013Oc1 2013
Oc1 2013
 
Outils d'aides à la décision multicritere
Outils d'aides à la décision multicritereOutils d'aides à la décision multicritere
Outils d'aides à la décision multicritere
 
BigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopBigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans Hadoop
 
Branch and bound
Branch and boundBranch and bound
Branch and bound
 
Problème De Sac à Dos
Problème De Sac à Dos Problème De Sac à Dos
Problème De Sac à Dos
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Agile Tour Toulouse jl-letouzey
Agile Tour Toulouse jl-letouzeyAgile Tour Toulouse jl-letouzey
Agile Tour Toulouse jl-letouzey
 
livre-algorithmes.pdf
livre-algorithmes.pdflivre-algorithmes.pdf
livre-algorithmes.pdf
 
Pricing of American options on stocks with discrete dividends
Pricing of American options on stocks with discrete dividendsPricing of American options on stocks with discrete dividends
Pricing of American options on stocks with discrete dividends
 
030225+seminar+gelo+diro.ppt
030225+seminar+gelo+diro.ppt030225+seminar+gelo+diro.ppt
030225+seminar+gelo+diro.ppt
 

Dernier

Chana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneChana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneTxaruka
 
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfVulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfSylvianeBachy
 
Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Gabriel Gay-Para
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx      Film   françaisPas de vagues.  pptx      Film   français
Pas de vagues. pptx Film françaisTxaruka
 
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxDIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxMartin M Flynn
 
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxPrésentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxJCAC
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfRiDaHAziz
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx   Film     françaisPas de vagues.  pptx   Film     français
Pas de vagues. pptx Film françaisTxaruka
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre françaisTxaruka
 
Cours de Management des Systèmes d'information
Cours de Management des Systèmes d'informationCours de Management des Systèmes d'information
Cours de Management des Systèmes d'informationpapediallo3
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 37
 
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfLa Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfbdp12
 
Apprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursApprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursStagiaireLearningmat
 
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...NaimDoumissi
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfRiDaHAziz
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 37
 
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 37
 

Dernier (18)

Chana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneChana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienne
 
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfVulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
 
Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx      Film   françaisPas de vagues.  pptx      Film   français
Pas de vagues. pptx Film français
 
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxDIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
 
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxPrésentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdf
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx   Film     françaisPas de vagues.  pptx   Film     français
Pas de vagues. pptx Film français
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre français
 
Cours de Management des Systèmes d'information
Cours de Management des Systèmes d'informationCours de Management des Systèmes d'information
Cours de Management des Systèmes d'information
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
 
Bulletin des bibliotheques Burkina Faso mars 2024
Bulletin des bibliotheques Burkina Faso mars 2024Bulletin des bibliotheques Burkina Faso mars 2024
Bulletin des bibliotheques Burkina Faso mars 2024
 
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfLa Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
 
Apprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursApprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceurs
 
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdf
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
 
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
 

Support Formation Samsung - Python - Session 2 - 2022.pptx

  • 2. PYTHON & Algorithme 1. Développement d’algorithme ‘Greedy approach’ 2. Développement d’algorithme ‘Divide-and-Conquer’ 3. La programmation dynamique 'Dynamic Programming' 4. Backtracking 5. Modules classiques sur Python et modules personnalisés 6. Les interfaces graphique Sur Python 7. Base de données et Python ‘MySQL’ 8. Traitement et visualisation de données 9. Projets 2
  • 3. Python & traitement de données - 2ème session J1 J2 J3 J4 J5 Formation Code/Pédagogie * Développement d'algorithme glouton 'Greedy Approach' * Développement d'algorithme 'Divide-and-Conquer' * Résolution d'un problème d'opimisation par la méthode algorithmique Programmation dynamique 'Dynamic Programming'. * Développement de la technique algorithmique Le retour sur trace 'Backtracking'. From unit 30 to unit 33 Formation Créativité * Exercices et Challenge avancés (Situations réelles) Formation Code * Découverte et manipulation des différents Modules et librairies sur Python : 1. Module Standards (Math, time, Random et Turtle, numpy...) 2. Module pesonnalisés. Unit 34 * Découverte Interface graphique (IHM) sur Python (Tkinter) * Manipulation et opérations sur les matrices. * Manipulation et administration des base de données 'MySql' Formation Créativité * Développement d'un mini-projet (II) Formation Code * Traitement et visualisation de données avec le module Pandas : 1. Séries. 2. DataFrame. * Oraganisation des données par la technqiue 'Tidy Data' * Time Series Data From unit 35 to unit 38 Formation Créativité * Développement d'un mini-projet (III). Atelier projet 'Partie I' * Projets encadré : - Analyse des données financières : développer les compétences d'analyse de données financières afin de résoudre les divers problèmes sociaux du monde réel. Unit 39 Atelier projet 'Partie II' * Projets encadré : - Etude, Analyse et visualisation des données relatives à la pandémie mondiale de Corona Unit 40 Atelier projet * Projets fin de formation 1. Méthodologie de travail 2. Choix des projets 3. Elaboration et présentation du cahier des charges 4. Développement du projet 5. Test, vérification et Validation 6. Présentation des projets. Quiz Global et feedbacks 3
  • 4. 1. Développement d’algorithme ‘Greedy approach’ : Dans cette partie, nous allons aborder la notion d'optimisation d'un problème. Un problème d'optimisation est un problème pour lequel on cherche la meilleure solution (selon un critère défini) dans un ensemble de solutions possibles. Quelques exemples de problèmes d'optimisation : • Rendre la monnaie avec un minimum de pièces. • Ranger le maximum d'éléments : sac à dos, colis dans un camion, etc. • Réservation de véhicules dans une société pour minimiser la taille du parc nécessaire. • Parcourir un ensemble de lieux en minimisant le temps ou la distance nécessaire. • Et d'autres. Note : On parle de solution optimale toute une solution qui fait partie des solutions possibles et qui est la meilleure des solutions selon le critère défini. 4
  • 5. 1. Développement d’algorithme ‘Greedy approach’ : Les algorithmes gloutons ‘Greedy approach’ sont souvent utilisés pour résoudre ces problèmes d'optimisation . On cherche une solution optimale en effectuant le meilleur choix possible à chaque étape de l'algorithme. Dans ce type de résolution, il n'y a pas de retour en arrière. Lorsqu'un choix est fait, il n'est pas modifié par la suite. On se retrouve donc à chaque étape, avec un problème de plus en plus petit à résoudre. Attention toutefois, cette méthode ne fournit pas systématiquement la solution optimale au problème proposé. • Pour un rendu de monnaie, le critère pour la solution optimale sera le nombre de pièces et/ou billets. • Pour un parcours de lieux, le critère peut être le nombre de lieux ou la distance parcourue (minimale, maximale). • Pour un système de réservation, le critère peut être le nombre de réservations ou la durée de réservation. • Etc. 5
  • 6. 1. Développement d’algorithme ‘Greedy approach’ : Projet : Coin Chnage Problem Nous allons étudier un problème d'optimisation classique : le problème du rendu de monnaie de manière optimale. On cherche à rendre la monnaie avec un nombre minimal de pièces et billets. • Pièces : 0,01 ; 0,02 ; 0,05 ; 0,1 ; 0,2 ; 1 ; 2 . • Billets : 5 ; 10 ; 20 ; 50 ; 100 ; 200; 500. On cherche par exemple à rendre 53 euros. On peut dans un tableau énumérer quelques solutions possibles et choisir celle qui minimise le nombre de pièces et de billets. Rendus de monnaie Nombre de pièces et de billets 5300×0,01€ 5 300 53×1€ 53 5×10+1×2+1×1€ 7 2×20+3×5+1×2€ 6 1×50+1×1+1×2€ 3 Voici notre système de monnaie (exprimé en euros) : 6
  • 7. 1. Développement d’algorithme ‘Greedy approach’ : Solution : Coin Change Problem def coin_change(coins, amount): changes = [] largest = 0 while amount > 0 : if amount < coins[largest]: largest +=1 else : changes.append(coins[largest]) amount -=coins[largest] return changes coins_client = list(map(int, input("Input coins : ").split())) a = sum(coins_client) coins = [500, 100, 50, 10] changes = coin_change(coins, a) print(changes, len(changes)) if (len(changes) == len(coins_client)): print("Vous n'avez pas besoin de réduire le nombre de pièce") print("Le nouveau nombre de pièces est ",len(changes),"au lieu de ",len(coins_client)) print("Le nombre de pièce réduit est : ", len(coins_client) - len(changes)) 7
  • 8. 1. Développement d’algorithme ‘Greedy approach’ : Bilan Un algorithme glouton consiste à effectuer des choix "locaux" (dans le cas du rendu de monnaie : rendre la plus grande valeur possible), choix qui ne seront plus jamais remis en cause mais qui permettent de réduire le problème à un problème plus "simple" (dans le cas du rendu de monnaie : rendre la somme diminuée de la valeur maximale) Les algorithmes gloutons constituent une méthode algorithmique, parmi d'autres, pour résoudre des problèmes, en particulier d'optimisation. Lorsqu'un algorithme glouton permet d'obtenir une solution, celle-ci n'est pas forcément la solution optimale au problème. Un algorithme glouton peut ne trouver aucune solution bien que des solutions existent. 8
  • 9. 2. Développement d’algorithme ‘Divide-and-Conquer’ : Le diviser pour régner est une méthode algorithmique basée sur le principe suivant : On prend un problème (généralement complexe à résoudre), on divise ce problème en une multitude de petits problèmes, l'idée étant que les "petits problèmes" seront plus simples à résoudre que le problème original. Une fois les petits problèmes résolus, on recombine les "petits problèmes résolus" afin d'obtenir la solution du problème de départ. Le paradigme "diviser pour régner" repose donc sur 3 étapes : • DIVISER : le problème d'origine est divisé en un certain nombre de sous-problèmes • RÉGNER : on résout les sous-problèmes (les sous-problèmes sont plus faciles à résoudre que le problème d'origine) • COMBINER : les solutions des sous-problèmes sont combinées afin d'obtenir la solution du problème d'origine. Les algorithmes basés sur le paradigme "diviser pour régner" sont très souvent des algorithmes récursifs. Nous avons étudié un de ces algorithmes basés sur le principe diviser pour régner : le tri-fusion 9
  • 10. Projet : Minimum Triangle Path Nous allons étudier un problème d'optimisation classique : le problème du rendu de monnaie de manière optimale. On cherche à rendre la monnaie avec un nombre minimal de pièces et billets. 2. Développement d’algorithme ‘Divide-and-Conquer’ : Étant donné une structure triangulaire de nombres, trouvez la somme minimale du chemin de haut en bas. À chaque étape, vous pouvez vous déplacer vers des numéros adjacents sur la ligne ci-dessous. 10
  • 11. Projet : Minimum Triangle Path Traverser l’approche naïve en parcourant tous les chemins possibles. Mais, cela coûte cher. Il y a deux manières d’atteindre la solution : 1 - La Mémorisation. 2 - De bas en haut : Commencez à partir des nœuds de la rangée du bas ; la somme de chemin min pour ces nœuds sont les valeurs des nœuds eux-mêmes. Et après cela, la somme de chemin minimale au ième nœud de la kème ligne serait le minimum de la somme de chemin de ses deux enfants + la valeur du nœud, c’est-à-dire : 2. Développement d’algorithme ‘Divide-and-Conquer’ : 11
  • 12. Solution : Minimum Triangle Path 2. Développement d’algorithme ‘Divide-and-Conquer’ : def find_minimum(row, col, triangle): if row == len(triangle): return 0 else : minimum = min (find_minimum(row+1, col, triangle), find_minimum(row+1, col+1, triangle)) return triangle[row][col] + minimum triangle = [ [2], [3,4], [6,5,7], [4,1,8,3] ] minimum = find_minimum(0, 0, triangle) print("The minimum cost is : ", minimum) 12
  • 13. 3. La programmation dynamique 'Dynamic Programming' : La programmation dynamique permet de résoudre plus efficacement des problèmes d’optimisation. La programmation dynamique consiste à résoudre un problème en le décomposant en sous-problèmes, puis à résoudre les sous-problèmes, des plus petits aux plus grands en stockant les résultats intermédiaires. Cette méthode a été introduite au début des années 1950 par Richard Bellman. Le triangle de Pascal : Principe En mathématiques, le triangle de Pascal est une présentation des coefficients binomiaux dans un triangle. Il fut nommé ainsi en l’honneur du mathématicien français Blaise Pascal. Il est connu sous l’appellation « triangle de Pascal » en Occident, bien qu’il fût étudié par d’autres mathématiciens, parfois plusieurs siècles avant lui. 13
  • 14. 3. La programmation dynamique 'Dynamic Programming' : Solution 1 : Algorithme récursif non optimisé def pascal_recur(n,p): if p==0:return 1 if p>n: return 0 else: return pascal_recur(n-1,p) + pascal_recur(n-1,p-1) def pascal(n): T = [[0] * (n+1) for p in range(n+1)] for n in range(n+1): for k in range(n+1): T[n][k] = pascal_recur(n,k) return T 14
  • 15. 3. La programmation dynamique 'Dynamic Programming' : Solution 2 : Algorithme avec mémorisation def trianglePascal(n): T = [[0] * (n+1) for p in range(n+1)] for n in range(n+1): if n == 0: T[n][0] = 1 else: for k in range(n+1): if k == 0: T[n][0] = 1 else: T[n][k] = T[n-1][k-1] + T[n-1][k] return T 15
  • 16. 4. Backtracking : Le retour sur trace (appelé aussi backtracking en anglais) est un algorithme qui consiste à revenir légèrement en arrière sur des décisions prises afin de sortir d'un blocage. La méthode des essais et erreurs constitue un exemple simple de backtracking. Le terme est surtout utilisé en programmation, où il désigne une stratégie pour trouver des solutions à des problèmes de satisfaction de contraintes. La résolution d’un problème par la méthode de backtracking repose sur la construction d’une solution partielle que l’on va améliorer afin de s’approcher de plus en plus de la solution finale. Si une solution partielle ne peut pas être améliorée, elle est abandonnée et l’on revient en arrière pour examiner d’autres solutions possibles. 16
  • 17. 4. Backtracking : PRINCIPE Dans l’utilisation du backtracking pour résoudre un problème particulier, nous avons besoin de deux choses :  Une procédure pour examiner une solution partielle (notée SP par la suite) afin de déterminer si : • Il s’agit d’une solution actuelle ACCEPTABLE. • Il s’agit d’une solution actuelle à ABANDONNER (elle ne respecte pas la règle du jeu). • Il faut poursuivre L’EXTENSION de la solution actuelle.  Une procédure pour ETENDRE la SP, générant une ou plusieurs solutions qui se rapprochent de la solution finale. Dans un algorithme de backtraking, on explore toutes les solutions possibles, quand une solution possible se termine en impasse, on revient en arrière et on teste d’autres solutions. 17
  • 18. 4. Backtracking : MISE EN ŒUVRE SUR LE PROBLEME DES N-REINES Pour résoudre le problème des N-reines, il faut considérer le cas de N=4. Le problème des 4 reines est le problème consistant à placer quatre reines sur un échiquier 4*4. Il s’agit de trouver la position de quatre reines sur un jeu d’échec de telle façon qu’aucune des reines ne puisse en attaquer une autre. En d’autres termes, il ne peut pas y avoir deux reines sur la même ligne, sur la même colonne et sur la même diagonale. La figure ci-contre représente une solution possible. Dans ce problème, il est assez facile d’examiner une SP : Si deux reines s’attaquent, il faut la rejeter. Si les huit quatre ne s’attaquent pas, on l’accepte. Autrement, on continue la procédure. 18
  • 19. 4. Backtracking : La méthode la plus simple consiste à placer la reine dans tous les emplacements possibles. Si une reine noire est placée à la position (0, 0) comme indiqué ci-dessous, vous pouvez essayer de placer la reine rouge dans toutes les positions possibles de la deuxième rangée. Les première et deuxième cases de la deuxième ligne ne peuvent pas être choisies. Cela est dû au fait que la reine noire, qui a déjà été placée, ne peut pas coexister avec une autre reine dans la même ligne/colonne ou diagonale. 19
  • 20. 4. Backtracking : On suit la même méthode, et on place les reines dans les bonnes cases jusqu’on trouve la bonne solution. La figure ci-contre présente une solution particulière. L'arbre de l'espace de recherche du problème des N-Queens peut être dessiné comme suit : 20
  • 21. 4. Backtracking : Pour implémenter la solution, on aura besoin de deux fonctions. La première fonction ‘promising()’ permet de vérifier si deux reines se trouvent dans la même ligne, colonne ou diagonale. Supposons que col[i] est le numéro de la colonne dans la i-ème ligne. Autrement dit, col = [1, 0, 2, 3] présente l'état suivant. Comme nous ne placerons les reines que dans des rangées différentes, nous pouvons alors éviter le chevauchement des reines. Afin de vérifier si les deux reines existent dans la même colonne, il faut vérifier la situation suivante. Afin de déterminer si les deux reines peuvent exister en diagonale, il faut vérifier la valeur absolue de la différence entre les rangées et les colonnes comme suit. 21
  • 22. 4. Backtracking : L'implémentation de la solution : Étant donné une liste de colonnes et l'indice i comme paramètres d'entrée, vérifiez si la i-ième colonne est prometteuse. La ligne sur laquelle la reine est déjà placée est la branche 0 à i - 1, elle parcourt donc la boucle for de 0 à I – 1 Pour chaque indice k, on vérifie s'il y a déjà différentes reines dans la même colonne, ou s'il y a différentes reines sur la diagonale. S'il y a une reine dans la même colonne ou dans sa diagonale, on retourne False. Sinon, on retourne Vrai. 22
  • 23. 4. Backtracking : L'implémentation de la solution : Avec i et col comme paramètres d'entrée, si la i-ème colonne n'est pas prometteuse, il retourne immédiatement une valeur. Si la i-ème colonne est prometteuse et que i est la dernière ligne, la solution a été trouvée, alors la liste col correspondante est entrée. Si la i-ème colonne est prometteuse et que i n'est pas la dernière ligne, alors on continue la recherche en profondeur. Avant de poursuivre la recherche en profondeur, placer la reine dans la colonne i+1ème. Puis on continue la recherche de la ligne i + 1. 23
  • 24. 4. Backtracking : L'implémentation de la solution : Après avoir reçu la valeur de N comme entrée de l'utilisateur, la liste col initialise la i-ème ligne à -1, et les éléments de la liste à -1 est donnée comme valeur de paramètre, puis on exécute la fonction n_queens(). 24
  • 26. 5. Modules classiques sur Python et modules personnalisés : On appelle “module” tout fichier constitué de code Python (c’est-à-dire tout fichier avec l’extension .py) importé dans un autre fichier ou script. Les modules permettent la séparation et donc une meilleure organisation du code. En effet, il est courant dans un projet de découper son code en différents fichiers qui vont contenir des parties cohérentes du programme final pour faciliter la compréhension générale du code, la maintenance et le travail d’équipe si on travaille à plusieurs sur le projet. En Python, on peut distinguer trois grandes catégories de module en les classant selon leur éditeur : • Les modules standards qui ne font pas partie du langage mais sont intégrés automatiquement par Python ; • Les modules développés par des développeurs externes qu’on va pouvoir utiliser ; • Les modules qu’on va développer nous mêmes. 26
  • 27. 5. Modules classiques sur Python et modules personnalisés : Pour installer les modules qui ne sont pas intégrés de base à Python, il faut commencer pour ouvrir votre console. Attention, nous ne parlons pas ici de la console Python mais bien de celle de votre système lui- même. Pour installer un module, il suffit maintenant d'utiliser : pip install nom_du_module pip install chart 27
  • 28. 5. Modules classiques sur Python et modules personnalisés : Un programme Python va généralement être composé d’un script principal qui va importer différents modules (c’est-à-dire différents fichiers Python) pour pouvoir les utiliser. Pour importer un module, on utilise la syntaxe import nom-de-mon-module. Pour utiliser les éléments du module dans notre script, il faudra préfixer le nom de ces éléments par le nom du module et un point. Cela permet d’éviter les conflits dans le cas où on aurait défini des éléments avec le même nom que ceux disponibles dans le module. Parfois, nous n’aurons besoin que de certains éléments précis dans un module. On va alors pouvoir se contenter d’importer ces éléments en particulier. Pou cela, on va utiliser l’instruction : from nom-du-module import un-element. 28
  • 29. 5. Modules classiques sur Python et modules personnalisés : 5.1. Les modules standards : Les modules Python standard à connaitre sont les suivants : • Le module datetime fournit des classes pour manipuler de façon simple ou plus complexe des dates et des heures ; • Le module json permet l’encodage et le décodage de données au format JSON ; • Le module math fournit un ensemble de fonctions permettant de réaliser des calculs mathématiques complexes ; • Le module os fournit une manière portable d’utiliser les fonctionnalités dépendantes du système d’exploitation ; • Le module random implémente des générateurs de nombres pseudo-aléatoires pour différentes distributions ; • Le module re fournit des opérations sur les expressions rationnelles similaires à celles que l’on trouve dans Perl ; • Le module sys fournit un accès à certaines variables système utilisées et maintenues par l’interpréteur, et à des fonctions interagissant fortement avec ce dernier ; • Les modules urllib.request et urllib.parse permettent d’ouvrir, de lire et d’analyser des URLs. 29
  • 30. 5. Modules classiques sur Python et modules personnalisés : 5.2. Les modules personnalisés : En Python, la création d'un module est très simple. Il suffit d'écrire un ensemble de fonctions (et/ou de constantes) dans un fichier, puis d'enregistrer ce dernier avec une extension .py (comme n'importe quel script Python). Remarque : La première fois qu'un module est importé, Python crée un répertoire nommé __pycache__ contenant un fichier avec une extension .pyc qui contient le bytecode, c'est-à-dire le code précompilé du module. 30
  • 31. 6. Les interfaces graphique Sur Python : Tkinter est un module de base intégré dans Python. L'un des avantages de Tkinter est sa portabilité sur les OS les plus utilisés par le grand public. Tkinter est installé par défaut. Pour créer un logiciel graphique vous devez ajouter dans une fenêtre des éléments graphiques que l'on nomme widget. Ce widget peut être tout aussi bien une liste déroulante que du texte. Les boutons Les boutons permettent de proposer une action à l'utilisateur. Dans l'exemple ci-dessous, on lui propose de fermer la fenêtre. bouton=Button(fenetre, text="Fermer", command=fenetre.quit) bouton.pack() Les labels Les labels sont des espaces prévus pour écrire du texte. Les labels servent souvent à décrire un widget comme un input. label = Label(fenetre, text="Texte par défaut", bg="yellow") label.pack() 31
  • 32. 6. Les interfaces graphique Sur Python : Case à cocher Les checkbox proposent à l'utilisateur de cocher une option. bouton = Checkbutton(fenetre, text="Nouveau?") bouton.pack() Entrée / input value = StringVar() value.set("texte par défaut") entree = Entry(fenetre, textvariable=string, width=30) entree.pack() Boutons radio Les boutons radio sont des cases à cocher qui sont dans un groupe et dans ce groupe seul un élément peut être sélectionné. value = StringVar() bouton1 = Radiobutton(fenetre, text="Oui", variable=value, value=1) bouton2 = Radiobutton(fenetre, text="Non", variable=value, value=2) bouton3 = Radiobutton(fenetre, text="Peu être", variable=value, value=3) bouton1.pack() bouton2.pack() bouton3.pack() 32
  • 33. 6. Les interfaces graphique Sur Python : Les listes Les listes permettent de récupérer une valeur sélectionnée par l'utilisateur. liste = Listbox(fenetre) liste.insert(1, "Python") liste.insert(2, "PHP") liste.insert(3, "jQuery") liste.insert(4, "CSS") liste.insert(5, "Javascript") liste.pack() Les alertes Pour pouvoir utiliser les alertes de votre os, vous pouvez importer le module tkMessageBox (Python 2). from tkMessageBox import * from tkinter.messagebox import * Exemple d'utilisation: def callback(): if askyesno('Titre 1', 'Êtes-vous sûr de vouloir faire ça?'): showwarning('Titre 2', 'Tant pis...') else: showinfo('Titre 3', 'Vous avez peur!') showerror("Titre 4", "Aha") Voici les alertes possibles: showinfo(), showwarning(), showerror() askquestion(), askokcancel(), askyesno() askretrycancel() 33
  • 34. 6. Les interfaces graphique Sur Python : Projet : Jeu de Morpion (Tik Tak Toe) Réaliser le projet suivant (cf image ci-dessous) : 34
  • 35. 6. Les interfaces graphique Sur Python : Projet : Solution du Jeu de Morpion (Tik Tak Toe) 35
  • 36. 6. Les interfaces graphique Sur Python : Projet : Solution du Jeu de Morpion (Tik Tak Toe) 36
  • 37. 6. Les interfaces graphique Sur Python : Projet : Solution du Jeu de Morpion (Tik Tak Toe) 37
  • 38. 7. Base de données et Python ‘MySQL’ : Une base de données, c'est quoi? Une base de données ( database en anglais) est un conteneur dans lequel il est possible de stocker des données de façon structurée. Cette structure permet au programme informatique connectée à celle-ci de faire des recherches complexes . Un langage standardisé -SQL- est dédié à cette structure et permet aussi bien de faire des recherches mais aussi des modifications ou des suppressions. Les logiciels de gestion de bases de données les plus utilisés aujourd'hui sont des SGBDR - Système de gestion de base de données relationnelles -, c'est à dire que les données sont liées les unes aux autres. Par exemple on peut établir que si on supprime une information, d'autres informations dépendantes de cette dernière sont elles-aussi automatiquement supprimées. Cela garantit une cohérence de données . 38
  • 39. 7. Base de données et Python ‘MySQL’ : Quels sont les SGBDR les plus connus? PostgreSQL PostgreSQL est la base de données à utiliser pour les gros projets. Stable et très puissant, il permet de gérer des Gigabytes de données sans problème. MySQL Mysql est l'un des SGBDR les plus utilisés au monde. Il est gratuit et très puissant. Il possède la double licence GPL et propriétaire depuis son rachat par Sun Microsystem eux-mêmes rachetés par Oracle (concurrent direct de MySQL). Le logiciel reste cependant entièrement gratuit et libre. Il répond à une logique client/serveur , c'est à dire que plusieurs clients (ordinateurs distants) peuvent se connecter sur un seul serveur qui héberge les données. MariaDB Le créateur de MySQL a crée MariaDB suite au rachat de MySQL pour continuer le projet en open source. SQLite SQLite est une bibliothèque écrite en C . SQLite est parfait pour les petits projets. Sa particularité est d'être intégré directement à un programme et ne répond donc pas à la logique client-serveur. Il est le moteur de base de données le plus distribué au monde puiqu'il est intégré à de nombreux logiciels grand public comme FireFox, Skype, Adobe, etc. Le logiciel pèse moins de 300 ko et peut donc être intégré à des projets tournant sur de petites supports comme les smartphones. Souvent aucune installation n'est nécessaire pour l'utiliser. Oracle Oracle Database est sous licence propriétaire, c'est à dire payant. Il est souvent utilisé pour les projets à gros budget nécessitant de réaliser des actions complexes. Microsoft SQL Server Produit Microsoft ne tourne que sur un OS Windows, payant n'apporte rien de plus que les logiciels concurrents libre de droit. Si vous avez trop d'argent à la limite... 39
  • 40. 7. Base de données et Python ‘MySQL’ : MySQL vs Postgre, Quel est le meilleur SGBDR entre postgre et mysql? Il existe toujours des faux débats pour savoir quelle technologie est meilleure que l'autre. Dire que MySQL est meilleur que Postgre n'a aucun sens, chacun est bon dans ce pour quoi il a été crée . On préférera MySQL pour des projets plus limités avec un faible nombre d'utilisateurs et un petit volume de données. Par contre pour des projets plus ambitieux avec des données dépassant la dizaine de téraoctets, on utilisera Postgre. Il faudra alors optimiser la configuration, etc.. 40
  • 41. 7. Base de données et Python ‘MySQL’ : SQLite : Notre premier exemple concernera SQLite. SQLite a été conçu pour être intégré dans le programme même. Pour des projets plus ambitieux / projets web le choix de MySQL serait plus judicieux. Utiliser le module SQLite Pour importer le module SQLite: import sqlite3 Créer une base de données avec SQLite La aussi pour créer une base de données avec SQLite, rien de plus simple: conn = sqlite3.connect('ma_base.db') Créer une table avec SQLite 41
  • 42. 7. Base de données et Python ‘MySQL’ : SQLite : Créer une table avec SQLite Voici un exemple de création de table : cursor = conn.cursor() cursor.execute(""" CREATE TABLE IF NOT EXISTS users( id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE, name TEXT, age INTERGER ) """) conn.commit() Supprimer une table avec SQLite Voici un exemple de création de table : cursor = conn.cursor() cursor.execute(""" DROP TABLE users """) conn.commit() Insérer des données Il existe plusieurs manières d'insérer des données, la plus simple étant celle-ci : cursor.execute(""" INSERT INTO users(name, age) VALUES(?, ?)""", ("olivier", 30)) 42
  • 43. 7. Base de données et Python ‘MySQL’ : SQLite : Récupérer des données Vous pouvez récupérer la première ligne correspondant à votre recherche à l'aide de la fonction fetchone. cursor.execute("""SELECT name, age FROM users""") user1 = cursor.fetchone() print(user1) Modeifier des entrées/données Pour modifier des entrées/données : cursor.execute("""UPDATE users SET age = ? WHERE id = 2""", (31,)) 43
  • 44. 7. Base de données et Python ‘MySQL’ : MySQL: MySQL est le logiciel idéal pour vos projets. Installation de MySQL pour python pip install mysql pip install MySQL-python pip install mysql-connector-python --allow-external mysql-connector-python Connexion au serveur MySQL import mysql.connector conn = mysql.connector.connect(host="localhost",user="root",password="XXX", database="test1") cursor = conn.cursor() conn.close() 44
  • 45. 7. Base de données et Python ‘MySQL’ : MySQL: Insérer des données Il existe deux manières d'ajouter des données dans une table: user = ("olivier", "34") cursor.execute("""INSERT INTO users (name, age) VALUES(%s, %s)""", user) user = {"name": "olivier", "age" : "34"} cursor.execute("""INSERT INTO users (name, age) VALUES(%(name)s, %(age)s)""", user) 45
  • 46. 7. Base de données et Python ‘MySQL’ : MySQL: Trouver des données avec mysql La logique est la même que pour SQLite: cursor.execute("""SELECT id, name, age FROM users WHERE id = %s""", ("5", )) rows = cursor.fetchall() for row in rows: print('{0} : {1} - {2}'.format(row[0], row[1], row[2])) 46
  • 47. 8. Traitement et visualisation de données : Python est un langage scientifique très mature. On y trouve des librairies pour de nombreuse applications, notamment le Machine Learning et l’analyse de data. La visualisation de données est une partie importante pour explorer nos données et pour communiquer les résultats. Par exemple, on pourra récupérer des données stockées dans une base et appliquer des méthodes de machine Learning avant d’exporter les résultats sous forme de fichiers csv pour être utilisés dans une application. 47
  • 48. 8. Traitement et visualisation de données : 1- L’importation des données et le prétraitement Nous allons utiliser pour cela une bibliothèque très complète : pandas : pour l’importation et le prétraitement des données. Il s’agit d’une bibliothèque qui vous permet de mettre en œuvre des DataFrame. import pandas as pd On va donc récupérer les données et les stocker dans un DataFrame afin de les transformer. Pour cela, on fait une requête directement dans la base de données et on remplit un DataFrame avec le résultat. frame = pd.read_sql_query('SELECT * FROM mytable', engine) 48
  • 49. Bibliothèque « Pandas »: Pandas fait partie des librairies de base pour la data science en Python. Pandas fournit des structures de données puissantes et simples à utiliser, ainsi que les moyens d'opérer rapidement des opérations sur ces structures. Dans ce chapitre, nous verrons l'intérêt de la librairie Pandas, ainsi que les opérations basiques sur l'objet phare de cette librairie, le dataframe. DataFrame est très similaire à certains concepts que l'on trouve en dehors du cadre du langage Python. Il est similaire aux tables des bases des données relationnelles. Pour installer la bibliothèque, on utilise : pip install pandas 8. Traitement et visualisation de données : 49
  • 50. Pandas nous facilite la manipulation des tableaux de tableaux sous forme d’un DataFrame: On importe pandas pour exploiter nos données: On peut changer les noms sur le DataFrame: Bibliothèque « Pandas »: 50
  • 51. Pour accéder à une colonne, on a deux syntaxes : Parcourir le DataFrame à l’aide d’une boucle For : Bibliothèque « Pandas »: 51
  • 52. Pour accéder à une position, par indice et par nom du ligne: Testez si les colonnes ont les caractéristiques demandées: Bibliothèque « Pandas »: 52
  • 53. L’opération précédente est très pratique pour filtrer des lignes: Pour inverser le résultat de l’opération, il suffit d’ajouter l’opérateur « ~ »: Bibliothèque « Pandas »: 53
  • 54. Pour ajouter des lignes à notre DataFrame: On a dupliqué la ligne 1 et maman pour les dédoublonner: Cette fonction renvoie juste un nouveau DataFrame, et il garde la source comme elle est. Bibliothèque « Pandas »: 54
  • 55. Pour afficher les noms des colonnes du DataFrame : Pour ajouter une colonne au DataFrame : Le nombre des lignes du DataFrame : Pour obtenir les valeurs distinctes d’une colonne : Bibliothèque « Pandas »: 55
  • 56. La fonction describe donne des statistiques diverses sur les données dans le DataFrame: L’argument include = « all », sert à inclure les colonnes non- numériques dans l’analyse. NaN une valeur définie pour représenter quelque chose qui n'est pas un nombre (Not a Number) alors que son type l'exige. Par exemple, on obtient NaN si on demande à Pandas de calculer la moyenne d'une colonne de texte ou bien si les valeurs de la colonnes sont manquantes. Bibliothèque « Pandas »: 56
  • 57. Pour renommer une colonne: Pour renommer une ligne: Bibliothèque « Pandas »: 57
  • 58. Supprimez une ligne, si inplace = false le DataFrame ne change pas l’origine: Supprimez une colonne, si inplace = false le DataFrame ne change pas l’origine : Bibliothèque « Pandas »: 58
  • 59. Pandas peut manipuler les tableaux croisés dynamiques: Bibliothèque « Pandas »: 59
  • 60. Créez un tableau croisé dynamique : Calculez la somme comme une fonction d’agrégation : Créez un tableau croisé dynamique avec une agrégation à plusieurs niveaux : Bibliothèque « Pandas »: 60
  • 61. Combinez deux dictionnaires de données dans un DataFrame: On peut exploiter des opérations de l’algèbre relationnelle (sélection): Bibliothèque « Pandas »: 61
  • 62. On peut exploiter des opérations de l’algèbre relationnelle (Union): Bibliothèque « Pandas »: On peut exploiter des opérations de l’algèbre relationnelle (Jointure) : 62
  • 63. On peut exploiter des opérations de l’algèbre relationnelle (Jointure): Bibliothèque « Pandas »: 63
  • 64. Lire un fichier csv: Lire des colonnes d’un fichier csv: Bibliothèque « Pandas »: 64
  • 65. 2- Les analyses en utilisant le machine Learning Une fois les données nettoyées, stockées dans un DataFrame et prêtes à être analysées, vous pouvez maintenant appliquer des outils de machine Learning (apprentissage automatique) et représenter les résultats par des visualisations. Les deux bibliothèques de référence pour cela sont scikit-learn et matplotlib. Elles sont toutes les deux extrêmement complètes et possèdent de nombreuses fonctionnalités pour python en data science. 8. Traitement et visualisation de données : 3- L’exportation des données Les informations importantes pour l’affichage en sortie sont les catégories de clients, on va donc uniquement exporter les centres des classes dans un fichier csv grâce aux outils de pandas. class_center.to_csv("centers.csv") 65
  • 66. l'utilisation de Matplotlib comme outil de visualisation dans les notebooks Jupyter. Pour commencer, mettons en place l'environnement de travail. Bibliothèque « Matplotlib »: 66
  • 67. La variable Fig correspond à un conteneur qui contient tous les objets (axes, labels, données, etc). Les axes correspondent au carré que l'on voit au-dessus, et qui contiendra par la suite les données du graphe. Bibliothèque « Matplotlib »: 67
  • 68. Maintenant, voyons un exemple un peu plus poussé. Bibliothèque « Matplotlib »: 68
  • 70. Dans la vie réelle, les données que nous sommes amenés à analyser sont souvent bruitées, c'est-à-dire qu'il existe une part d'incertitude sur leur valeur réelle. Il est extrêmement important d'en tenir compte non seulement lors de l'analyse des données, mais aussi quand on veut les présenter.. Bibliothèque « Matplotlib »: 70
  • 71. Données discrètes Dans le cas de données discrètes (des points), nous utilisons souvent les barres d'erreur pour représenter, pour chaque point, l'incertitude quant à sa valeur exacte. Souvent la longueur des barres correspond à l'écart type des observations empiriques. C'est chose aisée avec Matplotlib. Bibliothèque « Matplotlib »: 71
  • 72. Bibliothèque « Matplotlib »: Données continues Parfois, comme quand on essaie d'appliquer la régression par processus gaussien, nous avons besoin de représenter une incertitude sur une fonction continue. On peut le faire en utilisant la fonction plot conjointement avec la fonction fill_between. Mais nous allons voir plus tard dans ce chapitre comment le faire plus simplement avec la librairie Seaborn. 72
  • 73. Dans ce projet, on va explorer la bibliothèque Pandas qui a été développer au départ pour organiser et analyser les données financières. L’analyse des données financières est considérée la pratique la plus efficace dans l’analyse de données. Grace à la pratique au traitement de données financières de divers facteurs accumulés sur une période de temps, vous pouvez être suffisamment préparés à la plupart des types de données que vous verrez dans le travail du monde réel. 9. Projets : 9.1. Analyse des données financières : 73
  • 74. Maintenant, utilisons toutes les compétences que nous avons apprises jusqu'à présent pour résoudre les tâches suivantes. • Obtention de données financières à partir de référentiels de données distants. • Visualisation des données sur le cours des actions sur la base de données de séries chronologiques. • Visualisation des données de volume de transactions basées sur des données de séries chronologiques. • Mesurer le taux journalier simple. • Calcul du taux de rendement cumulatif quotidien simple. • Calcul du taux de rendement en déplaçant la période par mois. • Calcul de la moyenne mobile. • Analyser la corrélation entre chaque facteur de données financières Calculer la volatilité du cours des actions. 9. Projets : 9.1. Analyse des données financières : Nous avons choisi les données financières du marché des états unis, à cause de son grand impact sur l’économie mondiale. • SPY, il suit l’indice S&P 500. • IYW, il suit l’indice de bourse des entreprises technologiques américaines. • VT, il investit dans des entreprises de monde entier. • DBA, il suit l’offre, la demande et les prix de produits agricoles. • Taux obligatoire américain TLT. • PDBC, il suit l’offre et la demande et les prix de matières premières. • L’or IAU. 74
  • 75. 1. Récupération des données: • Créez une fonction get_stock_data, qui lit les données de stock à partir de Yahoo Finance, puis créez une colonne « Ticker » de l’indice 0 du dataframe nommé « data », et mettez "ticker" comme nom pour l’élément de données, et enfin, demandez l’intervalle du temps [start, end]. • Pour tester la fonction, entrez le ticker de Disney, « DIS» et affectez les résultats à une dataframe. • Étant donné que l'analyse sera basée uniquement sur le closing price « Close » de chaque ticker, pivotez dans la forme requise. 9. Projets : 9.1. Analyse des données financières : 75
  • 76. 9. Projets : 9.1. Analyse des données financières : 1. Récupération des données: 76
  • 77. 2. Création de dataframe: • Créez un dataframe pour chaque ticker (SPY, IYW, VT, DBA, TLT, PDBC, IAU). • Affichez les informations des dataframe créés. 9. Projets : 9.1. Analyse des données financières : 77
  • 78. 9. Projets : 9.1. Analyse des données financières : 2. Création de dataframe: • Pivotez les dataframes sur le closing price « Close ». • Concaténez les dataframes. 78
  • 79. 3. Visualisation des données: • Présentez graphiquement les données concaténées en utilisant ‘ggplot’. 9. Projets : 9.1. Analyse des données financières : 79
  • 80. 9. Projets : 9.1. Analyse des données financières : 3. Visualisation des données: • Tranchez la période de Corona, [‘’2020-2-1, ‘2020-7-31’]. 80
  • 81. 9. Projets : 9.1. Analyse des données financières : 3. Visualisation des données: • Présentez graphiquement la période tranchée. 81
  • 82. 9. Projets : 9.1. Analyse des données financières : 3. Visualisation des données: • Choisissez et comparez 3 types de personnalités en les présentant graphiquement. 82
  • 83. 4. Visualisation des données de volume sous la forme d'un graphique à barres: • Récupérez les données de matières premières (PDBC). 9. Projets : 9.1. Analyse des données financières : 83
  • 84. 9. Projets : 9.1. Analyse des données financières : 4. Visualisation des données de volume sous la forme d'un graphique à barres: • Supprimez tout les colonnes sauf celle du volume. 84
  • 85. 9. Projets : 9.1. Analyse des données financières : 4. Visualisation des données de volume sous la forme d'un graphique à barres: • Présentez graphiquement le volume. 85
  • 86. 5. Visualisation de deux ensembles de données sur le même graphique: • En exploitant les étapes 2 et 4, présentez les graphiques en utilisant subplot2grid. 9. Projets : 9.1. Analyse des données financières : 86
  • 87. 6. Calcul de la variation quotidienne en pourcentage en utilisant pandas.Series.shift(): • Décalez un jour pour obtenir le prix de clôture du jour de l’indice S&P 500. • Calculez sa variation quotidienne en pourcentage. 9. Projets : 9.1. Analyse des données financières : 87
  • 88. 9. Projets : 9.1. Analyse des données financières : 6. Calcul de la variation quotidienne en pourcentage en utilisant pandas.Series.shift(): • Présentez les résultats graphiquement. 88
  • 89. 9. Projets : 9.1. Analyse des données financières : 6. Calcul de la variation quotidienne en pourcentage en utilisant pandas.Series.shift(): • En décalant le jour, la première valeur est manquée, remplacez-la par 0. • Affichez les résultat sur un histogramme. 89
  • 90. 7. Analyse de la corrélation entre la variation quotidienne du prix des actions et les rendements cumulés: • Calculez sa variation quotidienne en pourcentage de l’ensemble des actions. • Calculez le rendement cumulé quotidien. 9. Projets : 9.1. Analyse des données financières : 90
  • 91. 9. Projets : 9.1. Analyse des données financières : 7. Analyse de la corrélation entre la variation quotidienne du prix des actions et les rendements cumulés: • Présentez graphiquement les rendements cumulés. 91
  • 92. 8. Analyse de la dispersion: • Calculez la corrélation entre les différentes actions. • Présentez graphiquement la corrélation en utilisant heatmap. • Présentez graphiquement la dispersion des deux actions (SPY, VT) en utilisant scatter. 9. Projets : 9.1. Analyse des données financières : 92
  • 93. 9. Projets : 9.1. Analyse des données financières : 8. Analyse de la dispersion: 93
  • 94. 9. Suivre l'évolution des actions sur une période donnée: • Calculez l’écart type mobile des variations quotidiennes. 9. Projets : 9.1. Analyse des données financières : 94
  • 95. 9. Projets : 9.1. Analyse des données financières : 9. Suivre l'évolution des actions sur une période donnée: • Présentez graphiquement l’écart type de (SPY, TLT, DBA). 95
  • 96. Dans ce projet, on va exploiter les données de vaccination contre le COVID-19, la base de données est collectée en temps réel par https://ourworldindata.org/ . Tout au long de ce projet, on va essayer d’obtenir des statistiques descriptives de quelques pays avec le plus grand nombre d'infections. On va exploiter des package de python pour afficher les infections de chaque pays sur la carte. 9. Projets : 9.2. Etude, Analyse et visualisation des données relatives au Covid19 : 96
  • 97. 1. Préparation des données:  Importez les données.  Affichez le résumé technique des données. 9. Projets : 9.2. Etude, Analyse et visualisation des données relatives au Covid19 : 97
  • 98. 9. Projets : 9.2. Etude, Analyse et visualisation des données relatives au Covid19 : 1. Préparation des données:  Convertissez la colonne « Day » à datetime et stockez-le dans une colonne « Date ».  Donner l’indice à la colonne Date.  Supprimer la colonne « Day ».  Afficher DataFrame.  Afficher le nombre de pays. 98
  • 99. 2. Manipulation des données:  Groupez les données par pays, et stockez les dans une nouvelle DataFrame.  Séparez les informations du groupe crée par clé et afficher-les.  Affichez le nom du groupe.  Affichez le nombre des lignes de chaque groupe (pays).  Affichez les 5 lignes de chaque group. 9. Projets : 9.2. Etude, Analyse et visualisation des données relatives au Covid19 : # Separate the information of the created group by key and print them. 99
  • 100. 2. Manipulation des données:  Stockez dans une nouvelle colonne le total de personnes vaccinées pour chaque pays. 9. Projets : 9.2. Etude, Analyse et visualisation des données relatives au Covid19 : # Separate the information of the created group by key and print them. 100
  • 101. On va visualiser par la suite les données sur la carte en utilisant la bibliothèque folium. Durant ce mini projet, on va essayer de représenter la situation mondiale du COVID-19 en changeant les couleurs des pays sur la carte en se basant sur le poids d’infections. Mais avant, on va détailler comment exploiter les données sur la carte en utilisant folium. 9. Projets : 9.2. Etude, Analyse et visualisation des données relatives au Covid19 : 101
  • 102. 1. Visualisation des données:  Installez la librairie .  Obtenir les données (latitude et longitude) a afficher d’après Google Maps.  Entrez les coordonnées (latitude et longitude) de localisation choisie.  Saisissez le zoom initial de la carte.  Sauvegardez la carte dans un fichier html.  Changez le style d’affichage de la carte, tiles = . • stamenterrain • stamentoner • stamenwatercolor • cartodbpositron • cartodbdark_matter • Openstreetmap (par défaut) 9. Projets : 9.2. Etude, Analyse et visualisation des données relatives au Covid19 : 102
  • 103. • pip installfolium • conda installfolium -c conda-forge: It is recommended to install using conda. 9. Projets : 9.2. Etude, Analyse et visualisation des données relatives au Covid19 : 1. Visualisation des données:  Installez la libraire .  Obtenir les données (latitude et longitude) a afficher d’après Google Maps.  Entrez les coordonnées (latitude et longitude) de localisation choisie. 103
  • 104. 9. Projets : 9.2. Etude, Analyse et visualisation des données relatives au Covid19 : 1. Visualisation des données:  Saisissez le zoom initial de la carte. 104
  • 105. 1. Visualisation des données:  Marquez une position sur la carte en utilisant une icone et un libellé descriptif.  Visualisez les données en colorant des zones sur la carte, au fur et à mesure que la valeur de l'information à délivrer augmente, la couleur peinte dans la zone correspondante devient plus foncée. 9. Projets : 9.2. Etude, Analyse et visualisation des données relatives au Covid19 : 105
  • 106. 2. Visualisez les données groupées pendant data manipulation en suivant la méthode étudiée aux étapes précédentes. 9. Projets : 9.2. Etude, Analyse et visualisation des données relatives au Covid19 : 106
  • 107. 107

Notes de l'éditeur

  1. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  2. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  3. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  4. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  5. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  6. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  7. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  8. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  9. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  10. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  11. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  12. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  13. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  14. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  15. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  16. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  17. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  18. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  19. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  20. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  21. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  22. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  23. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  24. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  25. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  26. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  27. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  28. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  29. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  30. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  31. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  32. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  33. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  34. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  35. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  36. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  37. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  38. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  39. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  40. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  41. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  42. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  43. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  44. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  45. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet
  46. Liens importants : https://openclassrooms.com/fr/courses/2818931-programmez-en-oriente-objet-avec-c/2818941-introduction-a-la-programmation-orientee-objet https://openclassrooms.com/fr/courses/4989236-apprenez-l-objet-avec-java/5009141-decouvrez-la-programmation-orientee-objet