Chapter 2 Introduction à Python 1

L’écriture de programmes (ou programmation) est une activité très créative et gratifiante. Vous pouvez écrire des programmes pour de nombreuses raisons, qu’il s’agisse de gagner votre vie, de résoudre un problème difficile d’analyse de données, de vous amuser ou d’aider quelqu’un d’autre à résoudre un problème.

Ce cours part du principe que tout le monde doit savoir programmer, et qu’une fois que vous saurez programmer, vous trouverez ce que vous voulez faire de vos nouvelles compétences.

Ce cours sera fait sur python et sera appliqué à l’analyse de données structurées. Mais avant tout commençons par un peu de lexiques !

À qui est destiné ce cours ?

cours de Python en analyse de données est destiné à un large public, notamment aux personnes qui souhaitent se spécialiser dans l’analyse de données. Ce peut être des débutants en programmation ou des personnes ayant déjà des connaissances de base en programmation et souhaitant découvrir les différentes méthodes d’analyse de données en utilisant Python.

Les destinataires typiques d’un tel cours peuvent inclure :

  • Les professionnels qui travaillent dans les domaines de la finance, de la vente, de la marketing, de la recherche scientifique, de la technologie de l’information, de la gestion de projet et de la prise de décision pourraient tous bénéficier d’une formation en analyse de données.

  • Les étudiants en statistique, en informatique, en mathématiques, en économie et en sciences sociales pourraient également être intéressés par un cours de data analyse. Tous les curieux qui veulent se lancer et développer leurs compétences en programmation et en raisonnement critique.

  • Les étudiants en sciences informatiques, en statistiques ou en sciences de la donnée.

Objectifs du cours

Le cours peut aider les participants à acquérir les compétences nécessaires pour manipuler les données, les nettoyer, les visualiser et les analyser efficacement, ainsi qu’à développer des algorithmes pour résoudre des problèmes complexes d’analyse de données.

Présentation de Python

Python est un langage de programmation interprété, populaire, facile à apprendre et puissant. Il a été créé en 1989 par Guido van Rossum et est devenu un des langages de programmation les plus utilisés dans le monde entier.

Les principales caractéristiques de Python incluent :

  • Syntaxe claire et concise : Python a une syntaxe simple et concise qui permet aux développeurs de créer du code facilement lisible et compréhensible.

  • Polyvalence : Python peut être utilisé pour un large éventail d’applications, notamment le développement web, la création de scripts, l’analyse de données, la science des données, l’apprentissage automatique, l’intelligence artificielle et plus encore.

  • Bibliothèques riches : Python a une grande communauté de développeurs et une bibliothèque riche de modules et de packages prêts à l’emploi, ce qui permet aux développeurs de gagner du temps et de la productivité en utilisant des fonctionnalités déjà testées et développées.

  • Interprété : Python est un langage interprété, ce qui signifie que le code peut être exécuté sans avoir besoin de compiler le code en machine.

  • Plateforme indépendante : Python peut être exécuté sur de nombreuses plates-formes, telles que Windows, macOS et Linux, ce qui le rend facile à utiliser sur plusieurs systèmes d’exploitation.

En raison de ses caractéristiques puissantes, Python est souvent utilisé pour les projets de développement de logiciels, les applications de traitement de données, les applications d’analyse de données et les applications de science des données.

Présentation de l’IDE

TODO : À FAIRE ET METTRE DES SCREEN SHOOTS

Let’s dive in !

Python est un langage de programmation très simple à appréhender. Généralement, la première chose à faire quand on fait un programme c’est d’assigner une valeur à des variables que l’on va utiliser dans la suite de notre script.

2.1 Valeur

Une valeur est l’élément de base dans un programme. Elle peut être sous plusieurs formes, elle peut être un chiffre, une chaîne de caractères, un tableau de données etc. Une valeur est souvent assignée à une variable. La variable va alors contenir cette valeur et sera utilisée à chaque fois qu’on veut faire référence à la valeur.

2.2 Variable

Comme dit précédemment, une variable est un objet permettant de stocker une information, une valeur en mémoire en lui donnant un nom symbolique. Le fait de donner à une variable une valeur s’appelle l’assignation. Cette assignation de fait de la manière suivante :

salutation = "Hello World !" # On assigne à la variable salutation la valeur "Hello World !"
age = 25 # On assigne à la variable age la valeur 25
quart = 1/4 # on assigne à la variable quart la valeur 1/4

print(salutation) # On va afficher la valeur qui est contenue dans la variable salutation
#print(age) # On affiche la valeur de la variable age
## Hello World !

