Truy vấn SQL phức tạp hơn

Nạp dữ liệu gọn nhẹ với pandas

Amany Mahfouz

Instructor

Lấy giá trị DISTINCT

  • Lấy giá trị duy nhất cho một hay nhiều cột với SELECT DISTINCT
  • Cú pháp:
    SELECT DISTINCT [column names] FROM [table];
    
  • Xóa bản ghi trùng lặp:
    SELECT DISTINCT * FROM [table];
    
/* Lấy địa chỉ và quận (borough) duy nhất */
SELECT DISTINCT incident_address, 
       borough
  FROM hpd311calls;
Nạp dữ liệu gọn nhẹ với pandas

Hàm tổng hợp

  • Truy vấn thống kê mô tả trực tiếp từ cơ sở dữ liệu
  • Hàm tổng hợp
    • SUM
    • AVG
    • MAX
    • MIN
    • COUNT
Nạp dữ liệu gọn nhẹ với pandas

Hàm tổng hợp

  • SUM, AVG, MAX, MIN
    • Mỗi hàm nhận một tên cột
      SELECT AVG(tmax) FROM weather;
      
  • COUNT
    • Đếm số hàng thỏa điều kiện truy vấn
      SELECT COUNT(*) FROM [table_name];
      
    • Đếm số giá trị duy nhất trong cột
      SELECT COUNT(DISTINCT [column_names]) FROM [table_name];
      
Nạp dữ liệu gọn nhẹ với pandas

GROUP BY

  • Mặc định, hàm tổng hợp trả về một thống kê tóm tắt
  • Tóm tắt theo nhóm với GROUP BY
  • Nhớ chọn cả cột dùng để nhóm!
/* Đếm số cuộc gọi sửa ống nước theo quận */
SELECT borough, 
       COUNT(*) 
  FROM hpd311calls
 WHERE complaint_type = 'PLUMBING'
 GROUP BY borough;
Nạp dữ liệu gọn nhẹ với pandas

Đếm theo nhóm

# Tạo engine cơ sở dữ liệu
engine = create_engine("sqlite:///data.db")

# Viết truy vấn đếm số cuộc gọi sửa ống nước theo quận query = """SELECT borough, COUNT(*) FROM hpd311calls WHERE complaint_type = 'PLUMBING' GROUP BY borough;"""
# Truy vấn CSDL và tạo dataframe plumbing_call_counts = pd.read_sql(query, engine)
Nạp dữ liệu gọn nhẹ với pandas

Đếm theo nhóm

print(plumbing_call_counts)
         borough  COUNT(*)
0          BRONX      2016
1       BROOKLYN      2702
2      MANHATTAN      1413
3         QUEENS       808
4  STATEN ISLAND       178
Nạp dữ liệu gọn nhẹ với pandas

Ayo berlatih!

Nạp dữ liệu gọn nhẹ với pandas

Preparing Video For Download...