Conversion des résultats de requête SQL en structure de données Pandas
Introduction
Pour faciliter l'analyse des données et manipulation, il est souvent nécessaire de convertir les données récupérées d’une base de données SQL en une structure de données Pandas. Cet article vous guidera tout au long du processus pour y parvenir.
Identification du type de retour
La fonction connection.execute() dans le code fourni renvoie un ResultProxy SQLAlchemy. Cet objet représente le résultat de la requête sous la forme d'un itérable de tuples, où chaque tuple correspond à une ligne dans le résultat.
Conversion en structure de données Pandas
Pour convertir le résultat est placé dans un Pandas DataFrame, vous pouvez utiliser le constructeur DataFrame :
import pandas as pd df = pd.DataFrame(resoverall.fetchall())
Le fetchall() La méthode renvoie une liste de tuples représentant les résultats de la requête. Le constructeur DataFrame prend cette liste comme argument et génère un DataFrame avec les tuples sous forme de lignes.
Définition des noms de colonnes
Par défaut, le DataFrame utilisera des noms de colonnes génériques comme "0", "1", etc. Pour attribuer des noms de colonnes significatifs, utilisez l'attribut columns :
df.columns = resoverall.keys()
Le resoverall.keys() renvoie une liste de noms de colonnes à partir du résultat de la requête. L'attribution de cette liste à l'attribut DataFrame.columns définit les noms de colonnes.
Alternative avec conversion de type
Pour analyser et convertir en outre les types de colonnes pour qu'ils correspondent au schéma SQL, vous pouvez utiliser l'approche suivante :
import numpy as np from sqlalchemy import types df = pd.DataFrame(resoverall.fetchall()) for column in resoverall.keys(): df[column] = df[column].astype(types.type_map[resoverall.scalar_types[column]])
Cette méthode garantit que les types de colonnes DataFrame sont cohérents avec le SQL schéma.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!