Dans les exemples précédents, on faisait de l’assignation directe, on a affecté aux variables directement des valeurs. On peut faire de l’assignation multiple (plusieurs variables en même temps) ou de l’assignation parallèle (à partir de la valeur d’une autre variable)

# Assignation parallèle
prenom = "Mounir" # On affecte une valeur à prenom
surnom = prenom # Puis on affecte à la variable surnom la valeur de prenom

print(surnom)
## Mounir
# Assignation multiple
prenom, age = "Mounir", 75

print(prenom, "a", age, "ans.")
## Mounir a 75 ans.

Notez bien que pour commenter un code, il suffit de mettre # avant la ligne à commenter. Dans un script, tout ce qui suit le symbole # est ignoré par l’interpréteur jusqu’à la fin de la ligne et est considéré comme un commentaire.

Quand faut-il commenter son code ?

  • Quand il y a des chances que vous oubliez comment vous avez approché le problème

  • Quand il y a plus d’une façon de résoudre un problème

  • Quand vous pensez que les autres personnes ne comprendront pas forcément votre approche au problème, pour expliquer votre démarche aux autres personnes qui liront votre code.

2.2.1 Types de variables

En fonction de la valeur que prend la variable, elle peut être de plusieurs types !

Voici une vue globale des types de variables sur python

var_types

Pour l’instant on ne va pas passer en revue tous les types de variables. On va juste nous intéresser aux plus basiques et simples qui sont les int, float, list, str et bool.

Le type

  • int fait référence aux variables avec une valeur entière (integer)

  • float aux valeurs continues

  • list aux listes

  • bool aux valeurs booléennes (True or False)

  • str aux chaines de caractères (string)

Pour connaître le type d’une variable, il suffit d’utiliser la fonction type()

print("Le type de la variable prenom est : ", type(prenom))
print("Le type de la variable age est : ", type(age))
print("Le type de la variable quart est : ", type(quart))
print("Une variable qui a comme valeur : ", [2, 4, "Hello"], "est de type : ", type([2, 4, "Hello"]))
## Le type de la variable prenom est :  <class 'str'>
## Le type de la variable age est :  <class 'int'>
## Le type de la variable quart est :  <class 'float'>
## Une variable qui a comme valeur :  [2, 4, 'Hello'] est de type :  <class 'list'>

Note : Les variables en chaines de caractères sont toujours définies avec une valeur entre guillemets.

nombre = '2' # On définit une variable avec des guillemets
type(nombre) # On cherche son type
## <class 'str'>

Activité

2.2.2 Principes généraux pour nommer une variable

Nommer une variable peut sembler simple à première vue mais c’est une étape très importante lorsque l’on fait un script. En effet, on manipule plusieurs variables dans un programme d’où l’intérêt de bien les nommer pour les reconnaître.

Pour avoir un code lisible, clair et qui respecte les conventions (non officielles) de nommage des développeurs, voici quelques conseils et éléments à prendre en compte quand vous nommez vos variables.

Un nom de variable :

  • peut contenir des lettres, des chiffres et underscore

  • doit absolument commencer par une lettre

  • doit différencier les majuscules et minuscules : variable, Variable et VARIABLE sont donc 3 variables différentes

  • ne peut être les mots suivant car sont essentiellement des noms de fonctions qui existent déjà :and del from None True as elif global nonlocal try assert else if not while break except import or with class False in pass yield continue finally is raise async def for lambda return await

2.2.3 Conversion des variables

TODO : NE PAS OUBLIER LES LISTES

On peut aussi et heureusement convertir les variables d’un type à un autre.

La conversion se fait en utilisant :

  • int() pour convertir en entier (ne marche qui si on veut convertir une valeur qui peut être numérique, donc constituée de chiffres)

  • str() pour convertir en chaîne de caractères

  • float() pour convertir en valeur décimale, elle a les mêmes contraintes que la fonction ìnt()

x = 12.5
y = '213A'
z = 1

xx = int(x) # Conversion de x en entier
zz = str(z) # Conversion de z en caractères
print('La valeur de x est', xx, 'et son type est', type(xx))
print('La valeur de z est', zz, 'et son type est', type(zz))
## La valeur de x est 12 et son type est <class 'int'>
## La valeur de z est 1 et son type est <class 'str'>

On ne le voit pas mais z a changé de tête

zz
## '1'

Et si on essaye maintenant de convertir y en int

Comme on si entendait, cette conversion est impossible à faire.

En résumé : Toutes les variables numériques sont convertibles en caractères mais la réciproque n’est pas toujours vraie. Activité

