0% ont trouvé ce document utile (0 vote)
0 vues44 pages

chapitre numpy

Ce document présente une introduction à la bibliothèque NumPy en Python, en mettant l'accent sur ses structures de données, notamment les ndarrays, et leur utilisation pour l'analyse de données. Il aborde des concepts tels que la vectorisation, la sélection et le tranchage d'ndarrays, ainsi que des opérations mathématiques et statistiques. Enfin, il décrit comment lire des fichiers CSV et utiliser l'indexation booléenne pour filtrer des données.

Transféré par

salahmanai506
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
0 vues44 pages

chapitre numpy

Ce document présente une introduction à la bibliothèque NumPy en Python, en mettant l'accent sur ses structures de données, notamment les ndarrays, et leur utilisation pour l'analyse de données. Il aborde des concepts tels que la vectorisation, la sélection et le tranchage d'ndarrays, ainsi que des opérations mathématiques et statistiques. Enfin, il décrit comment lire des fichiers CSV et utiliser l'indexation booléenne pour filtrer des données.

Transféré par

salahmanai506
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Programmation Python

Anis Cherfi
Les fondamentaux: Pandas et NumPy
Numpy: Introduction
Lorsqu'il s'agit de programmer en Python, les bibliothèques sont là où se trouve le véritable pouvoir. Comme les plugins
ou les extensions, les bibliothèques déverrouillent votre code et le rendent plus efficace. Avec quelques principes de
base de la programmation Python, vous pouvez utiliser des bibliothèques pour une analyse et une visualisation de
données hautes performances. Dans cette leçon, nous allons passer en revue l'une des bibliothèques les plus conviviales:
NumPy.

Anis Cherfi - Atelier de programmation 2023/2024 3


Numpy: Ndarrays
La structure de données de base dans NumPy est le ndarray ou
tableau à n dimensions. En programmation, un tableau décrit une
collection d'éléments, semblable à une liste. Le mot n-
dimensionnel fait référence au fait que les ndarrays peuvent avoir
une ou plusieurs dimensions. Nous commencerons par travailler
avec des ndarrays unidimensionnels (1D).

Pour utiliser la bibliothèque NumPy, nous devons d'abord l'importer. Il est courant
d'importer NumPy en utilisant l'alias np :

Ensuite, nous pouvons directement convertir une liste en ndarray en utilisant le constructeur [Link]().

Anis Cherfi - Atelier de programmation 2023/2024 4


Numpy: Vectorisation
Ndarrays et la bibliothèque NumPy facilitent la manipulation et l'analyse des données. Pourquoi?
En utilisant Python standard, nous pourrions envisager d'utiliser des listes de listes pour représenter des ensembles de
données. Bien que les listes de listes fonctionnent avec de petits ensembles de données, elles ne sont pas très bonnes
pour les ensembles de données plus volumineux.
Regardons un exemple impliquant deux colonnes de données. Chaque ligne contient deux nombres que nous voulons
additionner. En utilisant Python standard, nous pourrions utiliser une structure de liste de listes pour stocker nos
données, et nous pourrions utiliser des boucles for pour parcourir ces données :

Anis Cherfi - Atelier de programmation 2023/2024 5


Numpy: Vectorisation
Notre ordinateur aurait besoin de huit cycles de processeur pour traiter les huit lignes de nos données.

La bibliothèque NumPy tire parti d'une fonctionnalité de processeur appelée Single Instruction Multiple Data (SIMD)
pour traiter les données plus rapidement. SIMD permet à un processeur d'effectuer la même opération sur plusieurs
points de données dans un seul cycle de processeur :

Par conséquent, l'utilisation de NumPy ne prendrait que deux


cycles de processeur, ce qui le rend quatre fois plus rapide que
Python standard seul. Nous appelons ce concept de
remplacement des boucles for par des opérations appliquées à
plusieurs points de données à la fois vectorisation, et les
ndarrays rendent la vectorisation possible.

Anis Cherfi - Atelier de programmation 2023/2024 6


Numpy: Vectorisation
Jusqu'à présent, nous n'avons pratiqué que la création de ndarrays unidimensionnels, mais les ndarrays peuvent
également être bidimensionnels :

Utilisez shape pour trouver les dimensions du tableau.

Utilisez shape pour trouver les dimensions du tableau.

Anis Cherfi - Atelier de programmation 2023/2024 7


Numpy: NYC Taxi-Airport Data
Pour explorer les ndarrays bidimensionnels (2D), nous analyserons les données sur les trajets en taxi de la ville de New
York publiées par la ville de New York.

