SQL, qui signifie langage de requête structuré, est un langage de programmation dans lequel l’utilisateur interroge des bases de données relationnelles. Les scientifiques des données utilisent SQL dans Python dans une variété d’instances, dictées par le cas d’utilisation en cours ou par préférence personnelle. SQL est principalement utilisé pour organiser les données, en particulier dans les requêtes de formation, ainsi que pour l’analyse ad hoc des résultats du modèle. Plusieurs autres postes peuvent également profiter des avantages de SQL, notamment les ingénieurs logiciels, les analystes de données et commerciaux et les ingénieurs de données.
Nous examinerons trois méthodes d’utilisation de SQL dans cet article. La première méthode, la connexion à votre base de données SQL via le langage de programmation Python avec les commandes SQL traditionnelles, est probablement son utilisation la plus traditionnelle. La deuxième méthode consiste à utiliser des commandes SQL dans votre cadre de données Pandas avec requête, qui, à mon avis, est la plus simple de ces méthodes à afficher dans votre Jupyter Notebook. Enfin, vous pouvez exécuter des commandes de type SQL dans votre bloc de données Pandas qui fonctionnent de la même manière que les fonctions SQL traditionnelles.
Comment utiliser SQL en Python
- SQLite/MS-SQL Server/Oracle/MySQL/Et cetera
- Requête de pandas
- Interrogation de trame de données
SQLite/MS-SQL Server/Oracle/MySQL/Et cetera
Nous aborderons deux des nombreuses bibliothèques/modules que vous pouvez utiliser via Python : SQLite3 et Pyodbc.
Toutes ces méthodes fonctionnent de la même manière en ce sens qu’elles nécessitent les éléments suivants:
- importer la bibliothèque Python
- se connecter à la base de données
- créer un objet curseur pour pouvoir utiliser les commandes SQL
Voyons donc comment se connecter à SQLite à partir d’une base de données locale.
import sqlite3
connection = sqlite3.connect(“database_name.db”)
cursor = connection.cursor()
cursor.execute(“SELECT * FROM table_name”).fetchall()
Dans cette dernière ligne, vous pouvez imaginer que vous pouvez également exécuter toutes vos commandes SQL normales (par exemple, WHERE, GROUP BY et ORDER BY, pour n’en nommer que quelques-unes).
Le module suivant, Pyodbcpeut être utilisé pour les connexions à distance, vous permettant de vous connecter aux bases de données MS-SQL, Oracle et MySQL.
Exemple de serveur MS-SQL
Gardez à l’esprit que ce n’est pas le seul code que vous pouvez utiliser pour vous connecter à ces bases de données :
import pyodbc
connection = pyodbc.connect('Driver={SQL Server};'
'Server=server_name;'
'Database=database_name;'
'Trusted_Connection=yes;')
# OR ADD THIS TO THAT SAME STRING ABOVE IN PLACE OF
Trusted_Connection^
'UID=USER_ID_HERE;'
'PWD=PASSWORD_HERE;'
cursor = connection.cursor()
cursor.execute('SELECT * FROM table_name')
Exemple Oracle
substitute 'Driver={SQL Server};' for 'Driver={Oracle in
OraClient12Home1};'
or other Oracle driver
Exemple MySQL
connection = pyodbc.connect('CData ODBC Driver for MySQL};'
'User=user_name;'
'Password=your_pasword;'
'Database=db_name;'
'Server=server_name;'
'Port=port_number;')
'Database=db_name;')
or other MySQL driver
Avec toutes les connexions, vous pouvez lire SQL dans une trame de données Pandas avec ce code :
df = pd.read_sql('SELECT * FROM Table', connection)
C’est une bonne façon d’utiliser SQL avec Python via Pandas. De nombreux scientifiques des données aiment travailler avec des blocs de données car ils‘sont faciles à utiliser et fonctionnent bien avec les bibliothèques Python de science des données et d’apprentissage automatique. Par exemple, vous pouvez interroger vos données avec l’une des connexions SQL comme décrit ci-dessus et l’enregistrer dans votre bloc de données. Ensuite, vous pouvez créer un ensemble d’entraînement et de test à partir de cet ensemble de données principal à utiliser dans votre modèle de science des données.
Requête de pandas
La requête Pandas vous permet d’interroger votre bloc de données directement avec Python sans aucune connexion car vous‘re travaillez simplement avec les données qui ont déjà été lues. Cette approche est moins compliquée et profite toujours des avantages d’un langage de requête similaire à SQL. Les avantages incluent la comparaison des colonnes pour l’analyse, ainsi que d’autres arithmétiques entre les champs, pour n’en nommer que quelques-uns.
Voici quelques exemples d’interrogation de votre dataframe avec un code de type SQL.
# return rows where values from one column are bigger than that of
another
df.query('column_1 > column_2')
# see which rows where the 'column_1' values
# are greater than the mean of the total column
# use the '@' to reference 'column_mean'
column_mean = df['column_1'].mean()
df.query('Confirmed_New > @column_mean')
# text conditions
# use double quotes for matching on the string value
# all the rows returned have 'green' for the 'text_column'
df.query('text_column == "green"').head()
Ce ne sont là que quelques-uns des exemples de retour de données pouvant être utilisés pour l’analyse des caractéristiques.
Interrogation de trame de données
Cette dernière méthode n’est pas SQL, et n’utilise pas non plus la méthode de requête, mais elle utilise toujours des commandes de type SQL que vous pouvez utiliser dans votre dataframe Pandas avec Python.
Voici une façon d’exécuter cette méthode :
print('Percent of data that is above 30 years old OR were born between
2010 and 2021:”,
100*round(df[(df['age'] > 30) | (df['birthdate'] >= '2010–01–01') &
(df['birthdate'] <= '2021–01–01')]['age'].count()/df.shape
[0],4), “%”)
Ces noms de colonnes ne sont que des exemples de noms, vous pouvez donc également imaginer ici que vous utiliseriez vos noms de colonnes réels pour effectuer cette action. Vous pouvez également effectuer ces calculs avec votre ensemble de données complet, votre ensemble d'apprentissage et votre ensemble de test pour une analyse simple.
Habituez-vous à SQL
Pour résumer, voici quelques-unes des façons dont vous pouvez utiliser les commandes SQL et de type SQL avec Python :
- SQLite/MS-SQL Server/Oracle/MySQL/Et cetera
- Requête de pandas
- Interrogation de trame de données
SQL et Python sont d'excellents outils non seulement pour les scientifiques des données, mais aussi pour de nombreuses autres personnes qui travaillent avec des données. Les données peuvent être intimidantes, tout comme les méthodes utilisées pour les utiliser. Cependant, vous commencerez à remarquer une tendance selon laquelle nous ne faisons qu'organiser les données ou les manipuler. Qu'il s'agisse d'un SELECT * WHERE colonne = 'X' clause ou une df[df[‘column’] = 'X' méthode, ces processus effectuent finalement la même action. La méthode que vous choisissez dépend de vous, ou de la manière dont vous souhaitez collaborer au sein de votre entreprise avec vos différentes parties prenantes et votre équipe.
.