Blog ENI : Toute la veille numérique !
💥 Offre spéciale Bibliothèque Numérique ENI :
1 an d'accès à petit prix ! Cliquez ici
🚀 Tous nos livres, vidéos et articles en illimité ! :
Découvrez notre offre. Cliquez ici

Extraire vos données depuis n'importe quelle source

Présentation de la librairie pandas

Pandas est un outil indispensable pour l’analyse de données, offrant une polyvalence et une puissance remarquables. Cette introduction vise à présenter ses principales fonctionnalités, en mettant l’accent sur l’élément clé : le DataFrame. Notre parcours débute par l’acquisition et l’extraction des données sous forme de DataFrame, avant d’aborder leur traitement dans le chapitre suivant.

Les DataFrames sont des structures de données bidimensionnelles flexibles, largement employées en Python pour manipuler et analyser des informations. Ce tutoriel explorera la nature des DataFrames, leur organisation, et leurs attributs fondamentaux. Cette approche permettra de comprendre comment transformer des données brutes en informations exploitables pour l’analyse.

1. Qu’est-ce qu’un DataFrame ?

Un DataFrame peut être considéré comme une table de base de données ou une feuille de calcul Excel, où les données sont organisées en lignes et en colonnes. C’est l’une des structures de données centrales fournies par la bibliothèque pandas, conçue pour gérer et manipuler des données de manière efficace.

2. Structure d’un DataFrame

Un DataFrame est composé de plusieurs éléments :...

Fichiers plats ou autres formats structurés

Dans cette partie du livre, nous allons voir comment extraire les données de différents types de fichiers, en les classant par difficulté croissante. Il est très simple de lire un fichier CSV, cela devient un peu compliqué lorsqu’il s’agit de traiter un PDF ou bien une image (même si c’est moins courant).

1. CSV, TXT et TSV

Le format CSV (Comma-Separated Values) est l’un des formats de fichiers plats les plus répandus pour le stockage de données. Moins contraignant qu’un fichier Excel, il permet de gérer des volumes de données considérables, ce qui en fait le format de prédilection pour les jeux de données partagés sur des plateformes spécialisées comme Kaggle.

La bibliothèque Pandas offre une méthode read_csv() capable de lire une grande variété de fichiers CSV. Bien que sa syntaxe de base soit simple, la maîtrise de ses nombreux arguments permet d’optimiser la lecture des données selon les besoins spécifiques de chaque projet.

Dans cette section, nous nous concentrerons sur les arguments les plus fréquemment utilisés. Avec environ cinquante arguments disponibles, il serait peu efficace de tous les mémoriser. Néanmoins, la documentation officielle reste une ressource précieuse pour des besoins plus spécifiques. Pour faciliter le débogage, nous aborderons également les messages d’erreur les plus courants et leurs solutions.

Le tableau ci-dessous présente les principaux arguments de la méthode read_csv(). Nous explorerons ensuite leur utilisation pratique à travers des exemples concrets, illustrant comment ces paramètres peuvent être ajustés pour répondre à différents scénarios de lecture de données.

Argument

Type

Définition

sep

str

indique le séparateur à prendre en compte

encoding

str

spécifie l’encodage du fichier CSV

skiprows

int

ne lie pas les n premières lignes

skipfooter

int

ne lie pas les n dernières lignes

usecols

list

sélectionne uniquement les colonnes à charger

index_col

int

spécifie la colonne d’index

header

int

indique la ligne contenant les libellés de colonnes

dtype

dict

spécifie...

Bases de données relationnelles

1. Qu’est-ce qu’une base de données relationnelle ?

Une base de données relationnelle est une base de données plus généraliste qui est utilisée pour une grande variété d’applications. Les bases de données relationnelles utilisent une structure appelée « modèle relationnel », dans laquelle les données sont stockées dans des tables (relations) qui sont définies par des colonnes (attributs) et des lignes (tuples). L’objectif principal d’une base de données relationnelle est pour le traitement des transactions en ligne (Online Transaction Processing, OLTP), qui implique les opérations quotidiennes d’une organisation telles que la saisie des commandes, les transactions financières et la gestion des clients.