Nous ne travaillerons qu'avec un sous-ensemble de ces données : environ 90 000 trajets en taxi jaune vers et depuis les
aéroports de New York entre janvier et juin 2016. Vous trouverez ci-dessous des informations sur les colonnes
sélectionnées de l'ensemble de données :
• pickup_year : l'année du voyage
• pickup_month : le mois du voyage (janvier est le 1er, décembre est le 12)
• pickup_day : le jour du mois du voyage
• pickup_location_code : l'aéroport ou l'arrondissement où le voyage a commencé
• dropoff_location_code : l'aéroport ou l'arrondissement où le trajet s'est terminé
• trip_distance : la distance du trajet en miles
• trip_length : la durée du trajet en secondes
• fare_amount : le tarif de base du voyage, en dollars
• total_amount : le montant total facturé au passager, y compris tous les frais, péages et pourboires

Vous pouvez trouver des informations sur toutes les colonnes dans le dataset data dictionary.
Anis Cherfi - Atelier de programmation 2023/2024 8
Numpy: NYC Taxi-Airport Data
Convertissons notre fichier CSV en un ndarray NumPy !

Instructions
• Utilisez le module csv de Python pour importer le fichier nyc_taxis.csv et le convertir en
une liste de listes contenant des valeurs flottantes.
• Ajoutez une ligne de code utilisant le constructeur [Link]() pour convertir la
variable converted_taxi_list en un tableau numérique NumPy.
• Affectez le résultat à la variable taxi. Affectez la forme de taxi à taxi_shape. Imprimez le
résultat.

Anis Cherfi - Atelier de programmation 2023/2024 9


Numpy: NYC Taxi-Airport Data
Convertissons notre fichier CSV en un ndarray NumPy !

Correction

2
3
Anis Cherfi - Atelier de programmation 2023/2024 10
Sélectionner et Trancher un Ndarrays
Comparons le travail avec ndarrays et liste de
listes pour sélectionner une ou plusieurs lignes
de données :

Comme nous le voyons, nous pouvons


sélectionner des lignes dans des ndarrays de
manière très similaire aux listes de listes

Anis Cherfi - Atelier de programmation 2023/2024 11


Sélectionner et Trancher un Ndarrays
Voici comment nous sélectionnons un seul élément dans un tableau 2D :

Avec une liste de listes, nous utilisons deux paires distinctes de crochets dos à dos. Avec un ndarray NumPy, nous
utilisons une seule paire de crochets avec des emplacements de ligne et de colonne séparés par des virgules

Anis Cherfi - Atelier de programmation 2023/2024 12


Sélectionner et Trancher un Ndarrays
Avec une liste de listes, nous devons utiliser une boucle for pour extraire des colonnes spécifiques et les ajouter à une
nouvelle liste. Avec ndarrays, le processus est beaucoup plus simple. Nous utilisons à nouveau des crochets simples
avec des emplacements de ligne et de colonne séparés par des virgules, mais nous utilisons deux points (:) pour les
emplacements de ligne, ce qui nous donne toutes les lignes.

Anis Cherfi - Atelier de programmation 2023/2024 13


Sélectionner et Trancher un Ndarrays
Si nous voulons sélectionner une
tranche 1D partielle d'une ligne ou
d'une colonne, nous pouvons
combiner une seule valeur pour une
dimension avec une tranche pour
l'autre dimension :

Anis Cherfi - Atelier de programmation 2023/2024 14


Sélectionner et Trancher un Ndarrays
si nous voulons sélectionner une tranche 2D, nous pouvons utiliser des tranches pour les deux dimensions

Anis Cherfi - Atelier de programmation 2023/2024 15


Numpy: NYC Taxi-Airport Data
A partir du taxi ndarray :

Instructions
• Sélectionnez la ligne à l'index 0. L'affecter à row_0.
• Sélectionnez chaque colonne des lignes d'indice 391 à 500 inclus. Les affecter à
lignes_391_à_500.
• Sélectionnez l'élément à l'indice de ligne 21 et à l'indice de colonne 5. L'affecter à
ligne_21_colonne_5.
• Sélectionnez chaque ligne pour les colonnes aux indices 1, 4 et 7. Affectez-les aux
colonnes_1_4_7.
• Sélectionner les colonnes aux indices 5 à 8 inclus pour la ligne à l'indice 99. Attribuez-les
à row_99_columns_5_to_8. Sélectionnez les lignes aux indices 100 à 200 inclus pour la
colonne à l'indice 14. Affectez-les à lignes_100_à_200_colonne_14.
Anis Cherfi - Atelier de programmation 2023/2024 16
Numpy: opérateur mathématique
Pure Python Numpy (vector addition)

