Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save kperry2215/6ea4380acde06025be0a6fdba82c02ce to your computer and use it in GitHub Desktop.
Save kperry2215/6ea4380acde06025be0a6fdba82c02ce to your computer and use it in GitHub Desktop.
import eia
import pandas as pd
def retrieve_time_series(api, series_ID):
"""
Return the time series dataframe, based on API and unique Series ID
api: API that we're connected to
series_ID: string. Name of the series that we want to pull from the EIA API
"""
#Retrieve Data By Series ID
series_search = api.data_by_series(series=series_ID)
##Create a pandas dataframe from the retrieved time series
df = pd.DataFrame(series_search)
return df
#####Main block
#Create EIA API using your specific API key
api_key = 'd5c759bbe26b1a70f495e4aecadcf684'
api = eia.API(api_key)
#Pull the electricity price data
series_ID='EBA.TEX-ALL.D.H'
electricity_demand_df=retrieve_time_series(api, series_ID)
electricity_demand_df.reset_index(level=0, inplace=True)
#Rename the columns for easer analysis
electricity_demand_df.rename(columns={'index':'Date_Time',
electricity_demand_df.columns[1]:'Electricity_Demand_MWh'},
inplace=True)
#Format the 'Date' column
electricity_demand_df['Date_Time']=electricity_demand_df['Date_Time'].astype(str).str[:-4]
#Remove the 'T' from the Date column
electricity_demand_df['Date_Time'] = electricity_demand_df['Date_Time'].str.replace('T' , ' ')
#Convert the Date column into a date object
electricity_demand_df['Date_Time']=pd.to_datetime(electricity_demand_df['Date_Time'], format='%Y %m%d %H')
#Plot the data on a yearly basis, using 2019 as an example year
plot_data(df=electricity_demand_df[(electricity_demand_df['Date_Time']>=pd.to_datetime('2019-01-01')) &
(electricity_demand_df['Date_Time']<pd.to_datetime('2020-01-01'))],
x_variable='Date_Time',
y_variable='Electricity_Demand_MWh',
title='TX Electricity Demand: 2019')
#Plot the data on a monthly basis, using December 2017 as an example
plot_data(df=electricity_demand_df[(electricity_demand_df['Date_Time']>=pd.to_datetime('2017-12-01')) &
(electricity_demand_df['Date_Time']<pd.to_datetime('2018-01-01'))],
x_variable='Date_Time',
y_variable='Electricity_Demand_MWh',
title='TX Electricity Demand: December 2017')
#Plot the data on a weekly basis, using July 1-7, 2019 as an example
plot_data(df=electricity_demand_df[(electricity_demand_df['Date_Time']>=pd.to_datetime('2019-07-01')) &
(electricity_demand_df['Date_Time']<pd.to_datetime('2019-07-07'))],
x_variable='Date_Time',
y_variable='Electricity_Demand_MWh',
title='TX Electricity Demand: December 2017')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment