Alaska Energy Data Site

URL: ak-energy-data.analysisnorth.com

This site provides a number of different data sets related to Alaskan energy use. They are primarily useful for creating energy models that require weather data and fuel/utility costs. Much of the data comes from the AkWarm Energy Modeling software. There are two types of files on the site:

  1. the raw, source data files that contain the original data. These files are found in the raw subdirectory; and

  2. files that contain data processed from the original files. These files are found in the proc subdirectory. The processing often selects out a subset of fields and sometimes combines datasets together. The processed data is typically in two formats: a pickled and compressed (bz2) Python Pandas DataFrame, and a standard CSV file. Info on using the Pandas format is below.

You can access any of the data files by simply downloading them in your browser or another tool that can make HTTP requests. The file names and directory paths are indicated in the various sections below. You can also access the files via programming code, and examples are given below using the Python language. You can download this Jupyter Notebook and execute the sample code provided below to experiment with accessing the data. Here is the link to download this notebook. You will need Python 3.6+ installed to execute the code.

To see the code that was used to process the raw data into processed files, see this Notebook on the associated GitHub Site.

In [1]:
# Execute this cell prior to any of the cells below
import urllib
import io
import pandas as pd
import requests

Functions that Retrieve Data as a Pandas DataFrame or a CSV File

These Python functions can be used to retrieve the processed data on the site, either as a Pandas DataFrame or as CSV text.

In [2]:
base_url = 'http://ak-energy-data.analysisnorth.com/'

def get_df(file_path):
    """Returns a Pandas DataFrame that is found at the 'file_path'
    below the Base URL for accessing data.  The 'file_path' should end
    with '.pkl' and points to a pickled, compressed (bz2), Pandas DataFrame.
    """
    b = requests.get(urllib.parse.urljoin(base_url, file_path)).content
    df = pd.read_pickle(io.BytesIO(b), compression='bz2')
    return df

def get_csv(file_path):
    """Returns a string in CSV format that is found at the 'file_path'
    below the Base URL for accessing data.  The 'file_path' should end
    with '.csv' and points to a CSV data file.
    """
    txt = requests.get(urllib.parse.urljoin(base_url, file_path)).text
    return txt
    

Accessing City and Utility Data

Here are the data files available having City and Utility Data. The files in the city-util/proc directory contain processed data derived from data in the files found in the city-util/raw directory.

├── city-util
│   ├── proc
│   │   ├── city.csv
│   │   ├── city.pkl
│   │   ├── misc_info.csv
│   │   ├── misc_info.pkl
│   │   ├── utility.csv
│   │   └── utility.pkl
│   └── raw
│       ├── City Utility Links.xlsx
│       ├── City.xlsx
│       ├── Misc Info.xlsx
│       └── Utility.xlsx

For example, browser access to the utility.csv file would be: http://ak-energy-data.analysisnorth.com/city-util/proc/utility.csv

Access City Data