Anis Cherfi - Atelier de programmation 2023/2024 17


Numpy: opérateur mathématique
Nous pouvons utiliser n'importe lequel des opérateurs numériques Python standard avec des vecteurs, y compris les
suivants :

• vecteur_a + vecteur_b — addition


• vector_a - vector_b — soustraction
• vector_a * vector_b — multiplication (sans rapport avec la multiplication vectorielle utilisée en algèbre linéaire).
• vecteur_a / vecteur_b – division

Lorsque nous effectuons ces opérations sur deux vecteurs 1D, les deux vecteurs doivent avoir la même forme.

Anis Cherfi - Atelier de programmation 2023/2024 18


Numpy: Statistiques
Les ndarrays NumPy ont des méthodes pour de nombreux calculs différents. Voici quelques-unes des principales
méthodes :
• [Link]() pour calculer la valeur minimale
• [Link]() pour calculer la valeur maximale
• [Link]() pour calculer la valeur moyenne ou moyenne
• [Link]() pour calculer la somme des valeurs

Vous pouvez voir la liste complète des méthodes ndarray dans la documentation NumPy ndarray.

NB: Il est important de se familiariser avec la documentation


car il n'est pas possible de se souvenir de la syntaxe de chaque
variante de chaque bibliothèque de science des données.
Cependant, si vous vous souvenez de ce qui est possible et que
vous pouvez lire la documentation, vous pourrez toujours vous
refamiliariser avec elle quand vous en aurez besoin.

Anis Cherfi - Atelier de programmation 2023/2024 19


Numpy: Statistiques
Nous calculerons des statistiques pour les ndarrays 2D. Si nous utilisons
la méthode [Link]() sur un ndarray 2D sans aucun paramètre
supplémentaire, il renverra une seule valeur, tout comme un tableau 1D :

Si nous voulons trouver la valeur maximale de chaque ligne ? Nous devons


utiliser le paramètre axis et spécifier une valeur de 1 pour indiquer que
nous voulons calculer la valeur maximale pour chaque ligne.

Anis Cherfi - Atelier de programmation 2023/2024 20


Numpy: Statistiques
Si nous voulons trouver la valeur maximale de chaque colonne, nous
utiliserons une valeur d'axe de 0 :

Nous avons appris ce qui suit :

• Comment la vectorisation accélère notre code


• À propos des tableaux à n dimensions et des ndarrays de NumPy
• Comment sélectionner des éléments, des lignes, des colonnes, des tranches 1D et des tranches 2D
spécifiques à partir de ndarrays
• Comment appliquer des calculs simples à des ndarrays entiers
• Comment utiliser des méthodes vectorisées pour effectuer des calculs sur l'un ou l'autre des axes de
ndarrays
Anis Cherfi - Atelier de programmation 2023/2024 21
Numpy: Indexation booléenne
NumPy facilite la sélection des données et inclut un certain nombre de fonctions qui
simplifient le calcul des statistiques sur les différents axes (ou dimensions).

Par exemple, supposons que nous voulions savoir combien de trajets en taxi les usagers
ont effectués chaque mois ? Ou quel aéroport est le plus fréquenté ? Pour cela, nous
allons apprendre une nouvelle technique : l'indexation booléenne.

Anis Cherfi - Atelier de programmation 2023/2024 22


Numpy: Lire un fichier csv
Nous utilisons la fonction [Link]() pour lire les fichiers dans les ndarrays NumPy:

• filename : un argument de position, généralement une chaîne représentant le chemin d'accès au


fichier texte à lire
• delimiter : un argument nommé, spécifiant la chaîne utilisée pour séparer chaque valeur

Anis Cherfi - Atelier de programmation 2023/2024 23


Numpy: Lire un fichier csv
Nous convertissons toutes les valeurs en Float avant de convertir la liste des listes en ndarray. C'est parce que NumPy
ndarrays ne peut contenir qu'un seul type de données.

Nous pouvons utiliser l'attribut [Link] pour voir le type de données interne.

NumPy a choisi le type float64, car il permettra de lire la plupart des valeurs de notre
CSV. Vous pouvez considérer le type float64 de NumPy comme identique au type float
de Python (le "64" fait référence au nombre de bits utilisés pour stocker la valeur sous-
jacente).

Anis Cherfi - Atelier de programmation 2023/2024 24


