Существует ли бесплатный API данных исторических данных с поддержкой широты и долготы?

Я хочу извлечь (бесплатно) исторические данные о погоде для некоторых стран (точнее, провинций / штатов в некоторых странах) по широте / долготе, и мне нужны результаты в виде файла.csv или фрейма данных pandas. Я пробовал оболочку для Forecast.io / DarkSky ( https://zeevgilovitz.com/python-forecast.io/), но он ограничен 1000 запросов в день. Поэтому мне было интересно, есть ли какой-нибудь бесплатный API, который возвращает фрейм данных pandas или формат.csv и поддерживает запросы долготы / долготы?

Вот что я попробовал (и что также работает, если вы хотите только 1000 запросов в день).

lat = 30
lng = 5
start_date = datetime.datetime(2016, 1, 1)
attributes = ["temperature", "humidity", "pressure", "windSpeed"]


def getWeatherData(lat, lng, start_date, attributes):

    times = []
    data = {}

    for attr in attributes:
        data[attr] = []

    for offset in range(1, 1000):
        forecast = forecastio.load_forecast(api_key, lat, lng, time=start_date+datetime.timedelta(offset), units="us")
        h = forecast.hourly()
        d = h.data

        for p in d:
            times.append(p.time)
            for attr in attributes:
                data[attr].append(p.d[attr])

    weather_data = pd.DataFrame(data, index=times)

    return weather_data

1 ответ

https://openweathermap.org/price имеет API с некоторыми бесплатными планами, которых может быть достаточно, если вам нужно < 1000 звонков в день.

Он не возвращает данные в форматах csv или DataFrame, но панды могут обрабатывать возвращаемый формат json.

Пример:

      import requests
import json
import pandas as pd

url = 'https://api.openweathermap.org/data/2.5/onecall?lat=33.44&lon=-94.04&exclude=hourly,minutely&appid=<api_key_hidden>'
data = requests.get(url).json()

df = pd.DataFrame.from_dict(data['daily'])
Другие вопросы по тегам