Уточнення імпорту за допомогою SQL-запитів

Оптимізоване завантаження даних із pandas

Amany Mahfouz

Instructor

Вибір стовпців із SELECT

  • SELECT [column names] FROM [table name];
  • Приклад:
    SELECT date, tavg 
    FROM weather;
    
Оптимізоване завантаження даних із pandas

Умови WHERE

  • Використайте конструкцію WHERE, щоб вибірково імпортувати записи
    SELECT [column_names] 
      FROM [table_name] 
     WHERE [condition];
    
Оптимізоване завантаження даних із pandas

Фільтрування за числами

  • Порівнюйте числа математичними операторами
    • =
    • > і >=
    • < і <=
    • <> (не дорівнює)
    • Приклад:
      SELECT * 
      FROM weather 
      WHERE tmax > 32;
      
Оптимізоване завантаження даних із pandas

Фільтрування тексту

  • Точна перевірка рядків: знак = і потрібний текст
  • Розрізняє великі й малі літери
  • Приклад:
    /* Отримати записи про інциденти в Брукліні */
    SELECT * 
    FROM hpd311calls
    WHERE borough = 'BROOKLYN';
    
Оптимізоване завантаження даних із pandas

SQL і pandas

# Імпорт бібліотек
import pandas as pd
from sqlalchemy import create_engine

# Створити рушій бази даних engine = create_engine("sqlite:///data.db")
# Запит для отримання записів з Брукліна query = """SELECT * FROM hpd311calls WHERE borough = 'BROOKLYN';"""
# Виконати запит до бази brooklyn_calls = pd.read_sql(query, engine)
print(brookyn_calls.borough.unique())
['BROOKLYN']
Оптимізоване завантаження даних із pandas

Комбінування умов: AND

  • WHERE із AND повертає записи, що відповідають усім умовам
# Запит для заявок щодо сантехніки у Бронксі
and_query = """SELECT * 
                 FROM hpd311calls 
                WHERE borough = 'BRONX' 
                  AND complaint_type = 'PLUMBING';"""

# Отримати звернення щодо сантехнічних проблем у Бронксі bx_plumbing_calls = pd.read_sql(and_query, engine) # Перевірити кількість записів print(bx_plumbing_calls.shape)
(2016, 8)
Оптимізоване завантаження даних із pandas

Комбінування умов: OR

  • WHERE із OR повертає записи, що відповідають принаймні одній умові
# Запит для витоків води або сантехніки
or_query = """SELECT * 
                FROM hpd311calls 
               WHERE complaint_type = 'WATER LEAK'
                  OR complaint_type = 'PLUMBING';"""

# Отримати звернення щодо сантехніки або витоків води leaks_or_plumbing = pd.read_sql(or_query, engine) # Перевірити кількість записів print(leaks_or_plumbing.shape)
(10684, 8)
Оптимізоване завантаження даних із pandas

Давайте потренуємось!

Оптимізоване завантаження даних із pandas

Preparing Video For Download...