Fonction Read_SQL sur Pandas : Comment ça fonctionne ?

-
3
 m de lecture
-

Pour gérer et analyser les données fonctionnelles, les experts data peuvent utiliser une grande variété d’outils. Et notamment SQL ou Panda.

Souvent présentées comme deux options alternatives (c’est soit l’une, soit l’autre), elles sont en réalité très complémentaires. Et pour cause, la bibliothèque de Python est capable de lire le Structured Query Language à travers ses fonctions Pandas Read_SQL. Découvrons-les plus en détail.

C’est quoi Pandas Read_SQL ?

Pandas Read_SQL est une fonctionnalité de la bibliothèque de Python qui permet d’extraire les résultats d’une requête SQL directement dans le dataframe Panda. 

Mais attention, il existe deux méthodes de lecture SQL

  • pandas.read_sql_query : c’est la formule originale pour utiliser les requêtes SQL dans Pandas.
  • pandas.read_sql : il s’agit de simplifier la première option, puisqu’elle combine read_sql_query et de read_sql_table. Or, cette dernière permet de lire une table SQL entière dans Pandas. Avec cette fonction, il est donc possible de lire aussi bien des requêtes que des tables.

Comment utiliser la requête Pandas Read_SQL ?

Les prérequis

Afin d’utiliser efficacement la requête Pandas Read_SQL, il convient d’installer quelques paquets Python, tels que : 
  • SQLAlchemy : ce paquet permet d’interagir avec des bases de données SQL directement dans le code Python. Il n’est pas obligatoire, mais cela facilite le workflow. 
  • Un adaptateur : que vous utilisiez PostgreSQL, MySQL, Oracle ou tout autre dialecte, vous aurez besoin d’un adaptateur pour Python afin que Pandas et SQL puissent être complémentaires.
  • Un gestionnaire de paquets Python : comme via pip.

Sans oublier un accès à une base de données SQL (qu’il soit à distance ou sur une machine locale).

L’utilisation de Pandas Read_SQL

Dès lors que tous les paquets sont installés, vous devez ouvrir une connexion à votre source de base de données. C’est justement pour cette raison que SQLAlchemy est utile, puisqu’il permet de créer une connexion. 

Grâce à cette connexion, vous pourrez ensuite extraire les résultats d’une requête SQL de base dans Pandas. Et c’est à cet instant qu’intervient la requête Pandas read_SQL. 

Cette requête se présente sous cette forme : 

df = pandas.read_sql_query('''SELECT * FROM nom-de-table''', con=cnx)

Il convient alors de préciser les différents paramètres de ce bout de code : 

  • df : c’est le dataframe Pandas où seront stockées les données de la table. 
  • SELECT * FROM nom-de-table : il s’agit de préciser les données à sélection dans la table. 
  • con=cnx : c’est la connexion entre Pandas et SQL.

En plus de lire les tables, il est aussi possible de lire des vues SQL. Pour cela, il suffit d’écrire la syntaxe ci-dessous : 

df = pandas.read_sql_query(‘’’SELECT * FROM my_view’’’, con=cnx))

Bon à savoir : Il s’agit ici d’un modèle basique de l’utilisation de Pandas Read_SQL. Il est aussi possible de  créer une chaîne de requête généralisée pour extraire différentes plages. Et ce, tout en adaptant vos requêtes et leurs variables.

Le contrôle des volumes de données

Si Pandas.Read_SQL permet d’extraire plusieurs plages de données, il convient de faire attention aux quantités de données à introduire. En particulier pour les bases de données très volumineuses. En effet, si vous souhaitez lire les databases SQL avec Pandas, sachez que la bibliothèque de Python stocke les dataframes, mais aussi les traitements des résultats des requêtes SQL. Il convient donc de disposer d’une mémoire suffisante au risque de provoquer de nombreuses erreurs. 

Pour y pallier, il est possible d’utiliser le paramètre Chunksize intégré à Pandas. Celui-ci contrôle alors le volume de données importées. Si la limite est proche, mieux vaut extraire vos données SQL en plusieurs fois. 

Pour utiliser cette fonction, il suffit de taper cette requête : 

df = pandas.read_sql_query('''SELECT * FROM nom-de-table''', con=cnx, chunksize=n)

Ici, n renvoie au nombre de lignes que vous souhaitez intégrer dans le dataframe.

Quelles sont les limites de Pandas Read-SQL ?

Bien que Pandas Read_SQL permettent d’extraire facilement les bases de données SQL dans la bibliothèque de Python, il convient aussi de connaître ses limites. 

En effet, cette requête prend énormément d’espace, du fait du stockage du dataframe et du traitement des résultats de requête SQL. Il convient de disposer d’une mémoire suffisante. 

En plus de provoquer de potentielles erreurs en cas d’importations de données massives,  cette fonctionnalité est souvent à l’origine des lenteurs en termes de temps de chargement. Et ce, même lorsque les volumes de données sont modestes. 

Si vous souhaitez accélérer le temps de chargement, Pandas Read-SQL n’est définitivement pas la meilleure option pour extraire vos bases de données SQL.

Rejoignez DataScientest pour gérer vos databases

Qu’il s’agisse de Pandas ou des requêtes SQL, ce sont des outils incontournables pour gérer et analyser les bases de données. Alors pour maîtriser à la perfection les SGBD, il est primordial de se former à ces deux solutions. Heureusement, DataScientest vous propose des formations complètes autour de la donnée. Que ce soit à travers des bootcamp, de la formation en continu ou de la formation en alternance, vous saurez rapidement utiliser ces outils et deviendrez opérationnel dès l’issue du parcours.
Facebook
Twitter
LinkedIn

DataScientest News

Inscrivez-vous à notre Newsletter pour recevoir nos guides, tutoriels, et les dernières actualités data directement dans votre boîte mail.

Vous souhaitez être alerté des nouveaux contenus en data science et intelligence artificielle ?

Laissez-nous votre e-mail, pour que nous puissions vous envoyer vos nouveaux articles au moment de leur publication !

Newsletter icone
icon newsletter

DataNews

Vous souhaitez recevoir notre
newsletter Data hebdomadaire ?