Voici comment une base de données relationnelle diffère d’un entrepôt de données :

  • Conçue pour les transactions : les bases de données relationnelles sont généralement optimisées pour les opérations d’écriture, les rendant idéales pour les systèmes transactionnels où les données sont fréquemment insérées, mises à jour ou supprimées.

  • Structure normalisée : dans les bases de données relationnelles, les tables sont souvent normalisées, ce qui signifie que les données sont organisées pour réduire la redondance et améliorer l’intégrité des données.

  • Opérations en temps réel : les bases de données relationnelles sont utilisées pour gérer des données opérationnelles en temps réel qui changent régulièrement. 

  • Contrôle de la concurrence : comme les bases de données relationnelles sont utilisées pour les opérations quotidiennes, elles sont conçues pour supporter de nombreux utilisateurs simultanément.

2. Quelles sont les bases les plus courantes ?

Cette section et la suivante présupposent une compréhension de base des concepts de bases de données relationnelles et du langage SQL.

Selon la dernière étude de Stack Overflow sur les technologies les plus populaires...

Bases de données NoSQL

1. Qu’est-ce qu’une base de données NoSQL ?

Les bases de données NoSQL (Not Only SQL) représentent une alternative aux systèmes de gestion de bases de données relationnelles traditionnels. Elles sont conçues pour offrir une plus grande flexibilité, une meilleure scalabilité et des performances améliorées, particulièrement adaptées aux besoins du Big Data et des applications en temps réel.

Contrairement aux bases de données relationnelles avec leurs schémas fixes, les bases de données NoSQL peuvent stocker des données de manière non structurée ou semi-structurée. Elles se déclinent en plusieurs types, incluant les bases orientées document (MongoDB), clé-valeur (Redis), en colonnes (Cassandra), et graphiques (Neo4j).

Dans le contexte de la Business Intelligence, les bases de données NoSQL offrent plusieurs avantages significatifs :

  • Elles excellent dans la gestion de données non structurées, permettant l’analyse de sources variées comme les réseaux sociaux ou les logs de serveurs.

  • Certaines bases NoSQL sont optimisées pour l’analyse en temps réel de grands volumes de données, facilitant la création de tableaux de bord dynamiques.

  • Elles servent efficacement de data lakes pour l’intégration...

Entrepôts de données

1. Qu’est-ce qu’un entrepôt de données ?

Un entrepôt de données (Data Warehouse en anglais) est un système de gestion de données spécialisé, conçu pour soutenir les activités d’intelligence d’affaires (BI) et d’analyse. Il se distingue des bases de données opérationnelles traditionnelles par sa capacité à consolider et à stocker de grandes quantités de données historiques provenant de sources hétérogènes.

L’objectif principal d’un entrepôt de données est de fournir une vue cohérente et à long terme des données de l’entreprise, permettant des analyses complexes sans impacter les systèmes opérationnels. Contrairement aux systèmes de traitement de transactions, les entrepôts de données sont optimisés pour les requêtes analytiques et le stockage de données historiques.

Les entrepôts de données se caractérisent par quatre aspects fondamentaux :

  • Orientation sujet : les données sont organisées autour de sujets clés de l’entreprise, tels que les ventes, la finance ou le marketing. Cette structure facilite l’analyse des données du point de vue de l’entreprise, offrant une image cohérente à un moment donné.

  • Intégration : un entrepôt de données consolide des informations provenant de diverses sources, comme des bases de données relationnelles, des fichiers plats et des enregistrements de transactions en ligne. Cette intégration assure une cohérence des données à travers l’organisation.

  • Non-volatilité : une fois intégrées dans l’entrepôt, les données restent stables et ne sont généralement pas modifiées. Les mises à jour sont effectuées périodiquement à partir des systèmes opérationnels, mais les données existantes dans l’entrepôt ne sont ni mises à jour ni supprimées, préservant ainsi l’intégrité historique.

  • Variance temporelle : contrairement aux systèmes opérationnels...

Serveurs FTP/SFTP

1. Qu’est-ce que le FTP ?

FTP (File Transfer Protocol) est un protocole réseau client/serveur utilisé pour transférer des fichiers sur Internet. Les clients FTP sont utilisés pour envoyer et récupérer des fichiers vers et depuis des serveurs qui stockent des fichiers et répondent aux demandes des clients.

