💻 Примеры
⚡ Кратко: суть занятия
Практикум 13 закрепляет связку Colab → pandas → SQLite → SQL-запрос.
Источник просит создать таблицу погоды за последние 7 дней и включить дату, дневную и ночную температуру, световой день, ветер, влажность и давление.
В коде лучше использовать английские имена столбцов: date, day_temp_c, night_temp_c, humidity_pct и другие.
После создания weather_df таблица записывается в SQLite через to_sql('weather', conn, if_exists='replace', index=False).
Минимальные запросы практикума: все строки, последние 3 дня, средняя ночная температура, день с максимальной влажностью.
Для последних 3 дней используется ORDER BY date DESC LIMIT 3, потому что в таблице есть 7 дат.
Топ-3 ошибки: не отсортировать даты перед LIMIT, оставить пробелы/кириллицу в SQL-именах, забыть закрыть подключение.
Рабочий пример таблицы погоды
import pandas as pd
import sqlite3
from datetime import datetime, timedelta
today = datetime.now()
dates = [today - timedelta(days=i) for i in range(7)]
data = {
'date': [day.strftime('%Y-%m-%d') for day in dates],
'day_temp_c': [23, 25, 22, 20, 21, 24, 26],
'night_temp_c': [15, 16, 14, 13, 15, 17, 18],
'daylight_hours': [14, 14, 13, 13, 14, 14, 13],
'wind_speed_m_s': [5, 6, 7, 5, 4, 6, 7],
'humidity_pct': [65, 70, 68, 72, 71, 69, 66],
'pressure_mm_hg': [1012, 1015, 1013, 1011, 1014, 1016, 1013]
}
weather_df = pd.DataFrame(data)
weather_df
Запись в SQLite
db_path = 'weather_database.db'
conn = sqlite3.connect(db_path)
weather_df.to_sql('weather', conn, if_exists='replace', index=False)
Запросы
queries = {
'all_rows': 'SELECT * FROM weather;',
'last_3_days': 'SELECT * FROM weather ORDER BY date DESC LIMIT 3;',
'avg_night_temp': 'SELECT AVG(night_temp_c) AS avg_night_temp_c FROM weather;',
'max_humidity_day': 'SELECT date, humidity_pct FROM weather ORDER BY humidity_pct DESC LIMIT 1;'
}
for name, query in queries.items():
print(f'--- {name} ---')
print(pd.read_sql_query(query, conn))