Meerdere tabellen laden met joins

Gestroomlijnde data-inname met pandas

Amany Mahfouz

Instructor

Sleutels

  • Databaserecords hebben unieke id’s, of sleutels

311-belgegevens, met de kolom unique_key gemarkeerd. Unieke sleutels zijn nummers.

Gestroomlijnde data-inname met pandas

Sleutels

  • Databaserecords hebben unieke id’s, of sleutels

Cursuscatalogus, met de kolom course_code gemarkeerd. Codes zijn afkortingen en cijfers.

Gestroomlijnde data-inname met pandas

Sleutels

  • Databaserecords hebben unieke id’s, of sleutels

Cursuscatalogus, met de kolom instructor_id gemarkeerd. Waarden zijn 9-cijferige gehele getallen.

Gestroomlijnde data-inname met pandas

Sleutels

Tabel Professor, met de kolom id gemarkeerd. Waarden zijn 9-cijferige gehele getallen zoals de instructor_ids in de catalogus.

Gestroomlijnde data-inname met pandas

Sleutels

Cursuscatalogus met samengevoegde kolom met professorennamen

Gestroomlijnde data-inname met pandas

Tabellen joinen

Weergegevens, met de kolom date gemarkeerd

311-belgegevens, met de kolom created_date gemarkeerd

Gestroomlijnde data-inname met pandas

Tabellen joinen

SELECT *
  FROM hpd311calls
Gestroomlijnde data-inname met pandas

Tabellen joinen

SELECT *
  FROM hpd311calls
       JOIN weather 
       ON hpd311calls.created_date = weather.date;
  • Gebruik puntnotatie (table.column) bij meerdere tabellen
  • Standaard join retourneert alleen records waarvan sleutels in beide tabellen voorkomen
  • Zorg dat joinsleutels hetzelfde datatype hebben, anders matcht niets
Gestroomlijnde data-inname met pandas

Joinen en filteren

/* Haal alleen HEAT/HOT WATER-meldingen op en join weergegevens */
SELECT *
  FROM hpd311calls
       JOIN weather 
       ON hpd311calls.created_date = weather.date
 WHERE hpd311calls.complaint_type = 'HEAT/HOT WATER';
Gestroomlijnde data-inname met pandas

Joinen en aggregeren

/* Aantal meldingen per stadsdeel */
SELECT hpd311calls.borough, 
         COUNT(*)
  FROM hpd311calls
 GROUP BY hpd311calls.borough;
Gestroomlijnde data-inname met pandas

Joinen en aggregeren

/* Aantal meldingen per stadsdeel
   en join bevolking en woningen */
SELECT hpd311calls.borough, 
       COUNT(*), 
       boro_census.total_population,
       boro_census.housing_units
  FROM hpd311calls
 GROUP BY hpd311calls.borough
Gestroomlijnde data-inname met pandas

Joinen en aggregeren

/* Aantal meldingen per stadsdeel
   en join bevolking en woningen */
SELECT hpd311calls.borough, 
       COUNT(*), 
       boro_census.total_population,
       boro_census.housing_units
  FROM hpd311calls
       JOIN boro_census 
       ON hpd311calls.borough = boro_census.borough
 GROUP BY hpd311calls.borough;
Gestroomlijnde data-inname met pandas
query = """SELECT hpd311calls.borough, 
                    COUNT(*), 
                    boro_census.total_population,
                    boro_census.housing_units
             FROM hpd311calls
                  JOIN boro_census 
                  ON hpd311calls.borough = boro_census.borough
            GROUP BY hpd311calls.borough;"""

call_counts = pd.read_sql(query, engine)
print(call_counts)
         borough  COUNT(*)  total_population  housing_units
0          BRONX     29874           1455846         524488
1       BROOKLYN     31722           2635121        1028383
2      MANHATTAN     20196           1653877         872645
3         QUEENS     11384           2339280         850422
4  STATEN ISLAND      1322            475948         179179
Gestroomlijnde data-inname met pandas

Herhaling

  • Volgorde van SQL-trefwoorden
    • SELECT
    • FROM
    • JOIN
    • WHERE
    • GROUP BY
Gestroomlijnde data-inname met pandas

Laten we oefenen!

Gestroomlijnde data-inname met pandas

Preparing Video For Download...