Requêtes SQL plus complexes

Ingestion de données rationalisée avec pandas

Amany Mahfouz

Instructor

Obtenir des valeurs DISTINCT

  • Obtenir des valeurs uniques pour une ou plusieurs colonnes avec SELECT DISTINCT
  • Syntaxe :
    SELECT DISTINCT [column names] FROM [table];
    
  • Retirer les doublons :
    SELECT DISTINCT * FROM [table];
    
/* Obtenir les adresses et arrondissements uniques */
SELECT DISTINCT incident_address, 
       borough
  FROM hpd311calls;
Ingestion de données rationalisée avec pandas

Fonctions d'agrégation

  • Interroger directement une base pour des statistiques descriptives
  • Fonctions d'agrégation
    • SUM
    • AVG
    • MAX
    • MIN
    • COUNT
Ingestion de données rationalisée avec pandas

Fonctions d'agrégation

  • SUM, AVG, MAX, MIN
    • Chacune prend un seul nom de colonne
      SELECT AVG(tmax) FROM weather;
      
  • COUNT
    • Obtenir le nombre de lignes qui satisfont les conditions
      SELECT COUNT(*) FROM [table_name];
      
    • Obtenir le nombre de valeurs uniques d'une colonne
      SELECT COUNT(DISTINCT [column_names]) FROM [table_name];
      
Ingestion de données rationalisée avec pandas

GROUP BY

  • Par défaut, les fonctions d'agrégation calculent une seule statistique synthèse
  • Résumer par catégories avec GROUP BY
  • N'oubliez pas de sélectionner aussi la colonne de regroupement !
/* Compter les appels de plomberie par arrondissement */
SELECT borough, 
       COUNT(*) 
  FROM hpd311calls
 WHERE complaint_type = 'PLUMBING'
 GROUP BY borough;
Ingestion de données rationalisée avec pandas

Compter par groupes

# Create database engine
engine = create_engine("sqlite:///data.db")

# Write query to get plumbing call counts by borough query = """SELECT borough, COUNT(*) FROM hpd311calls WHERE complaint_type = 'PLUMBING' GROUP BY borough;"""
# Query databse and create dataframe plumbing_call_counts = pd.read_sql(query, engine)
Ingestion de données rationalisée avec pandas

Compter par groupes

print(plumbing_call_counts)
         borough  COUNT(*)
0          BRONX      2016
1       BROOKLYN      2702
2      MANHATTAN      1413
3         QUEENS       808
4  STATEN ISLAND       178
Ingestion de données rationalisée avec pandas

Passons à la pratique !

Ingestion de données rationalisée avec pandas

Preparing Video For Download...