Memuat banyak tabel dengan join

Pemasukan Data yang Efisien dengan pandas

Amany Mahfouz

Instructor

Key

  • Rekaman database memiliki pengenal unik, atau key

Data panggilan 311, dengan kolom unique_key disorot. Unique key berupa angka.

Pemasukan Data yang Efisien dengan pandas

Key

  • Rekaman database memiliki pengenal unik, atau key

Data katalog mata kuliah, dengan kolom course_code disorot. Kode berisi singkatan mata pelajaran dan angka.

Pemasukan Data yang Efisien dengan pandas

Key

  • Rekaman database memiliki pengenal unik, atau key

Data katalog mata kuliah, dengan kolom instructor_id disorot. Nilai berupa bilangan bulat 9 digit.

Pemasukan Data yang Efisien dengan pandas

Key

Tabel professor, dengan kolom id disorot. Nilainya bilangan bulat 9 digit seperti instructor_id pada katalog mata kuliah.

Pemasukan Data yang Efisien dengan pandas

Key

Data katalog mata kuliah dengan kolom nama profesor telah digabungkan

Pemasukan Data yang Efisien dengan pandas

Menggabungkan Tabel

Data cuaca, dengan kolom date disorot

Data panggilan 311, dengan kolom created_date disorot

Pemasukan Data yang Efisien dengan pandas

Menggabungkan Tabel

SELECT *
  FROM hpd311calls
Pemasukan Data yang Efisien dengan pandas

Menggabungkan Tabel

SELECT *
  FROM hpd311calls
       JOIN weather 
       ON hpd311calls.created_date = weather.date;
  • Gunakan notasi titik (table.column) saat bekerja dengan banyak tabel
  • Join default hanya mengembalikan baris dengan key yang muncul di kedua tabel
  • Pastikan tipe data key sama atau tidak ada yang cocok
Pemasukan Data yang Efisien dengan pandas

Menggabungkan dan Memfilter

/* Ambil hanya panggilan heat/hot water dan gabungkan data cuaca */
SELECT *
  FROM hpd311calls
       JOIN weather 
       ON hpd311calls.created_date = weather.date
 WHERE hpd311calls.complaint_type = 'HEAT/HOT WATER';
Pemasukan Data yang Efisien dengan pandas

Menggabungkan dan Mengagregasi

/* Dapatkan jumlah panggilan per borough */
SELECT hpd311calls.borough, 
         COUNT(*)
  FROM hpd311calls
 GROUP BY hpd311calls.borough;
Pemasukan Data yang Efisien dengan pandas

Menggabungkan dan Mengagregasi

/* Dapatkan jumlah panggilan per borough
   dan gabungkan jumlah populasi serta unit hunian */
SELECT hpd311calls.borough, 
       COUNT(*), 
       boro_census.total_population,
       boro_census.housing_units
  FROM hpd311calls
 GROUP BY hpd311calls.borough
Pemasukan Data yang Efisien dengan pandas

Menggabungkan dan Mengagregasi

/* Dapatkan jumlah panggilan per borough
   dan gabungkan jumlah populasi serta unit hunian */
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;
Pemasukan Data yang Efisien dengan 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
Pemasukan Data yang Efisien dengan pandas

Ulasan

  • Urutan keyword SQL
    • SELECT
    • FROM
    • JOIN
    • WHERE
    • GROUP BY
Pemasukan Data yang Efisien dengan pandas

Ayo berlatih!

Pemasukan Data yang Efisien dengan pandas

Preparing Video For Download...