Utilisation de DataFrames Pandas avec le connecteur Python¶
pandas est une bibliothèque d’analyse de données. Avec Pandas, vous utilisez une structure de données appelée DataFrame pour analyser et manipuler des données bidimensionnelles (telles que les données d’une table de base de données).
Si vous devez obtenir des données d’une base de données Snowflake vers un DataFrame Pandas, vous pouvez utiliser les méthodes API fournies avec le connecteur Snowflake pour Python. Le connecteur fournit également des méthodes API pour écrire des données d’un DataFrame Pandas dans une base de données Snowflake.
Note
Certaines de ces méthodes API nécessitent une version spécifique de la bibliothèque PyArrow. Voir Exigences pour plus de détails.
Dans ce chapitre :
Exigences¶
Actuellement, les méthodes d’API orientées Pandas dans l’API du connecteur Python fonctionnent avec :
Connecteur Snowflake 2.1.2 (ou supérieur) pour Python.
Version 3.0.x de la bibliothèque PyArrow
Si PyArrow n’est pas installé, vous n’avez pas besoin d’installer PyArrow vous-même ; l’installation du connecteur Python comme indiqué ci-dessous installe automatiquement la version appropriée de PyArrow.
Prudence
Si vous avez déjà une version de la bibliothèque PyArrow autre que la version recommandée répertoriée ci-dessus, veuillez désinstaller PyArrow avant d’installer le connecteur Snowflake pour Python. Ne réinstallez pas une version différente de PyArrow après avoir installé le connecteur Snowflake pour Python.
pandas 0.25.2 (ou supérieur). Les versions antérieures sont susceptibles de fonctionner, mais n’ont pas été testées.
Installation¶
Pour installer la version compatible Pandas du connecteur Snowflake pour Python, exécutez la commande :
pip install "snowflake-connector-python[pandas]"
Vous devez saisir les crochets ([
et ]
) comme indiqué dans la commande. Les crochets spécifient la partie supplémentaire du paquet qui doit être installée.
Utilisez des guillemets autour du nom du paquet (comme indiqué) pour éviter que les crochets ne soient interprétés comme des caractères génériques.
Si vous devez installer d’autres « extras » (par exemple, secure-local-storage
pour la mise en cache des connexions avec SSO sur le navigateur ou la mise en cache des jetons MFA), utilisez une virgule entre les extras :
pip install "snowflake-connector-python[secure-local-storage,pandas]"
Lecture des données d’une base de données Snowflake vers un DataFrame Pandas¶
Pour lire des données dans un DataFrame Pandas, vous utilisez un curseur pour récupérer les données , puis appelez l’une de ces méthodes Cursor
pour placer les données dans un DataFrame Pandas :
Écriture de données depuis un DataFrame Pandas dans une base de données Snowflake¶
Pour écrire des données depuis un DataFrame Pandas dans une base de données Snowflake, effectuez l’une des manipulations suivantes :
Appelez la fonction
write_pandas()
.Appelez la méthode
pandas.DataFrame.to_sql()
(voir la documentation Pandas) et spécifiezpd_writer()
comme méthode d’insertion de données dans la base de données.
Mappage de données Snowflake vers Pandas¶
Le tableau ci-dessous montre le mappage des types de données Snowflake aux types de données Pandas :
Type de données Snowflake |
Type de données Pandas |
---|---|
FIXED NUMERIC type (échelle = 0) sauf DECIMAL |
|
FIXED NUMERIC type (échelle > 0) sauf DECIMAL |
|
FIXED NUMERIC type DECIMAL |
|
FLOAT/DOUBLE |
|
VARCHAR |
|
BINARY |
|
VARIANT |
|
DATE |
|
TIME |
|
TIMESTAMP_NTZ, TIMESTAMP_LTZ, TIMESTAMP_TZ |
|
Remarques :
Si le type de données Snowflake est FIXED NUMERIC et l’échelle est zéro, et si la valeur est NULL, alors la valeur est convertie en
float64
, pas en type entier.Si une conversion provoque un débordement, le connecteur Python lève une exception.
Importation pandas¶
Habituellement, les importations Pandas sont effectuées avec l’instruction suivante :
import pandas as pd
Vous pouvez voir des références aux objets Pandas comme pandas.object
ou pd.object
.
Migration vers des DataFrames Pandas¶
Cette section est principalement destinée aux utilisateurs qui ont déjà utilisé Pandas (et éventuellement SQLAlchemy).
Les utilisateurs précédents de Pandas peuvent avoir un code similaire à l’un des suivants :
Cet exemple montre la manière originale de générer un DataFrame Pandas à partir du connecteur Python :
import pandas as pd def fetch_pandas_old(cur, sql): cur.execute(sql) rows = 0 while True: dat = cur.fetchmany(50000) if not dat: break df = pd.DataFrame(dat, columns=cur.description) rows += df.shape[0] print(rows)
Cet exemple montre comment utiliser SQLAlchemy pour générer un DataFrame Pandas :
import pandas as pd def fetch_pandas_sqlalchemy(sql): rows = 0 for chunk in pd.read_sql_query(sql, engine, chunksize=50000): rows += chunk.shape[0] print(rows)
Le code similaire à l’un des exemples précédents peut être converti pour utiliser les appels d’API Pandas du connecteur Python répertoriés dans Lecture de données depuis une base de données Snowflake vers un DataFrame Pandas (dans ce chapitre).
Note
Avec la prise en charge de Pandas dans le connecteur Python, SQLAlchemy n’est plus nécessaire pour convertir les données d’un curseur en DataFrame.
Cependant, vous pouvez continuer à utiliser SQLAlchemy si vous le souhaitez ; le connecteur Python conserve la compatibilité avec SQLAlchemy.