Numpy: Lire un fichier csv
NaN est l'acronyme de Not a Number — cela signifie que la
valeur ne peut pas être stockée sous forme de nombre. C'est
similaire à la valeur null, comme Python's None Constant.

Nous voyons le plus souvent NaN lorsqu'une valeur est


manquante.

Nous pouvons passer un paramètre supplémentaire, skip_header, à la fonction


[Link]().
Le paramètre skip_header accepte un nombre entier — le nombre de lignes depuis le
début du fichier à ignorer. Notez que comme cet entier doit être le nombre de lignes et
non l'index, ignorer la première ligne nécessiterait une valeur de 1 et non de 0.

Anis Cherfi - Atelier de programmation 2023/2024 25


Numpy: NYC Taxi-Airport Data
A partir du fichier nyc_taxis.csv :

Instructions
• Utilisez la fonction [Link]() pour lire à nouveau le fichier nyc_taxis.csv dans
NumPy, mais cette fois-ci, sautez la première ligne. Attribuez le résultat à taxi.
• Attribuez la forme de taxi à taxi_shape.

Anis Cherfi - Atelier de programmation 2023/2024 26


Numpy: Boolean array
Maintenant, concentrons-nous sur la méthode la plus puissante pour indexer les données : le tableau
booléen (Boolean array). Un tableau booléen, comme son nom l'indique, est un tableau de valeurs
booléennes. Nous appelons parfois des tableaux booléens des Boolean vectors ou des Boolean masks.
Vous vous souviendrez peut-être que le type booléen (ou bool) est un type Python intégré qui peut être l'une
des deux valeurs uniques suivantes :
• True
• False
Nous utilisons également des valeurs booléennes lorsque
nous travaillons avec des opérateurs de comparaison Python
tels que == (égal) > (supérieur à), < (inférieur à),
!= (différent de). Voici quelques exemples d'opérations
booléennes simples :

Anis Cherfi - Atelier de programmation 2023/2024 27


Numpy: Boolean array
Lorsque nous parlons de mathématiques vectorielles, une opération
entre un ndarray et une seule valeur donne un nouveau ndarray :

L'opération + 10 s'applique à chaque valeur du tableau.

Anis Cherfi - Atelier de programmation 2023/2024 28


Numpy: Boolean Arrays
Comment indexer (ou sélectionner) à l'aide de tableaux booléens, appelés Boolean indexing?

Pour indexer à l'aide de notre nouveau tableau booléen,


nous l'insérons simplement entre crochets, comme nous
le ferions avec nos autres techniques de sélection :

Anis Cherfi - Atelier de programmation 2023/2024 29


Numpy: Boolean Arrays
Le tableau booléen agit comme un filtre, de sorte que les valeurs correspondant à True
font partie du résultat et les valeurs correspondant à False sont supprimées.

Instructions
[Link] le nombre de courses dans le tableau nd taxi qui datent de février :
• Créez un tableau booléen, february_bool, qui évalue si les éléments de pickup_month sont égaux à 2
• Utilisez le tableau booléen february_bool pour indexer pickup_month. Affectez le résultat à february.
• Utilisez l'attribut [Link] pour trouver le nombre d'éléments dans february. Affectez le résultat à
february_rides.
Une fois votre code exécuté, utilisez l'inspecteur de variables pour afficher le nombre de trajets
pour le mois de février.

Anis Cherfi - Atelier de programmation 2023/2024 30


Numpy: Boolean Arrays

Anis Cherfi - Atelier de programmation 2023/2024 31


Numpy: Indexation 2D ndarrays
Lorsque vous travaillez avec des ndarrays 2D, vous pouvez utiliser l'indexation booléenne en combinaison
avec d'autres méthodes d'indexation. La seule limitation est que le tableau booléen doit avoir la même
longueur que la dimension que vous indexez.
Regardons quelques exemples :

Anis Cherfi - Atelier de programmation 2023/2024 32


Numpy: Indexation 2D ndarrays
Lorsque vous travaillez avec des ndarrays 2D, vous pouvez utiliser l'indexation booléenne en combinaison
avec d'autres méthodes d'indexation. La seule limitation est que le tableau booléen doit avoir la même
longueur que la dimension que vous indexez.
Regardons quelques exemples :

Anis Cherfi - Atelier de programmation 2023/2024 33


Numpy: Indexation 2D ndarrays
Instructions
[Link]éez un tableau booléen, tip_bool, qui détermine les lignes dont les valeurs de la
colonne tip_amount sont supérieures à 50.
[Link] le tableau tip_bool pour sélectionner toutes les lignes de taxi dont les valeurs
des montants de pourboire sont supérieures à 50, ainsi que les colonnes des index 5 à 13
inclus. Affectez le tableau résultant à top_tips.