In [3]:
# Access as a Pandas DataFrame
df = get_df('city-util/proc/city.pkl')
df.head()
Out[3]:
Name Latitude Longitude ERHRegionID WAPRegionID ImpCost FuelRefer FuelCityID Oil1Price Oil2Price ... TMYname ElecUtilities GasPrice aris_city census_city census_area ancsa_region railbelt hub avg_elec_usage
ID
1 Anchorage 61.151958 -149.864105 2 2 1 False NaN 3.08 NaN ... ANCHORAGE INTL AP, AK [(Anchorage ML&P - Residential, 2), (Anchorage... 0.93955 Anchorage Anchorage municipality Anchorage municipality Cook Inlet Regional (CIRI) Railbelt True [674.3176110825001, 616.54369648225, 568.80201...
2 Adak 51.848896 -176.635422 2 3 5 False NaN 4.42 4.69 ... ADAK NAS, AK [(Adak -TDX Residential, 677), (Adak - TDX Com... NaN Adak Adak city Aleutians West Census Area Aleut Affordable Energy Strategy Area False [471.936998147, 423.45531781, 460.81549341, 42...
3 Akutan 54.134945 -165.772446 2 3 5 False NaN 2.91 2.91 ... DUTCH HARBOR, AK [(Akutan, City of - Residential, 9), (Akutan, ... NaN Akutan Akutan city Aleutians East Borough Aleut Affordable Energy Strategy Area False [500.99156233, 439.98431584599996, 456.5106555...
4 Allakaket 66.561386 -152.649445 4 4 5 False NaN 5.50 NaN ... BETTLES FIELD, AK [(Allakaket - APT - Residential, 249), (Allaka... NaN Allakaket Allakaket city Yukon-Koyukuk Census Area Doyon Affordable Energy Strategy Area False [338.509000744, 291.889556239, 276.804469551, ...
5 Angoon 57.496647 -134.578903 1 1 3 False NaN 4.10 4.08 ... SITKA JAPONSKI AP, AK [(Inside Passage Electric Coop - Residential, ... NaN Angoon Angoon city Hoonah-Angoon Census Area Sealaska Corporation Affordable Energy Strategy Area False [277.08055898099997, 257.757954545, 237.155612...

5 rows × 29 columns

In [4]:
# The first row in the table
df.iloc[0]
Out[4]:
Name                                                         Anchorage
Latitude                                                        61.152
Longitude                                                     -149.864
ERHRegionID                                                          2
WAPRegionID                                                          2
ImpCost                                                              1
FuelRefer                                                        False
FuelCityID                                                         NaN
Oil1Price                                                         3.08
Oil2Price                                                          NaN
PropanePrice                                                       4.5
BirchPrice                                                         325
SprucePrice                                                        345
CoalPrice                                                          175
SteamPrice                                                         NaN
HotWaterPrice                                                      NaN
MunicipalSalesTax                                                  NaN
BoroughSalesTax                                                    NaN
TMYid                                                           702730
TMYname                                          ANCHORAGE INTL AP, AK
ElecUtilities        [(Anchorage ML&P - Residential, 2), (Anchorage...
GasPrice                                                       0.93955
aris_city                                                    Anchorage
census_city                                     Anchorage municipality
census_area                                     Anchorage municipality
ancsa_region                                Cook Inlet Regional (CIRI)
railbelt                                                      Railbelt
hub                                                               True
avg_elec_usage       [674.3176110825001, 616.54369648225, 568.80201...
Name: 1, dtype: object
In [5]:
# Example that uses Python to access the data as CSV text.
# As mentioned above, the CSV files can be downloaded directly 
# with a browser by entering the appropriate URL, such as:
#
#      http://ak-energy-data.analysisnorth.com/city-util/proc/city.csv

txt = get_csv('city-util/proc/city.csv')
lines = txt.splitlines()
for i in range(5):
    print(lines[i])
ID,Name,Latitude,Longitude,ERHRegionID,WAPRegionID,ImpCost,FuelRefer,FuelCityID,Oil1Price,Oil2Price,PropanePrice,BirchPrice,SprucePrice,CoalPrice,SteamPrice,HotWaterPrice,MunicipalSalesTax,BoroughSalesTax,TMYid,TMYname,ElecUtilities,GasPrice,aris_city,census_city,census_area,ancsa_region,railbelt,hub,avg_elec_usage
1,Anchorage,61.1519584655762,-149.864105224609,2,2,1,False,,3.07999992370605,,4.5,325.0,345.0,175.0,,,,,702730,"ANCHORAGE INTL AP, AK","[('Anchorage ML&P - Residential', 2), ('Anchorage ML&P - Commercial - Sm', 293), ('Anchorage ML&P - Commercial - Lg', 480), ('Chugach Electric- Residential', 1), ('Chugach Electric - Commercial - Sm', 361), ('Chugach Electric - Commercial - Lg', 548)]",0.939549997448921,Anchorage,Anchorage municipality,Anchorage municipality,Cook Inlet Regional (CIRI),Railbelt,True,"[674.3176110825001, 616.54369648225, 568.8020181537499, 559.5290597065, 502.68865773625, 474.855271649, 467.94495386925, 483.58090842574995, 498.77690241749997, 532.8355384270001, 575.696935941, 610.274161992]"
2,Adak,51.8488960266113,-176.63542175293,2,3,5,False,,4.42000007629395,4.69000005722046,,,,,,,0.0399999991059303,,704540,"ADAK NAS, AK","[('Adak -TDX Residential', 677), ('Adak - TDX Commercial', 678)]",,Adak,Adak city,Aleutians West Census Area,Aleut,Affordable Energy Strategy Area,False,"[471.936998147, 423.45531781, 460.81549341, 424.29430280099996, 414.198261989, 408.02137305699995, 428.550250417, 419.71331168800003, 409.07778510199995, 425.893819855, 443.339960239, 463.328994468]"
3,Akutan,54.1349449157715,-165.772445678711,2,3,5,False,,2.91000008583069,2.91000008583069,,,,,,,,,704890,"DUTCH HARBOR, AK","[('Akutan, City of - Residential', 9), ('Akutan, City of - Commercial - Sm', 288), ('Akutan, City of - Commercial - Lg', 475)]",,Akutan,Akutan city,Aleutians East Borough,Aleut,Affordable Energy Strategy Area,False,"[500.99156233, 439.98431584599996, 456.510655517, 421.946346724, 426.966352624, 380.76338928900003, 392.608543794, 400.059089699, 410.11991491599997, 434.168674699, 445.715396996, 472.65755627]"
4,Allakaket,66.5613861083984,-152.649444580078,4,4,5,False,,5.5,,11.4399995803833,,,,,,,,701740,"BETTLES FIELD, AK","[('Allakaket - APT - Residential', 249), ('Allakaket - APT - Commercial - Sm', 291), ('Allakaket - APT- Commercial - Lg', 478)]",,Allakaket,Allakaket city,Yukon-Koyukuk Census Area,Doyon,Affordable Energy Strategy Area,False,"[338.509000744, 291.889556239, 276.804469551, 259.698748275, 241.22759162, 241.87788097700002, 237.01448643400002, 240.39129591, 250.339561607, 260.703968331, 289.122744033, 324.815682083]"

Access Utility Data

In [6]:
# Access as a Pandas DataFrame
df = get_df('city-util/proc/utility.pkl')
df.head()
Out[6]:
ID Name Active Type IsCommercial ChargesRCC PCE CO2 CustomerChg DemandCharge NameShort Blocks
ID
1 1 Chugach Electric- Residential True 1 False True 0.0000 1.10 8.00 NaN Chugac [(nan, 0.18715799739584343), (nan, nan), (nan,...
2 2 Anchorage ML&P - Residential True 1 False True NaN 1.10 13.62 NaN Anchor [(nan, 0.17457800125703232), (nan, nan), (nan,...
3 3 Golden Valley Electric - Residential True 1 False True NaN 2.28 17.50 NaN Golden [(nan, 0.22799800289794792), (nan, nan), (nan,...
5 5 Enstar Natural Gas - G1 (Res) True 2 False True 0.0000 NaN 16.00 NaN Enstar [(nan, 0.9405279974453149), (nan, nan), (nan, ...
6 6 Akhiok, City of Residential True 1 False False 0.3265 2.20 NaN NaN Akhiok [(nan, 0.800000011920929), (nan, nan), (nan, n...
In [7]:
# The first row in the table
df.iloc[0]
Out[7]:
ID                                                              1
Name                                Chugach Electric- Residential
Active                                                       True
Type                                                            1
IsCommercial                                                False
ChargesRCC                                                   True
PCE                                                             0
CO2                                                           1.1
CustomerChg                                                     8
DemandCharge                                                  NaN
NameShort                                                  Chugac
Blocks          [(nan, 0.18715799739584343), (nan, nan), (nan,...
Name: 1, dtype: object
In [8]:
# The "blocks" field is a Python list of tuples (rate, upper usage cut-off
# for the block.)
df.iloc[0].Blocks
Out[8]:
[(nan, 0.18715799739584343), (nan, nan), (nan, nan), (nan, nan), (nan, nan)]

Miscellaneous AkWarm City / Utility Info

In [9]:
# Access as a Pandas Series
series = get_df('city-util/proc/misc_info.pkl')
# This is really just one record so it is a Pandas Series object
series
Out[9]:
ID                                                                      1
LibVersion                                            2018-09-27 00:00:00
DiscountRate                                                         0.03
RegSurcharge                                                        0.004
RegSurchargeElectric                                             0.000978
PCEkWhLimit                                                           500
PCEFundingPct                                                           1
MiscNotes               Inflation factors and discount rate from 2011 ...
Name: 0, dtype: object

Access TMY3 Climate Data

All of the Alaska TMY3 (Typical Meterological Year) files are available, although only one site is included for Anchorage (International Airport). The files are named through use of the TMY3 Site ID. Original source files ar ein the wx/tmy3/raw directory. An Excel file containing ASHRAE 2017 Design Heating Temperatures for each TMY3 site is available (design_temps.xlsx). Further info on the processed files is below.

└── wx
    └── tmy3
        ├── proc
        │   ├── 700197.csv
        │   ├── 700197.pkl
        │   ├── 700260.csv
        │   ├── 700260.pkl
        │   ├── 700637.csv
        │   ├── 700637.pkl
            ... the rest of the Alaska TMY3 files
        │   ├── tmy3_meta.csv
        │   └── tmy3_meta.pkl
        └── raw
            ├── 700197.csv
            ├── 700260.csv
            ├── 700637.csv
            ├── 701043.csv
            ... the rest of the Alaska TMY3 files
            ├── design_temps.xlsx
In [10]:
df = get_df('wx/tmy3/proc/700197.pkl')
df.head()
# Units are IP (English), temperature in degrees F, rh in %, wind speed in miles per hour.
# Timestamps are placed in the middle of the hour with the year arbitrarily
# set to 2018.
Out[10]:
db_temp rh wind_spd month
timestamp
2018-01-01 00:30:00 17.60 84 16.105968 1
2018-01-01 01:30:00 19.58 83 16.105968 1
2018-01-01 02:30:00 19.22 87 16.329662 1
2018-01-01 03:30:00 16.34 84 16.329662 1
2018-01-01 04:30:00 17.60 81 16.553356 1
In [11]:
# There is a file with summary info about each site 
# available.
df = get_df('wx/tmy3/proc/tmy3_meta.pkl')
df.head()
Out[11]:
city db_temp_avg elevation heating_design_temp latitude longitude rh_avg state url utc_offset wind_spd_avg
tmy_id
703870 WRANGELL 43.072918 42.65092 15.8 56.483 -132.367 75.674315 AK http://ak-energy-data.analysisnorth.com/wx/tmy... -9.0 5.976894
700260 BARROW W POST-W ROGERS ARPT [NSA - ARM] 10.729712 32.80840 -34.3 71.320 -156.620 84.193950 AK http://ak-energy-data.analysisnorth.com/wx/tmy... -9.0 12.178734
702750 VALDEZ WSO 39.336438 22.96588 7.1 61.133 -146.350 74.864498 AK http://ak-energy-data.analysisnorth.com/wx/tmy... -9.0 6.165962
702185 MEKORYUK 33.632329 49.21260 -10.6 60.367 -166.267 80.209817 AK http://ak-energy-data.analysisnorth.com/wx/tmy... -9.0 14.999576
702510 TALKEETNA STATE ARPT 35.236486 344.48820 -17.6 62.317 -150.100 74.301826 AK http://ak-energy-data.analysisnorth.com/wx/tmy... -9.0 5.276497

NEEP Cold-Climate Air Source Heat Pump Specifications

See (http://www.neep.org/initiatives/high-efficiency-products/emerging-technologies/ashp/cold-climate-air-source-heat-pump) for more info about the data. The original NEEP spreadsheet is found at heat-pump/raw/neep_ashp_data.xlsx

├── heat-pump
│   ├── proc
│   │   ├── hp_specs.csv
│   │   └── hp_specs.pkl
│   └── raw
│       └── neep_ashp_data.xlsx
In [12]:
# The processed data only includes the Ductless, mini-split models.
df = get_df('heat-pump/proc/hp_specs.pkl')
df.head()
Out[12]:
brand ahri_num zones outdoor_model indoor_model hspf in_pwr_5F_max capacity_5F_max in_pwr_47F_min cop_5F_max cop_17F_max cop_47F_max
0 Acd 202110483 Single UHD09KCH38S-O UHD09KCH38S-I 15.0 1.82 12977.0 0.20 2.089661 2.405652 2.657178
1 Acd 201863350 Single OCD09KCH23S-O OCD09KCH23S-I 10.5 1.33 9171.0 0.16 2.020868 2.183096 2.605076
2 Acd 202110500 Multi MPD30KCH21S-O Non-Ducted Indoor Units 11.5 3.01 19356.0 1.05 1.884613 3.126091 3.584757
3 Acd 202110494 Multi MPD18KCH22S-O Non-Ducted Indoor Units 11.0 2.30 13450.0 0.75 1.713829 2.415259 2.365502
4 Acd 202132789 Single UHD24KCH22S-O UHD24KCH22S-I 12.0 3.20 22553.0 0.38 2.065510 2.277197 2.534669