Создать Python-скрипт в Jupyter Notebook

Условие:

Интегрировать данные о погоде через API. Создайте Python-скрипт в Jupyter Notebook. Используйте Open-Meteo API для получения данных о погоде (минимальная температура) за декабрь 2024 года для каждого города в системе. Сохраните код в файл module1_weather_api.py.

Условие: Интегрировать данные о погоде через API. 
Создайте Python-скрипт в Jupyter Notebook. Используйте Open-Meteo API для получения 
данных о погоде (минимальная температура) за декабрь 2024 года для каждого города в 
системе. Сохраните код в файл module1_weather_api.py.

Решение:

Предмет: Информатика
Раздел: Работа с API, обработка данных, базы данных, Python-программирование


Задание:

Создать Python-скрипт в Jupyter Notebook, который:

  1. Использует Open-Meteo API для получения данных о минимальной температуре за декабрь 2024 года.
  2. Получает данные для всех городов, перечисленных в таблице cities.
  3. Сохраняет результат в таблицу weather.
  4. Сохраняет код в файл module1_weather_api.py.

Шаги решения:

? 1. Получение списка городов

Из таблицы cities извлекаются:

  • city_name
  • latitude
  • longitude

? 2. Использование Open-Meteo API

Open-Meteo предоставляет погодные данные по широте и долготе. Пример запроса:

https://archive-api.open-meteo.com/v1/archive?latitude=52.52&longitude=13.41&start_date=2024-12-01&end_date=2024-12-31&daily=temperature_2m_min&timezone=auto

? 3. Обработка данных

Извлекается минимальная температура на каждый день декабря 2024 года для каждого города.

? 4. Сохранение в таблицу weather

Поля:

  • city_id
  • weather_date
  • min_temperature

? Код для Jupyter Notebook (module1_weather_api.py):

# module1_weather_api.py

import requests
import sqlite3
from datetime import datetime, timedelta

# Подключение к базе данных (замените на свой путь)
conn = sqlite3.connect('your_database.db')
cursor = conn.cursor()

# Получение списка городов
cursor.execute("SELECT city_id, city_name, latitude, longitude FROM cities")
cities = cursor.fetchall()

# Даты для декабря 2024
start_date = "2024-12-01"
end_date = "2024-12-31"

# Базовый URL Open-Meteo API
base_url = "https://archive-api.open-meteo.com/v1/archive"

# Обход всех городов
for city_id, city_name, lat, lon in cities:
    params = {
        "latitude": lat,
        "longitude": lon,
        "start_date": start_date,
        "end_date": end_date,
        "daily": "temperature_2m_min",
        "timezone": "auto"
    }

    response = requests.get(base_url, params=params)
    if response.status_code == 200:
        data = response.json()
        dates = data["daily"]["time"]
        temps = data["daily"]["temperature_2m_min"]

        for date_str, temp in zip(dates, temps):
            cursor.execute("""
                INSERT INTO weather (city_id, weather_date, min_temperature)
                VALUES (?, ?, ?)
            """, (city_id, date_str, temp))
        print(f"✅ Данные добавлены для города: {city_name}")
    else:
        print(f"❌ Ошибка при получении данных для города: {city_name}")

# Сохраняем изменения
conn.commit()
conn.close()

? Дополнительные замечания:

  • Убедитесь, что таблица weather существует.
  • Проверьте наличие подключения к интернету.
  • Убедитесь, что вы используете правильный путь к вашей базе данных SQLite.
  • Open-Meteo API не требует ключа, что делает его удобным для использования.

Если нужно — могу помочь адаптировать код под PostgreSQL или MySQL.

Не нашли нужного вам решения? Оставьте заявку и наши авторы быстро и качественно помогут вам с решением.
Оставить заявку
Работа вам нужна срочно. Не волнуйтесь, уложимся!
  • 22423 авторов готовы помочь тебе.
  • 2402 онлайн