การโหลดหลายตารางด้วย join

การนำเข้าข้อมูลด้วย pandas อย่างมีประสิทธิภาพ

Amany Mahfouz

Instructor

Key

  • ระเบียนในฐานข้อมูลมีตัวระบุเฉพาะ หรือที่เรียกว่า key

ข้อมูลสาย 311 โดยไฮไลต์คอลัมน์ unique_key ซึ่งเป็นตัวเลข

การนำเข้าข้อมูลด้วย pandas อย่างมีประสิทธิภาพ

Key

  • ระเบียนในฐานข้อมูลมีตัวระบุเฉพาะ หรือที่เรียกว่า key

ข้อมูลแคตาล็อกคอร์ส โดยไฮไลต์คอลัมน์ course_code ซึ่งประกอบด้วยตัวย่อวิชาและตัวเลข

การนำเข้าข้อมูลด้วย pandas อย่างมีประสิทธิภาพ

Key

  • ระเบียนในฐานข้อมูลมีตัวระบุเฉพาะ หรือที่เรียกว่า key

ข้อมูลแคตาล็อกคอร์ส โดยไฮไลต์คอลัมน์ instructor_id ซึ่งเป็นจำนวนเต็ม 9 หลัก

การนำเข้าข้อมูลด้วย pandas อย่างมีประสิทธิภาพ

Key

ตารางอาจารย์ โดยไฮไลต์คอลัมน์ id ซึ่งเป็นจำนวนเต็ม 9 หลักเหมือนกับ instructor_id ในแคตาล็อกคอร์ส

การนำเข้าข้อมูลด้วย pandas อย่างมีประสิทธิภาพ

Key

ข้อมูลแคตาล็อกคอร์สพร้อมคอลัมน์ชื่ออาจารย์ที่ถูก join เข้ามา

การนำเข้าข้อมูลด้วย pandas อย่างมีประสิทธิภาพ

การ Join ตาราง

ข้อมูลสภาพอากาศ โดยไฮไลต์คอลัมน์ date

ข้อมูลสาย 311 โดยไฮไลต์คอลัมน์ created_date

การนำเข้าข้อมูลด้วย pandas อย่างมีประสิทธิภาพ

การ Join ตาราง

SELECT *
  FROM hpd311calls
การนำเข้าข้อมูลด้วย pandas อย่างมีประสิทธิภาพ

การ Join ตาราง

SELECT *
  FROM hpd311calls
       JOIN weather 
       ON hpd311calls.created_date = weather.date;
  • ใช้ dot notation (table.column) เมื่อทำงานกับหลายตาราง
  • การ join แบบปกติจะคืนเฉพาะระเบียนที่มีค่า key ปรากฏในทั้งสองตาราง
  • ตรวจสอบให้แน่ใจว่า join key มีชนิดข้อมูลเดียวกัน มิฉะนั้นจะไม่มีค่าตรงกัน
การนำเข้าข้อมูลด้วย pandas อย่างมีประสิทธิภาพ

การ Join และการกรองข้อมูล

/* Get only heat/hot water calls and join in weather data */
SELECT *
  FROM hpd311calls
       JOIN weather 
       ON hpd311calls.created_date = weather.date
 WHERE hpd311calls.complaint_type = 'HEAT/HOT WATER';
การนำเข้าข้อมูลด้วย pandas อย่างมีประสิทธิภาพ

การ Join และการรวมข้อมูล

/* Get call counts by borough */
SELECT hpd311calls.borough, 
         COUNT(*)
  FROM hpd311calls
 GROUP BY hpd311calls.borough;
การนำเข้าข้อมูลด้วย pandas อย่างมีประสิทธิภาพ

การ Join และการรวมข้อมูล

/* Get call counts by borough
   and join in population and housing counts */
SELECT hpd311calls.borough, 
       COUNT(*), 
       boro_census.total_population,
       boro_census.housing_units
  FROM hpd311calls
 GROUP BY hpd311calls.borough
การนำเข้าข้อมูลด้วย pandas อย่างมีประสิทธิภาพ

การ Join และการรวมข้อมูล

/* Get call counts by borough
   and join in population and housing counts */
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;
การนำเข้าข้อมูลด้วย 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
การนำเข้าข้อมูลด้วย pandas อย่างมีประสิทธิภาพ

ทบทวน

  • ลำดับ keyword ใน SQL
    • SELECT
    • FROM
    • JOIN
    • WHERE
    • GROUP BY
การนำเข้าข้อมูลด้วย pandas อย่างมีประสิทธิภาพ

มาฝึกกันเถอะ!

การนำเข้าข้อมูลด้วย pandas อย่างมีประสิทธิภาพ

Preparing Video For Download...