Примечание. Я написал версию этой статьи для Python, вы можете получить доступ к этой статье здесь. Начало каждой статьи одинаковое. В нем рассказывается, как зарегистрироваться в EIA API и получить ключ API.

Управление энергетической информации (EIA) отвечает за статистику и данные Министерства энергетики США. Существует множество данных и информации обо всем, что связано с энергетикой в ​​Соединенных Штатах, включая данные о возобновляемых источниках энергии, ядерной энергии, сырой нефти, бензине, реактивном топливе, дизельном топливе, электричестве и природном газе.

Однако навигация и поиск данных на веб-сайте EIA может быть сложной задачей. Чтобы помочь в этом, EIA создала API для облегчения доступа. Вы можете найти API по адресу www.eia.com/opendata. EIA публикует новые данные еженедельно, ежемесячно или ежегодно в зависимости от различных типов данных. API очень полезен для обновления еженедельных и ежемесячных данных при их выпуске.

Доступ к API - ключ API

Для начала вам необходимо получить ключ API от EIA. Перейдите на www.eia.com/opendata и нажмите кнопку Зарегистрироваться сейчас.

Это приведет вас к форме регистрации, которая выглядит примерно так. Введите свои данные и нажмите «Зарегистрироваться». Вам будет отправлено электронное письмо с вашим новым ключом API. Он может быть отправлен в вашу папку нежелательной почты, поэтому обязательно проверьте там, если вы не получили ключ API в течение нескольких минут.

Поиск наборов данных

Теперь вы можете искать наборы данных, которые хотите получить, через API. Вы можете просмотреть наборы данных, нажав Обзор запросов API на домашней странице API.

На следующей странице вы можете щелкнуть ссылки в разделе «Дочерние категории» для поиска нужных вам данных.

Другой способ поиска данных - щелкнуть «Источники и использование» вверху страницы и просмотреть веб-сайт. Когда вы сталкиваетесь с нужным набором данных, EIA обычно публикует ссылку на этот набор данных в API.

Получение идентификатора серии

Каждой серии данных присваивается определенный идентификатор серии. Вы будете использовать этот идентификатор серии вместе со своим ключом API, чтобы извлечь набор данных из базы данных. Например, на рисунке ниже показан идентификатор серии для данных о потреблении сырой нефти в PADD 3 (побережье Мексиканского залива США). Код позволяет одновременно выводить несколько серий. Следите за идентификаторами всех серий, которые хотите использовать.

Забавный факт: PADD означает Нефтяное управление округа обороны. Эти районы были созданы в 1942 году во время Второй мировой войны для организации распределения топлива, такого как бензин и дизельное топливо. Сегодня PADD все еще используются для организации данных по регионам.

Получение данных с помощью R

Теперь, когда у нас есть ключ API и идентификаторы серий, мы можем написать код R для доступа к данным. Сначала импортируйте необходимые библиотеки. Нам нужно использовать библиотеки httr и jsonlite.

#Import libraries
install.packages(c("httr", "jsonlite"))
library(httr)
library(jsonlite)

Теперь вставьте свой ключ API в код. Затем вставьте идентификаторы серий, которые хотите получить. Разделите идентификаторы серий запятыми. Вы также можете выбрать диапазон дат, который хотите извлечь, используя переменные startdate и enddate.

# API Key from EIA
key <- 'PASTE YOUR API KEY HERE'
# Paste your Series IDs in the list, separated by commas
padd_key <- list('PET.MCRRIP12.M','PET.MCRRIP22.M',
                 'PET.MCRRIP32.M','PET.MCRRIP42.M',
                 'PET.MCRRIP52.M')
# Choose the start and end dates
startdate <- "2010-01-01" #YYYY-MM-DD
enddate <- "2020-01-01" #YYYY-MM-DD

Наконец, вызовите API, чтобы получить данные в формате json. Ваша URL-ссылка может измениться в зависимости от того, какой набор данных вы извлекаете. Чтобы проверить точный URL-адрес, перейдите по ссылке «API CALL TO USE» в браузере запросов API.

ПРИЗЫВ API ДЛЯ ИСПОЛЬЗОВАНИЯ Ссылка - это ссылка, которую необходимо использовать для загрузки API. Он может отличаться от кода, приведенного ниже. При необходимости замените ссылку в переменной «url» соответствующей ссылкой API CALL TO USE.

Код выполнит цикл по каждому выбранному вами идентификатору серии, извлечет данные в формате json и затем преобразует их во фрейм данных R. Теперь у вас есть фрейм данных R, которым легко манипулировать, анализировать и визуализировать как угодно!

Зайдите на мой GitHub, чтобы загрузить код.

j = 0
for (i in padd_key) {
url <- paste('http://api.eia.gov/series/api_key=',key,'&series_id=',i,sep="")
  # Make the call to the EIA's API
  res <- GET(url)
  json_data <- fromJSON(rawToChar(res$content))
  data <- data.frame(json_data$series$data)
  data$Year <- substr(data$X1,1,4)
  data$Month <- substr(data$X1,5,6)
  data$Day <- 1
# Create date format
  data$Date <- as.Date(paste(data$Year, data$Month, data$Day,    sep=''))
 # Rename the column to its given name from the EIA
  colnames(data)[2]  <- json_data$series$name
 # Drop the unnecessary date columns
  data <- data[-c(1,3,4,5)]
  
  if (j == 0){
    data_final <- data
  }
  else{
    data_final <- merge(data_final,data,by="Date")
  }
  
  j = j + 1
}
# Splice the data between the start and end dates
data_final <- subset(data_final, Date >= startdate & Date <= enddate)

Окончательный фрейм данных будет выглядеть, как на изображении ниже.