2.3 Les opérateurs

2.3.1 Les opérateurs arithmétiques

Les opérateurs arithmétiques sont utilisés pour faire des opérations avec les variables.

Les différents opérateurs sont :

  • Les opérations mathématiques de base (addition +, soustraction -, multiplication *, division /, puissance **)

  • Quotient entier //

  • Reste de la division %

  • Addition incrémentée += et soustraction incrémentée -=

w, x, y, z = "brainstormers", 225, "the", 5

print("La somme de", x, "et", z, "est", x+z) 
print("Le quotient de", x, "et", z, "est", x/z) 
print(z, "puissance", z, "=", z**z)
print("La somme de", y, "et", w, "est", y+w) 
zz = z
zz+=10
print("En incrementant", z, "de 10, on a :", zz)
## La somme de 225 et 5 est 230
## Le quotient de 225 et 5 est 45.0
## 5 puissance 5 = 3125
## La somme de the et brainstormers est thebrainstormers
## En incrementant 5 de 10, on a : 15

2.3.2 Les opérateurs logiques de comparaison de valeurs

Les opérateurs logiques servent à comparer des valeurs, ils retournent des booléens.

Les plus utilisés sont :

  • Égal ==

  • Strictement inférieur <, strictement supérieur >

  • Inférieur ou égal <=, supérieur ou égal >=

  • Différent !=

  • Et and ou &

  • Ou or ou |

  • Négation ~

Remarque :

  • Il est courant de se tromper et de confondre = et ==, le premier est utilisé pour faire de l’assignation et le second pour faire de la comparaison.

  • Une autre attention doit être apportée aux opérateurs <= et >= à ne pas confondre avec respectivement =< et =>. Un mémo technique est de se rappeler qu’il y a toujours un inférieur < ou un supérieur >avant le signe égal =.

note = 15.75
print('note >= 20 :', note >= 20)
print('note == 15.75 :', note == 15.75)
## note >= 20 : False
## note == 15.75 : True

Activité

2.4 If statements (les conditions)

Dans un script, on peut être dans des situations où on veut exécuter certaines parties du programme uniquement lorsque des conditions sont remplies.

Pour vérifier qu’une condition est remplie, on peut la tester dans l’expression suivante avec le mot clé if suivi de :

if condition :
  instruction_1
  instruction_2
      ...
  instruction_n

Le bloc indenté sous l’instruction if n’est exécuté que lorsque la condition est remplie (True).

C’est quoi l’indentation

L’indentation en Python est un aspect important de la syntaxe de ce langage. L’indentation définit la structure du code et est utilisée pour délimiter les blocs de code. Pour délimiter un bloc de code, vous devez décaler toutes les instructions dans ce bloc par le même nombre d’espaces.

En général, l’indentation en Python est une caractéristique qui aide à rendre le code plus lisible et plus facile à comprendre. C’est également une caractéristique qui aide à éviter les erreurs de syntaxe et de logique dans le code.

temperature = 45

if temperature > 30:
  print("On est en été")
## On est en été

Toutefois, on peut vouloir aussi exécuter des instructions lorsque la condition n’est pas remplie. Ceci se fait à l’aide du mot clé else

if condition:
  instruction_1
  instruction_2
      ...
  instruction_n
  
else:
  
  instruction_11
  instruction_22
      ...
  instruction_nn
temperature = 25

if temperature > 30:
  print("On est en été")
else:
  print("On n'est pas en été")
## On n'est pas en été

On n’est pas limité à 2 évènements possibles, on peut faire plusieurs conditions. On crée de nouvelles conditions avec le mot clé elif

if condition:
  instruction_1
  instruction_2
      ...
  instruction_n
  
elif:
  
  instruction_11
  instruction_22
      ...
  instruction_nn
  
else:
  
  instruction_111
  instruction_222
      ...
  instruction_nnn
# Essayer la fonction input()
note = -34

if not isinstance(note, (int, float)) or note < 0 : # On regarde si la note 
                                                   # n'est pas un nombre entier ou décimal
                                                   # ou si elle est négative
  print("La note entrée est invalide")
elif note >= 90 :
    print("Vous avez obtenu une note A.")
elif 80 <= note < 90 :
    print("Vous avez obtenu une note B.")
elif 70 <= note < 80 :
    print("Vous avez obtenu une note C.")
elif 60 <= note < 70 :
    print("Vous avez obtenu une note D.")
else :
    print("Vous avez obtenu une note F.")
## La note entrée est invalide

Activité