Anis Cherfi - Atelier de programmation 2023/2024 34


Numpy: Indexation 2D ndarrays
So far, we've learned how to retrieve data from ndarrays. Next, we'll use the same indexing techniques
we've already learned to modify values within an ndarray. Here is the syntax we'll use (in pseudocode):

Un emplacement d'index spécifique Plusieurs valeurs

Anis Cherfi - Atelier de programmation 2023/2024 35


Numpy: Indexation 2D ndarrays
Avec un tableau 2D, nous pouvons attribuer : un emplacement d'index spécifique , colonne ou ligne entière

Anis Cherfi - Atelier de programmation 2023/2024 36


Numpy: Indexation 2D ndarrays
Instructions
Pour nous entraîner sans modifier notre tableau original, nous avons utilisé la méthode
[Link]() pour créer taxi_modifié, une copie de notre tableau original pour ces
exercices.

• La valeur à l'indice de colonne 5 (pickup_location) de l'indice de ligne 1066 est incorrecte. Utilisez
l'affectation pour changer cette valeur en 1 dans le ndarray taxi_modified.
• La première colonne (index 0) contient des valeurs d'année sous forme de nombres à quatre chiffres au
format AAAA (2016, puisque tous les trajets de notre ensemble de données datent de 2016). Utilisez
l'affectation pour changer ces valeurs au format YY (16) dans le ndarray taxi_modified.
• Les valeurs de l'index de colonne 7 (trip_distance) des lignes d'index 550 et 551 sont incorrectes. Utilisez
l'affectation pour changer ces valeurs dans le ndarray taxi_modified pour la valeur moyenne de cette
colonne.
Anis Cherfi - Atelier de programmation 2023/2024 37
Numpy: Indexation 2D ndarrays

Anis Cherfi - Atelier de programmation 2023/2024 38


Numpy: Affectation
Les tableaux booléens deviennent très puissants lorsque nous les utilisons pour l'affectation.

Le tableau booléen contrôle les valeurs auxquelles s'applique l'affectation, et les autres valeurs restent
inchangées. Voyons comment fonctionne ce code :

Anis Cherfi - Atelier de programmation 2023/2024 39


Numpy: Affectation

Remarquez dans le diagramme ci-dessus que nous avons utilisé un "raccourci" -


nous avons inséré la définition du tableau booléen directement dans la sélection.
Ce "raccourci" est la manière conventionnelle d'écrire l'indexation booléenne.

Anis Cherfi - Atelier de programmation 2023/2024 40


Numpy: Affectation
Exemple d'affectation utilisant un tableau booléen à deux dimensions

L'opération booléenne b > 4 produit un tableau booléen 2D qui contrôle ensuite les valeurs
auxquelles l'affectation s'applique
Anis Cherfi - Atelier de programmation 2023/2024 41
Numpy: Affectation
Utiliser un tableau booléen 1D pour effectuer une affectation sur un tableau 2D

Anis Cherfi - Atelier de programmation 2023/2024 42


Numpy: Affectation
L'opération booléenne c[:,1] > 2 compare les valeurs d'une seule colonne et produit un tableau booléen 1D.
Nous utilisons ensuite ce tableau booléen comme index de ligne pour l'affectation et 1 comme index de
colonne pour spécifier la deuxième colonne. Notre tableau booléen ne s'applique qu'à la deuxième
colonne, tandis que toutes les autres valeurs restent inchangées.

La syntaxe du pseudo-code pour ce code est la suivante, en utilisant d'abord une variable intermédiaire :

. . . puis le tout en une ligne :

Anis Cherfi - Atelier de programmation 2023/2024 43


Challenge: Which Is the Most Popular Airport?

Instructions
Dans ce défi, nous voulons déterminer quel aéroport est la destination la plus populaire dans notre ensemble
de données. Pour ce faire, nous allons utiliser l'indexation booléenne pour créer trois tableaux filtrés, puis
examiner le nombre de lignes dans chaque tableau.

Pour terminer cette tâche, nous devrons vérifier si la colonne dropoff_location_code (index de colonne 6) est
égale à l'une des valeurs suivantes :
2: Aéroport JFK
3: Aéroport LaGuardia
5 : Aéroport de Newark.

Anis Cherfi - Atelier de programmation 2023/2024 44

Vous aimerez peut-être aussi