Affiner les importations avec des requêtes SQL

Ingestion de données rationalisée avec pandas

Amany Mahfouz

Instructor

Sélectionner des colonnes

  • SELECT [column names] FROM [table name];
  • Exemple :
    SELECT date, tavg 
    FROM weather;
    
Ingestion de données rationalisée avec pandas

Clauses WHERE

  • Utilisez une clause WHERE pour importer des enregistrements de façon sélective
    SELECT [column_names] 
      FROM [table_name] 
     WHERE [condition];
    
Ingestion de données rationalisée avec pandas

Filtrer par nombres

  • Comparez des nombres avec des opérateurs mathématiques
    • =
    • > et >=
    • < et <=
    • <> (différent de)
    • Exemple :
      SELECT * 
      FROM weather 
      WHERE tmax > 32;
      
Ingestion de données rationalisée avec pandas

Filtrer du texte

  • Faites correspondre des chaînes exactes avec le signe = et le texte à rechercher
  • La correspondance de chaînes est sensible à la casse
  • Exemple :
    /* Obtenir les enregistrements d'incidents à Brooklyn */
    SELECT * 
    FROM hpd311calls
    WHERE borough = 'BROOKLYN';
    
Ingestion de données rationalisée avec pandas

SQL et pandas

# Charger les bibliothèques
import pandas as pd
from sqlalchemy import create_engine

# Créer le moteur de base de données engine = create_engine("sqlite:///data.db")
# Écrire une requête pour obtenir les enregistrements de Brooklyn query = """SELECT * FROM hpd311calls WHERE borough = 'BROOKLYN';"""
# Interroger la base de données brooklyn_calls = pd.read_sql(query, engine)
print(brookyn_calls.borough.unique())
['BROOKLYN']
Ingestion de données rationalisée avec pandas

Combiner des conditions : AND

  • Les clauses WHERE avec AND retournent les enregistrements qui respectent toutes les conditions
# Écrire une requête pour les cas de plomberie dans le Bronx
and_query = """SELECT * 
                 FROM hpd311calls 
                WHERE borough = 'BRONX' 
                  AND complaint_type = 'PLUMBING';"""

# Obtenir les appels sur des problèmes de plomberie dans le Bronx bx_plumbing_calls = pd.read_sql(and_query, engine) # Vérifier le nombre d'enregistrements print(bx_plumbing_calls.shape)
(2016, 8)
Ingestion de données rationalisée avec pandas

Combiner des conditions : OR

  • Les clauses WHERE avec OR retournent les enregistrements qui respectent au moins une condition
# Écrire une requête pour les fuites d'eau ou la plomberie
or_query = """SELECT * 
                FROM hpd311calls 
               WHERE complaint_type = 'WATER LEAK'
                  OR complaint_type = 'PLUMBING';"""

# Obtenir les appels sur la plomberie ou les fuites d'eau leaks_or_plumbing = pd.read_sql(or_query, engine) # Vérifier le nombre d'enregistrements print(leaks_or_plumbing.shape)
(10684, 8)
Ingestion de données rationalisée avec pandas

Passons à la pratique !

Ingestion de données rationalisée avec pandas

Preparing Video For Download...