Tinh chỉnh nhập với truy vấn SQL

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

Amany Mahfouz

Instructor

Chọn cột với SELECT

  • SELECT [column names] FROM [table name];
  • Ví dụ:
    SELECT date, tavg 
    FROM weather;
    
Nạp dữ liệu gọn nhẹ với pandas

Mệnh đề WHERE

  • Dùng mệnh đề WHERE để nhập chọn lọc bản ghi
    SELECT [column_names] 
      FROM [table_name] 
     WHERE [condition];
    
Nạp dữ liệu gọn nhẹ với pandas

Lọc theo số

  • So sánh số bằng toán tử
    • =
    • >>=
    • <<=
    • <> (khác)
    • Ví dụ:
      SELECT * 
      FROM weather 
      WHERE tmax > 32;
      
Nạp dữ liệu gọn nhẹ với pandas

Lọc văn bản

  • Khớp chuỗi chính xác với dấu = và văn bản cần khớp
  • Phân biệt chữ hoa/thường
  • Ví dụ:
    /* Lấy bản ghi về sự cố ở Brooklyn */
    SELECT * 
    FROM hpd311calls
    WHERE borough = 'BROOKLYN';
    
Nạp dữ liệu gọn nhẹ với pandas

SQL và pandas

# Nạp thư viện
import pandas as pd
from sqlalchemy import create_engine

# Tạo engine cơ sở dữ liệu engine = create_engine("sqlite:///data.db")
# Viết truy vấn lấy bản ghi từ Brooklyn query = """SELECT * FROM hpd311calls WHERE borough = 'BROOKLYN';"""
# Truy vấn cơ sở dữ liệu brooklyn_calls = pd.read_sql(query, engine)
print(brookyn_calls.borough.unique())
['BROOKLYN']
Nạp dữ liệu gọn nhẹ với pandas

Kết hợp điều kiện: AND

  • Mệnh đề WHERE với AND trả về bản ghi thỏa mãn tất cả điều kiện
# Viết truy vấn lấy bản ghi về đường ống ở Bronx
and_query = """SELECT * 
                 FROM hpd311calls 
                WHERE borough = 'BRONX' 
                  AND complaint_type = 'PLUMBING';"""

# Lấy cuộc gọi về sự cố đường ống ở Bronx bx_plumbing_calls = pd.read_sql(and_query, engine) # Kiểm tra số bản ghi print(bx_plumbing_calls.shape)
(2016, 8)
Nạp dữ liệu gọn nhẹ với pandas

Kết hợp điều kiện: OR

  • Mệnh đề WHERE với OR trả về bản ghi thỏa ít nhất một điều kiện
# Viết truy vấn lấy bản ghi về rò rỉ nước hoặc đường ống
or_query = """SELECT * 
                FROM hpd311calls 
               WHERE complaint_type = 'WATER LEAK'
                  OR complaint_type = 'PLUMBING';"""

# Lấy cuộc gọi về đường ống hoặc rò rỉ nước leaks_or_plumbing = pd.read_sql(or_query, engine) # Kiểm tra số bản ghi print(leaks_or_plumbing.shape)
(10684, 8)
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...