Historiquement, FTP a été un moyen populaire de déplacer des fichiers volumineux entre les systèmes ou entre les ordinateurs de bureau et les systèmes. FTP est également un moyen courant de partager un fichier trop volumineux pour une pièce jointe à un e-mail en le téléchargeant dans un emplacement neutre pour y accéder par d’autres systèmes, logiciels ou individus. Le client professionnel WS_FTP de Progress a été développé en 1994 comme l’un des premiers clients FTP disponibles dans le commerce. Cependant, développé à une époque où les préoccupations de sécurité étaient moindres, le protocole FTP ne dispose pas des fonctionnalités de sécurité et de gestion des fichiers qui sont aujourd’hui indispensables pour l’échange de données commerciales.

2. Qu’est-ce que SSH ?

Le FTP sécurisé est apparu pour répondre aux besoins de sécurité...

Interface de programmation d’application (API)

1. Pourquoi utiliser une interface de programmation d’application ?

Dans cette partie, nous allons utiliser des interfaces de programmation d’applications (Application Programming Interface en anglais et plus connu sous le nom d’API) pour requêter des données. Les API sont des ensembles de définitions et de protocoles qui permettent à des applications de communiquer entre elles.

Dans le domaine de l’analyse de données, les API sont utilisées pour accéder à des données provenant de différentes sources, telles que des bases de données, des fichiers ou des services web (on peut notamment citer quelques-unes des plus connues : X, Facebook, Github, eBay, Notion, etc.). Elles permettent également de partager des données avec d’autres applications.

Les API sont particulièrement utiles, par exemple, dans les cas suivants :

  • Lorsqu’il est nécessaire d’intégrer des données en temps réel provenant de sources multiples : les API permettent d’agréger des flux de données dynamiques issus de systèmes disparates, fournissant ainsi aux analystes la capacité à réaliser des analyses actualisées en continu.

  • Quand on souhaite automatiser et optimiser les processus d’extraction de données : elles réduisent le besoin d’interventions manuelles et éliminent les erreurs humaines en permettant une extraction de données facilement programmable et adaptée aux mises à jour périodiques en BI.

  • Lorsque vous souhaitez partager vos données avec d’autres : les API permettent de partager vos données avec d’autres applications, ce qui facilite la collaboration et la communication.

2. Quelques définitions et un peu de théorie

Commençons par donner une définition simple.

C’est un ensemble de protocoles et d’outils permettant à différents logiciels de communiquer entre eux. Les API facilitent l’intégration de services, l’échange de données et l’extension de fonctionnalités entre applications distinctes. Elles sont essentielles pour diverses utilisations telles que la synchronisation de données...

Web scraping

Dans cette partie, nous allons découvrir comment récupérer des données qui ne sont pas récupérables directement dans une base de données ou de fichiers plats. Quelquefois, il est un peu plus compliqué de trouver l’information de façon condensée.

Le web scraping est une technique qui permet de récupérer de l’information issue d’une page web. Comme d’habitude, nous allons procéder par difficulté croissante. Dans la plupart des cas, nous utiliserons la combinaison de deux librairies Python : requests et bs4 (en particulier BeautifulSoup). requests permet de télécharger le code source de la page web et BeautifulSoup permet de naviguer à travers l’arborescence de la page pour accéder aux éléments demandés. 

De plus en plus de sites web créent du contenu dynamique, ce qui complique un peu notre tâche. Dans ce cas, nous devrons utiliser la librairie selenium.

Quelquefois, le site contenant la donnée qui nous intéresse tentera de nous limiter (et c’est normal, c’est une technique à utiliser avec parcimonie). Nous devrons alors utiliser quelques techniques pour simuler plusieurs utilisateurs différents.

Commençons par un rappel sur le langage HTML et les CSS. Il est essentiel de comprendre la structure d’une page pour savoir comment récupérer son contenu de façon efficace.

1. Bases de HTML/CSS

a. HTML (HyperText Markup Language)

HTML est le langage de balisage standard utilisé pour créer des pages web. Chaque élément HTML est défini par des balises, telles que <tag>contenu</tag>. Les balises peuvent contenir des attributs qui fournissent des informations supplémentaires.

Exemple simple de balise HTML :

<!DOCTYPE html> 
<html> 
  <head> 
    <title>Page Title</title> 
  </head> 
  <body> 
    <h1>This is a heading</h1> 
    <p>This is a paragraph.</p> 
  </body> 
</html> 

b. CSS (Cascading Style Sheets)

CSS est utilisé pour styliser et mettre en forme les éléments HTML. Il permet de définir la couleur, la police...