diff --git a/scout/supporting_data/base_disagg/._2024_Convert_All.ipynb b/scout/supporting_data/base_disagg/._2024_Convert_All.ipynb new file mode 100644 index 00000000..f0a179fb Binary files /dev/null and b/scout/supporting_data/base_disagg/._2024_Convert_All.ipynb differ diff --git a/scout/supporting_data/base_disagg/._test01_factors_differences.ipynb b/scout/supporting_data/base_disagg/._test01_factors_differences.ipynb new file mode 100644 index 00000000..f0a179fb Binary files /dev/null and b/scout/supporting_data/base_disagg/._test01_factors_differences.ipynb differ diff --git a/scout/supporting_data/base_disagg/._test03_Validate_RECS_SEDS.ipynb b/scout/supporting_data/base_disagg/._test03_Validate_RECS_SEDS.ipynb new file mode 100644 index 00000000..f0a179fb Binary files /dev/null and b/scout/supporting_data/base_disagg/._test03_Validate_RECS_SEDS.ipynb differ diff --git a/scout/supporting_data/base_disagg/._test04_nan_compare.ipynb b/scout/supporting_data/base_disagg/._test04_nan_compare.ipynb new file mode 100644 index 00000000..f0a179fb Binary files /dev/null and b/scout/supporting_data/base_disagg/._test04_nan_compare.ipynb differ diff --git a/scout/supporting_data/base_disagg/2024_Convert_All.ipynb b/scout/supporting_data/base_disagg/2024_Convert_All.ipynb new file mode 100644 index 00000000..332e8ef4 --- /dev/null +++ b/scout/supporting_data/base_disagg/2024_Convert_All.ipynb @@ -0,0 +1,1896 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "a654fe74-db43-4f1c-8b70-801683f35baa", + "metadata": {}, + "source": [ + "### OUTPUT COLUMN NAMES" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9812a794-435f-4986-a617-478efbb751ba", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [], + "source": [ + "### ResStock 2024 ComStock 2024\n", + "import pandas as pd\n", + "e_st = 'out.electricity.'\n", + "r_st = '.energy_consumption'\n", + "\n", + "df_order = pd.DataFrame({\n", + " 'no': [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],\n", + " 'emm_intersect': [\"TRE\",\"FRCC\",\"MISW\",\"MISC\",\"MISE\",\"MISS\",\"ISNE\",\"NYCW\",\"NYUP\",\"PJME\",\"PJMW\",\"PJMC\",\"PJMD\",\"SRCA\",\"SRSE\",\"SRCE\",\"SPPS\",\"SPPC\",\"SPPN\",\"SRSG\",\"CANO\",\"CASO\",\"NWPP\",\"RMRG\",\"BASN\"]\n", + "})\n", + "\n", + "def get_scout_geo():\n", + " file = 'scout_geography.csv'\n", + " df = pd.read_csv(file, dtype=str)\n", + "\n", + " df['fips_code'] = df['fips_code'].str.zfill(5)\n", + " df['gisjoin'] = df['fips_code'].apply(\n", + " lambda x: 'G' + str(x)[:2] + '0' + str(x)[2:] + '0')\n", + " df.to_csv(f'new_{file}', index=False)\n", + " return df\n", + "\n", + "scoutgeo_df = get_scout_geo()\n", + "\n", + "indir = 'input'\n", + "outdir = 'output'\n", + "building_types = ['commercial','residential']\n", + "substrings = [\".savings\", \"out.electricity.peak_\", \"out.electricity.total.\"]\n", + "\n", + "weathers = ['amy2018']\n", + "for weath in weathers:\n", + " df_comstock = pd.read_parquet(f'./{indir}/2024_comstock/{weath}/baseline_metadata_and_annual_results.parquet', engine='pyarrow')\n", + " df_resstock = pd.read_parquet(f'./{indir}/2024_resstock/{weath}/baseline_metadata_and_annual_results.parquet', engine='pyarrow')\n", + "\n", + "\n", + "output_file = \"DICT_ComStock2024.txt\"\n", + "\n", + "# Open the file in write mode and save the output\n", + "with open(output_file, 'w') as f:\n", + " f.write(f'{weath} comstock\\n')\n", + " for col in df_comstock.columns:\n", + " # if (\"out.electricity.\" in col) and (all(sub not in col for sub in substrings)):\n", + " if (all(sub not in col for sub in substrings)):\n", + " f.write(f'{col}\\n')\n", + "\n", + "output_file = \"DICT_ResStock2024.txt\"\n", + "\n", + "# Open the file in write mode and save the output\n", + "with open(output_file, 'w') as f:\n", + " f.write(f'{weath} resstock\\n')\n", + " for col in df_resstock.columns:\n", + " # if (\"out.electricity.\" in col) and (all(sub not in col for sub in substrings)):\n", + " if (all(sub not in col for sub in substrings)):\n", + " f.write(f'{col}\\n')\n", + "\n", + "\n", + "# print(f'{weath} comstock')\n", + "# for col in df_comstock.columns:\n", + "# # if (\"out.electricity.\" in col) and (all(sub not in col for sub in substrings)):\n", + "# if (all(sub not in col for sub in substrings)):\n", + "# print(col)\n", + " \n", + "# print(f'{weath} resstock')\n", + "# for col in df_resstock.columns:\n", + "# if (\"out.electricity.\" in col) and (all(sub not in col for sub in substrings)):\n", + "# print(col)" + ] + }, + { + "cell_type": "markdown", + "id": "518dc19d-c5b7-4585-8a87-f15f46811656", + "metadata": {}, + "source": [ + "### COMBINE HVAC TECH AND OTHER END USE" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "91906768-b8d4-49c0-8b87-49943fbb8a08", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import os\n", + "\n", + "tech_dir = \"./output/2024_technology/\"\n", + "end_use_dir = \"./output/2024_end_use/\"\n", + "filenames = [\n", + " \"Com_Cdiv_EMM_amy2018\",\n", + " \"Com_Cdiv_State_amy2018\",\n", + " \"Res_Cdiv_EMM_amy2018\",\n", + " \"Res_Cdiv_State_amy2018\",\n", + " \"Com_Cdiv_EMM_amy2018_Stock\",\n", + " \"Com_Cdiv_State_amy2018_Stock\",\n", + " \"Res_Cdiv_EMM_amy2018_Stock\",\n", + " \"Res_Cdiv_State_amy2018_Stock\"\n", + " ]\n", + "\n", + "for filename in filenames:\n", + " # name, ext = os.path.splitext(filename)\n", + "\n", + " if \"Stock\" in filename:\n", + " filename_eu = f\"{filename.replace('Stock','')}electricity_Stock.csv\"\n", + " filename_tech = f\"{filename.replace('Stock','')}electricity_Stock_Tech.csv\"\n", + " else:\n", + " filename_eu = f\"{filename}_electricity.csv\"\n", + " filename_tech = f\"{filename}_electricity_Tech.csv\"\n", + " \n", + " file_tech = os.path.join(tech_dir, filename_tech)\n", + " file_enduse = os.path.join(end_use_dir, filename_eu)\n", + " \n", + " df_tech = pd.read_csv(file_tech)\n", + " df_end_use = pd.read_csv(file_enduse)\n", + "\n", + " print(f\"{filename_tech} {file_enduse}\")\n", + " \n", + " # Filter out rows where \"End use\" is \"Heating\" or \"Cooling\" in df_all\n", + " # df_end_use_filtered = df_end_use[~df_end_use['End use'].isin(['heating', 'cooling'])]\n", + " df_end_use_filtered = df_end_use\n", + " # Add the required columns to df_all_filtered with fixed values\n", + " df_end_use_filtered['Technology'] = \"all\"\n", + " \n", + " # Append df_all_filtered to df_tech\n", + " df_combined = pd.concat([df_tech, df_end_use_filtered], ignore_index=True)\n", + " \n", + " # Save the combined dataframe to a new CSV file (optional)\n", + " output_file = f\"./output/{filename_tech}\"\n", + " df_combined.to_csv(output_file, index=False)\n", + "\n", + "print(\"COMPLETE\")" + ] + }, + { + "cell_type": "markdown", + "id": "5aca19db-df62-416b-9d3f-56b2a02dfffa", + "metadata": {}, + "source": [ + "### FILL NA with 0s" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1dfd4f88-cee0-44f4-8bb5-dda4b60cf325", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import os\n", + "\n", + "folder_paths = [\"./output/2024_end_use\",\"./output/2024_technology\"] \n", + "\n", + "for folder_path in folder_paths:\n", + " for filename in os.listdir(folder_path):\n", + " if filename.endswith(\".csv\"):\n", + " file_path = os.path.join(folder_path, filename)\n", + " df = pd.read_csv(file_path)\n", + " \n", + " if df.isnull().values.any():\n", + " df_filled = df.fillna(0)\n", + " output_filename = filename.replace(\".csv\", \".csv\")\n", + " output_path = os.path.join(folder_path, output_filename)\n", + " df_filled.to_csv(output_path, index=False)\n", + " print(f\"{filename}: Blank cells filled. Saved as {output_filename}\")\n", + " else:\n", + " print(f\"{filename}: No blank cell\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "492307db-aed4-43a5-9831-3648abfd2d6f", + "metadata": {}, + "source": [ + "### DICTIONARY" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "816919a1-525c-48b4-8cd8-4ccb6e0feef0", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "enduse_map = {\n", + " \"commercial\": {\n", + " \"electricity\": {\n", + " \"heating\": [\n", + " \"out.electricity.heating.energy_consumption\",\n", + " \"out.electricity.heat_recovery.energy_consumption\"],\n", + " \"cooling\": [\n", + " \"out.electricity.heat_rejection.energy_consumption\",\n", + " \"out.electricity.cooling.energy_consumption\",\n", + " \"out.district_cooling.cooling.energy_consumption\"],\n", + " \"water heating\": [\"out.electricity.water_systems.energy_consumption\"],\n", + " \"fans and pumps\": [\n", + " \"out.electricity.fans.energy_consumption\",\n", + " \"out.electricity.pumps.energy_consumption\"],\n", + " \"lighting\": [\n", + " \"out.electricity.interior_lighting.energy_consumption\",\n", + " \"out.electricity.exterior_lighting.energy_consumption\"],\n", + " \"refrigeration\": [\"out.electricity.refrigeration.energy_consumption\"],\n", + " \"misc\": [\"out.electricity.interior_equipment.energy_consumption\"]\n", + " },\n", + " \"natural gas\":{\n", + " \"heating\": [\"out.natural_gas.heating.energy_consumption\",\n", + " \"out.district_heating.heating.energy_consumption\"],\n", + " \"cooling\": [\"out.natural_gas.heating.energy_consumption\"],\n", + " \"water heating\": [\"out.natural_gas.water_systems.energy_consumption\",\n", + " \"out.district_heating.water_systems.energy_consumption\"],\n", + " \"misc\": [\"out.natural_gas.interior_equipment.energy_consumption\"]\n", + " },\n", + " \"distillate\": {\n", + " \"heating\": [\"out.other_fuel.heating.energy_consumption\"],\n", + " \"cooling\": [\"out.other_fuel.cooling.energy_consumption\"],\n", + " \"water heating\": [\"out.other_fuel.water_systems.energy_consumption\"],\n", + " \"misc\": [\"out.natural_gas.interior_equipment.energy_consumption\"] \n", + " },\n", + " \"other fuel\": {\n", + " \"misc\": [\"out.natural_gas.interior_equipment.energy_consumption\"] \n", + " }\n", + " },\n", + " \"residential\": {\n", + " \"electricity\": {\n", + " \"heating\": [\n", + " \"out.electricity.heating.energy_consumption.kwh\",\n", + " \"out.electricity.heating_hp_bkup.energy_consumption.kwh\"],\n", + " \"cooling\": [\"out.electricity.cooling.energy_consumption.kwh\"],\n", + " \"water heating\": [\"out.electricity.hot_water.energy_consumption.kwh\"],\n", + " \"cooking\": [\"out.electricity.range_oven.energy_consumption.kwh\"],\n", + " \"drying\": [\"out.electricity.clothes_dryer.energy_consumption.kwh\"],\n", + " \"clothes washing\": [\"out.electricity.clothes_washer.energy_consumption.kwh\"],\n", + " \"dishwasher\": [\"out.electricity.dishwasher.energy_consumption.kwh\"],\n", + " \"lighting\": [\n", + " \"out.electricity.lighting_exterior.energy_consumption.kwh\",\n", + " \"out.electricity.lighting_interior.energy_consumption.kwh\",\n", + " \"out.electricity.lighting_garage.energy_consumption.kwh\"],\n", + " \"refrigeration\": [\n", + " \"out.electricity.freezer.energy_consumption.kwh\",\n", + " \"out.electricity.refrigerator.energy_consumption.kwh\"],\n", + " \"ceiling fan\": [\"out.electricity.ceiling_fan.energy_consumption.kwh\"],\n", + " \"misc\": [\"out.electricity.plug_loads.energy_consumption.kwh\"],\n", + " \"pool heaters\": [\"out.electricity.pool_heater.energy_consumption.kwh\"],\n", + " \"pool pumps\": [\"out.electricity.pool_pump.energy_consumption.kwh\"],\n", + " \"portable electric spas\": [\n", + " \"out.electricity.permanent_spa_heat.energy_consumption.kwh\",\n", + " \"out.electricity.permanent_spa_pump.energy_consumption.kwh\"],\n", + " \"fans and pumps\": [\n", + " \"out.electricity.mech_vent.energy_consumption.kwh\",\n", + " \"out.electricity.cooling_fans_pumps.energy_consumption.kwh\",\n", + " \"out.electricity.heating_fans_pumps.energy_consumption.kwh\",\n", + " \"out.electricity.heating_hp_bkup_fa.energy_consumption.kwh\",\n", + " \"out.electricity.well_pump.energy_consumption.kwh\"],\n", + " },\n", + " \"distillate\": {\n", + " \"heating\": [\n", + " \"out.fuel_oil.heating.energy_consumption.kwh\",\n", + " \"out.fuel_oil.heating_hp_bkup.energy_consumption.kwh\"],\n", + " \"water heating\": [\"out.fuel_oil.hot_water.energy_consumption.kwh\"],\n", + " \"misc\": [\"out.natural_gas.pool_heater.energy_consumption.kwh\"]\n", + " },\n", + " \"other fuel\": {\n", + " \"heating\": [\n", + " \"out.propane.heating.energy_consumption.kwh\",\n", + " \"out.propane.heating_hp_bkup.energy_consumption.kwh\"],\n", + " \"water heating\": [\"out.propane.hot_water.energy_consumption.kwh\"],\n", + " \"cooking\": [\"out.propane.range_oven.energy_consumption.kwh\"],\n", + " \"misc\": [\"out.natural_gas.pool_heater.energy_consumption.kwh\"],\n", + " \"drying\": [\"out.propane.clothes_dryer.energy_consumption.kwh\"]\n", + " },\n", + " \"natural gas\": {\n", + " \"heating\": [\n", + " \"out.natural_gas.heating.energy_consumption.kwh\",\n", + " \"out.natural_gas.heating_hp_bkup.energy_consumption.kwh\"],\n", + " \"cooling\": [\n", + " \"out.natural_gas.heating.energy_consumption.kwh\",\n", + " \"out.natural_gas.heating_hp_bkup.energy_consumption.kwh\"],\n", + " \"water heating\": [\"out.natural_gas.hot_water.energy_consumption.kwh\"],\n", + " \"cooking\": [\n", + " \"out.natural_gas.grill.energy_consumption.kwh\",\n", + " \"out.natural_gas.range_oven.energy_consumption.kwh\"],\n", + " \"drying\": [\"out.natural_gas.clothes_dryer.energy_consumption.kwh\"],\n", + " \"misc\": [\"out.natural_gas.pool_heater.energy_consumption.kwh\"]\n", + " # \"pool heaters\": [\"out.natural_gas.pool_heater.energy_consumption.kwh\"],\n", + " # \"portable electric spas\": [\"out.natural_gas.permanent_spa_heat.energy_consumption.kwh\"]\n", + " }\n", + " }\n", + "}\n", + "\n", + "df_order = pd.DataFrame({\n", + " 'no': [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],\n", + " 'emm_intersect': [\"TRE\",\"FRCC\",\"MISW\",\"MISC\",\"MISE\",\"MISS\",\"ISNE\",\"NYCW\",\"NYUP\",\"PJME\",\"PJMW\",\"PJMC\",\"PJMD\",\"SRCA\",\"SRSE\",\"SRCE\",\"SPPS\",\"SPPC\",\"SPPN\",\"SRSG\",\"CANO\",\"CASO\",\"NWPP\",\"RMRG\",\"BASN\"]\n", + "})\n", + "\n", + "stock_map = {\n", + " \"commercial\": {\n", + " \"stock\": [\"out.params.smallest_space_floor_area..m2\"]\n", + " },\n", + " \"residential\": {\n", + " \"stock\": [\"in.units_represented\"]\n", + " }\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6c6f3bfd-fa47-4f33-b24c-77227364b4e9", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [], + "source": [ + "fuel_enduse_map = {\n", + " \"commercial\": {\n", + " \"electricity\": {\n", + " \"cooling\": [\n", + " \"out.electricity.cooling.energy_consumption\",\n", + " \"out.electricity.heat_rejection.energy_consumption\"],\n", + " \"heating\": [\n", + " \"out.electricity.heating.energy_consumption\",\n", + " \"out.electricity.heat_recovery.energy_consumption\"],\n", + " # \"fans and pumps\": [\n", + " # \"out.electricity.fans.energy_consumption\",\n", + " # \"out.electricity.pumps.energy_consumption\"],\n", + " # \"water heating\": [\"out.electricity.water_systems.energy_consumption\"],\n", + " # \"lighting\": [\n", + " # \"out.electricity.interior_lighting.energy_consumption\",\n", + " # \"out.electricity.exterior_lighting.energy_consumption\"],\n", + " # \"refrigeration\": [\"out.electricity.refrigeration.energy_consumption\"],\n", + " # \"plug loads\": [\"out.electricity.interior_equipment.energy_consumption\"]\n", + " },\n", + " # \"other fuel\": {\n", + " # \"cooling\": [\n", + " # \"out.other_fuel.cooling.energy_consumption\"\n", + " # ],\n", + " # \"heating\": [\n", + " # \"out.other_fuel.heating.energy_consumption\"\n", + " # ],\n", + " # \"water heating\": [\n", + " # \"out.other_fuel.water_systems.energy_consumption\"\n", + " # ]\n", + " # },\n", + " # \"natural_gas\": {\n", + " # \"plug loads\": [\n", + " # \"out.natural_gas.interior_equipment.energy_consumption\"\n", + " # ],\n", + " # \"heating\": [\n", + " # \"out.natural_gas.heating.energy_consumption\"\n", + " # ],\n", + " # \"water heating\": [\n", + " # \"out.natural_gas.water_systems.energy_consumption\"\n", + " # ]\n", + " # }\n", + " },\n", + " \"residential\": {\n", + " \"electricity\": {\n", + " \"cooling\": [\"out.electricity.cooling.energy_consumption.kwh\"],\n", + " \"heating\": [\n", + " \"out.electricity.heating.energy_consumption.kwh\",\n", + " \"out.electricity.heating_hp_bkup.energy_consumption.kwh\"],\n", + " # \"water heating\": [\"out.electricity.hot_water.energy_consumption.kwh\"],\n", + " # \"cooking\": [\"out.electricity.range_oven.energy_consumption.kwh\"],\n", + " # \"drying\": [\"out.electricity.clothes_dryer.energy_consumption.kwh\"],\n", + " # \"clothes washing\": [\"out.electricity.clothes_washer.energy_consumption.kwh\"],\n", + " # \"dishwasher\": [\"out.electricity.dishwasher.energy_consumption.kwh\"],\n", + " # \"lighting\": [\n", + " # \"out.electricity.lighting_exterior.energy_consumption.kwh\",\n", + " # \"out.electricity.lighting_interior.energy_consumption.kwh\",\n", + " # \"out.electricity.lighting_garage.energy_consumption.kwh\"],\n", + " # \"refrigeration\": [\n", + " # \"out.electricity.freezer.energy_consumption.kwh\",\n", + " # \"out.electricity.refrigerator.energy_consumption.kwh\"],\n", + " # \"ceiling fan\": [\"out.electricity.ceiling_fan.energy_consumption.kwh\"],\n", + " # \"fans and pumps\": [\n", + " # \"out.electricity.mech_vent.energy_consumption.kwh\",\n", + " # \"out.electricity.cooling_fans_pumps.energy_consumption.kwh\",\n", + " # \"out.electricity.heating_fans_pumps.energy_consumption.kwh\",\n", + " # \"out.electricity.heating_hp_bkup_fa.energy_consumption.kwh\",\n", + " # \"out.electricity.well_pump.energy_consumption.kwh\"],\n", + " # \"plug loads\": [\"out.electricity.plug_loads.energy_consumption.kwh\"],\n", + " # \"pool heaters\": [\"out.electricity.pool_heater.energy_consumption.kwh\"],\n", + " # \"pool pumps\": [\"out.electricity.pool_pump.energy_consumption.kwh\"],\n", + " # \"portable electric spas\": [\n", + " # \"out.electricity.permanent_spa_heat.energy_consumption.kwh\",\n", + " # \"out.electricity.permanent_spa_pump.energy_consumption.kwh\"]\n", + " },\n", + " # \"oil\": {\n", + " # \"heating\": [\n", + " # \"out.fuel_oil.heating.energy_consumption.kwh\",\n", + " # \"out.fuel_oil.heating_hp_bkup.energy_consumption.kwh\",\n", + " # ],\n", + " # \"water heating\": [\n", + " # \"out.fuel_oil.hot_water.energy_consumption.kwh\"\n", + " # ]\n", + " # },\n", + " # \"natural_gas\": {\n", + " # \"drying\": [\n", + " # \"out.natural_gas.clothes_dryer.energy_consumption.kwh\"\n", + " # ],\n", + " # \"cooking\": [\n", + " # \"out.natural_gas.grill.energy_consumption.kwh\",\n", + " # \"out.natural_gas.range_oven.energy_consumption.kwh\",\n", + " # \"out.natural_gas.range_oven.energy_consumption.kwh\"\n", + " # ],\n", + " # \"heating\": [\n", + " # \"out.natural_gas.heating.energy_consumption.kwh\",\n", + " # \"out.natural_gas.heating_hp_bkup.energy_consumption.kwh\"\n", + " # ],\n", + " # \"water heating\": [\n", + " # \"out.natural_gas.hot_water.energy_consumption.kwh\"\n", + " # ],\n", + " # \"lighting\": [\n", + " # \"out.natural_gas.lighting.energy_consumption.kwh\",\n", + " # ],\n", + " # \"pool heaters\": [\n", + " # \"out.natural_gas.pool_heater.energy_consumption.kwh\"\n", + " # ],\n", + " # \"portable electric spas\": [\n", + " # \"out.natural_gas.permanent_spa_heat.energy_consumption.kwh\"\n", + " # ]\n", + " # },\n", + " # \"propane\": {\n", + " # \"heating\": [\n", + " # \"out.propane.heating.energy_consumption.kwh\",\n", + " # \"out.propane.heating_hp_bkup.energy_consumption.kwh\",\n", + " # ],\n", + " # \"water heating\" : [\n", + " # \"out.propane.hot_water.energy_consumption.kwh\"\n", + " # ],\n", + " # \"drying\": [\n", + " # \"out.propane.clothes_dryer.energy_consumption.kwh\"\n", + " # ],\n", + " # \"cooking\": [\n", + " # \"out.propane.range_oven.energy_consumption.kwh\"\n", + " # ]\n", + " # }\n", + " }}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2021254c-38b9-453f-b2ed-25ce2f357baa", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import warnings\n", + "warnings.filterwarnings(\"ignore\")\n", + "\n", + "def remove_space(string):\n", + " return string.replace(\" \", \"\")\n", + "\n", + "def get_scout_geo():\n", + " file = 'scout_geography.csv'\n", + " df = pd.read_csv(file, dtype=str)\n", + " \n", + " df['fips_code'] = df['fips_code'].str.zfill(5)\n", + " df['gisjoin'] = df['fips_code'].apply(\n", + " lambda x: 'G' + str(x)[:2] + '0' + str(x)[2:] + '0')\n", + " # df.loc[df['state'] == 'AK', 'gisjoin'] = 'G0'\n", + " # df.loc[df['state'] == 'HI', 'gisjoin'] = 'G1'\n", + " \n", + " df.loc[df['state'] == 'AK', 'emm2020_county'] = 'AK_HI'\n", + " df.loc[df['state'] == 'HI', 'emm2020_county'] = 'AK_HI'\n", + " df.to_csv(f'new_{file}', index=False)\n", + " return df\n", + "\n", + "\n", + "def transpose(df):\n", + " return df.transpose()\n", + "\n", + "def combine_keys(_dict):\n", + " combined_dict = {}\n", + "\n", + " for fuel_type, categories in _dict.items():\n", + " for category, values in categories.items():\n", + " combined_key = f\"{fuel_type}_{category.replace(' ', '_')}\"\n", + " combined_dict[combined_key] = values\n", + " \n", + " return combined_dict\n", + "def contains_utf8(text):\n", + " try:\n", + " text.encode('ascii') # Try encoding to ASCII (UTF-8 characters will fail)\n", + " return False\n", + " except UnicodeEncodeError:\n", + " return True" + ] + }, + { + "cell_type": "markdown", + "id": "54656dc0-1857-4740-b5e1-b5cb49a4c264", + "metadata": {}, + "source": [ + "### CDIV/EMM - ENERGY (TECH)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6b9a6014-6fa4-4308-a643-5508bb17702a", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [], + "source": [ + "def apply_geographies(df, dfdict, geos):\n", + " df['county'] = df['county'].astype(str)\n", + " df.loc[df['state'] == 'AK', 'county'] = 'G0'\n", + " df.loc[df['state'] == 'HI', 'county'] = 'G1' \n", + " for geo in geos:\n", + " geocol = 'emm2020_county' if geo == 'emm' else geo\n", + " d = dfdict.set_index('gisjoin').T.to_dict('index')[geocol]\n", + " df[geo] = df['county'].map(d)\n", + " df = df.drop('county', axis=1)\n", + " return df\n", + "\n", + "def output(df):\n", + " merged_matrix = df.merge(df_order, left_on='emm', right_on='emm_intersect', how='left')\n", + " sorted_matrix = merged_matrix.sort_values(by='no')\n", + " sorted_matrix = sorted_matrix.drop(sorted_matrix.columns[-2:], axis=1)\n", + " sorted_matrix.loc['total'] = sorted_matrix.sum()\n", + " sorted_matrix = transpose(sorted_matrix) ### to transpose CDIV on the row and EMM on the columns\n", + "\n", + " return(sorted_matrix)\n", + "\n", + "\n", + "def replace_col_vals(df, tech):\n", + " df = df.copy()\n", + " df.drop(columns=['Technology'], inplace=True)\n", + " df.insert(0, 'Technology', tech)\n", + " return df\n", + " \n", + "def convert_matrix(sector,filedir, filename, weathers, mymap):\n", + "\n", + " if sector == \"commercial\":\n", + " county_col = \"in.nhgis_county_gisjoin\"\n", + " sec = \"Com\"\n", + " else:\n", + " county_col = \"in.county\"\n", + " sec = \"Res\"\n", + " \n", + " combined_map = combine_keys(mymap[sector])\n", + " mykeys = list(combined_map)\n", + " \n", + " for weath in weathers:\n", + " # weath = 'tmy3'\n", + " df_all = pd.read_parquet(f\"{filedir}{weath}/{filename}\", engine='pyarrow')\n", + " df_all.rename(columns={county_col: 'county'}, inplace=True)\n", + " df_all.rename(columns={'in.state': 'state'}, inplace=True)\n", + " \n", + " df_all.reset_index(inplace=True)\n", + " df_all = apply_geographies(df_all, scoutgeo_df, geos)\n", + " df_all = df_all.dropna(subset=geos)\n", + "\n", + " all_eu = pd.DataFrame()\n", + " for eu in mykeys:\n", + " df = df_all.copy()\n", + " df[eu] = df[combined_map[eu]].sum(axis=1)\n", + " df = df[df[eu]>0]\n", + " mapfile = f\"map_{sector[:3]}_{eu}.csv\"\n", + " map_df = pd.read_csv(f\"./{fdir}/mapping/{mapfile}\")\n", + "\n", + " df['scout_tech'] = None\n", + " for _, map_row in map_df.iterrows():\n", + " condition = pd.Series(True, index=df.index)\n", + " for col in map_df.columns:\n", + " if col != 'scout_tech' and col in df.columns:\n", + " condition &= (df[col] == map_row[col])\n", + " df.loc[condition, 'scout_tech'] = map_row['scout_tech']\n", + " matched_rows = df[df['scout_tech'].notna()]\n", + " columns_to_keep = geos + ['scout_tech'] + [eu]\n", + " df = df[columns_to_keep]\n", + " tech_list = df['scout_tech'].unique().tolist()\n", + " # ######## DEBUG ##################\n", + " # print(f\"END USE {eu}\")\n", + " # print(df.shape[0])\n", + " # with pd.option_context('display.max_columns', None):\n", + " # for col in df.columns:\n", + " # print(col)\n", + " # ######## DEBUG ##################\n", + " \n", + " df = df.groupby(['emm', 'cdiv', 'scout_tech']).sum().reset_index()\n", + "\n", + " all_tech = pd.DataFrame()\n", + " for tech in tech_list:\n", + "\n", + " convert_pd = pd.DataFrame()\n", + " tdf = df[(df['scout_tech'] == tech)]\n", + " tdf = tdf.drop(columns=['scout_tech'])\n", + " conversion_matrix = tdf.pivot(index='emm', columns='cdiv', values=eu)\n", + " convert_matrix = output(conversion_matrix.reset_index())\n", + " convert_pd = convert_matrix if convert_pd.empty else pd.concat([convert_pd, convert_matrix], ignore_index=False)\n", + " normalized_matrix = conversion_matrix.div(conversion_matrix.sum(axis=0), axis=1).reset_index()\n", + " normalized_matrix = output(normalized_matrix)\n", + " normalized_matrix = normalized_matrix.fillna(0)\n", + " normalized_matrix.columns = normalized_matrix.iloc[0]\n", + " normalized_matrix.rename(columns={normalized_matrix.columns[-1]: 'Total'}, inplace=True)\n", + " normalized_matrix = normalized_matrix.iloc[1:]\n", + " normalized_matrix.insert(0, 'CDIV', normalized_matrix.index)\n", + " normalized_matrix.insert(0, 'End use', eu.split('_')[1])\n", + " normalized_matrix.insert(0, 'Technology', tech)\n", + " if (normalized_matrix['Total'] != 0).all():\n", + " normalized_matrix.drop(columns=['Total'], inplace=True)\n", + " all_tech = normalized_matrix if all_tech.empty else pd.concat([all_tech, normalized_matrix], ignore_index=False)\n", + " if tech == \"res_type_central_AC\":\n", + " norm2 = replace_col_vals(normalized_matrix, \"wall-window_room_AC\")\n", + " all_tech = pd.concat([all_tech, norm2], ignore_index=False)\n", + " all_eu = all_tech if all_eu.empty else pd.concat([all_eu, all_tech], ignore_index=False)\n", + " all_eu.to_csv(f\"./{outdir}/{sec}_Cdiv_EMM_{weath}__electricity_Tech.csv\", index=False)\n", + "\n", + "\n", + "scoutgeo_df = get_scout_geo()\n", + "\n", + "fdir = 'input'\n", + "outdir = 'output/2024_technology'\n", + "geos = ['emm', 'cdiv']\n", + "\n", + "print(\"COMMERCIAL\")\n", + "convert_matrix(\n", + " sector = \"commercial\",\n", + " filedir = f\"./{fdir}/2024_comstock/\",\n", + " filename = \"baseline_metadata_and_annual_results.parquet\",\n", + " weathers = ['amy2018'],\n", + " mymap = fuel_enduse_map)\n", + "print(\"RESIDENTIAL\")\n", + "convert_matrix(\n", + " sector = \"residential\",\n", + " filedir = f\"./{fdir}/2024_resstock/\",\n", + " filename = \"baseline_metadata_and_annual_results.parquet\",\n", + " weathers = ['amy2018'],\n", + " mymap = fuel_enduse_map)\n", + "\n", + "print(\"COMPLETE\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "6e3d0026-8878-4c7e-b27c-82e6603ed9cf", + "metadata": {}, + "source": [ + "### CDIV/EMM - STOCK (TECH)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "084cd042-958e-4b5f-8961-f9e7a80b4f6f", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [], + "source": [ + "def apply_geographies(df, dfdict, geos):\n", + " df['county'] = df['county'].astype(str)\n", + " df.loc[df['state'] == 'AK', 'county'] = 'G0'\n", + " df.loc[df['state'] == 'HI', 'county'] = 'G1' \n", + " for geo in geos:\n", + " geocol = 'emm2020_county' if geo == 'emm' else geo\n", + " d = dfdict.set_index('gisjoin').T.to_dict('index')[geocol]\n", + " df[geo] = df['county'].map(d)\n", + " df = df.drop('county', axis=1)\n", + " return df\n", + "\n", + "def output(df):\n", + " merged_matrix = df.merge(df_order, left_on='emm', right_on='emm_intersect', how='left')\n", + " sorted_matrix = merged_matrix.sort_values(by='no')\n", + " sorted_matrix = sorted_matrix.drop(sorted_matrix.columns[-2:], axis=1)\n", + " sorted_matrix.loc['total'] = sorted_matrix.sum()\n", + " sorted_matrix = transpose(sorted_matrix) ### to transpose CDIV on the row and EMM on the columns\n", + "\n", + " return(sorted_matrix)\n", + "\n", + "\n", + "def replace_col_vals(df, tech):\n", + " df = df.copy()\n", + " df.drop(columns=['Technology'], inplace=True)\n", + " df.insert(0, 'Technology', tech)\n", + " return df\n", + " \n", + "def convert_matrix(sector,filedir, filename, weathers, mymap):\n", + " if sector == \"commercial\":\n", + " county_col = \"in.nhgis_county_gisjoin\"\n", + " # area_col = \"weight\"\n", + " area_col = \"calc.weighted.sqft\"\n", + " sec = \"Com\"\n", + " else:\n", + " county_col = \"in.county\"\n", + " area_col = \"in.units_represented\"\n", + " sec = \"Res\"\n", + " \n", + " combined_map = combine_keys(mymap[sector])\n", + " mykeys = list(combined_map)\n", + " \n", + " for weath in weathers:\n", + " # weath = 'tmy3'\n", + " df_all = pd.read_parquet(f\"{filedir}{weath}/{filename}\", engine='pyarrow')\n", + " df_all.rename(columns={county_col: 'county'}, inplace=True)\n", + " df_all.rename(columns={'in.state': 'state'}, inplace=True)\n", + " df_all.rename(columns={area_col: \"warea\"}, inplace=True)\n", + " \n", + " df_all.reset_index(inplace=True)\n", + " df_all = apply_geographies(df_all, scoutgeo_df, geos)\n", + " df_all = df_all.dropna(subset=geos)\n", + "\n", + " all_eu = pd.DataFrame()\n", + " for eu in mykeys:\n", + " df = df_all.copy()\n", + " df[eu] = df[combined_map[eu]].sum(axis=1)\n", + " df = df[df[eu]>0]\n", + " mapfile = f\"map_{sector[:3]}_{eu}.csv\"\n", + " map_df = pd.read_csv(f\"./{fdir}/mapping/{mapfile}\")\n", + "\n", + " df['scout_tech'] = None\n", + " for _, map_row in map_df.iterrows():\n", + " condition = pd.Series(True, index=df.index)\n", + " for col in map_df.columns:\n", + " if col != 'scout_tech' and col in df.columns:\n", + " condition &= (df[col] == map_row[col])\n", + " df.loc[condition, 'scout_tech'] = map_row['scout_tech']\n", + " matched_rows = df[df['scout_tech'].notna()]\n", + " columns_to_keep = geos + ['scout_tech'] + [eu, 'warea']\n", + " df = df[columns_to_keep]\n", + " tech_list = df['scout_tech'].unique().tolist() \n", + " # df = df.groupby(['emm', 'cdiv', 'scout_tech']).sum().reset_index()\n", + " \n", + " all_tech = pd.DataFrame()\n", + " for tech in tech_list:\n", + "\n", + " convert_pd = pd.DataFrame()\n", + " tdf = df[(df['scout_tech'] == tech)]\n", + " tdf = tdf.drop(columns=['scout_tech'])\n", + " \n", + " tdf_temp = tdf[['emm', 'cdiv', 'warea', eu]]\n", + " mask = (tdf_temp[[eu]] != 0).all(axis=1)\n", + " tedf = tdf_temp[mask]\n", + "\n", + " conversion_matrix = tedf.pivot_table(index='emm', columns='cdiv', values=\"warea\", aggfunc='sum')\n", + " convert_matrix = output(conversion_matrix.reset_index())\n", + " convert_pd = convert_matrix if convert_pd.empty else pd.concat([convert_pd, convert_matrix], ignore_index=False)\n", + " normalized_matrix = conversion_matrix.div(conversion_matrix.sum(axis=0), axis=1).reset_index()\n", + " normalized_matrix = output(normalized_matrix)\n", + " normalized_matrix = normalized_matrix.fillna(0)\n", + " normalized_matrix.columns = normalized_matrix.iloc[0]\n", + " normalized_matrix.rename(columns={normalized_matrix.columns[-1]: 'Total'}, inplace=True)\n", + " normalized_matrix = normalized_matrix.iloc[1:]\n", + " normalized_matrix.insert(0, 'CDIV', normalized_matrix.index)\n", + " normalized_matrix.insert(0, 'End use', eu.split('_')[1])\n", + " normalized_matrix.insert(0, 'Technology', tech)\n", + " if (normalized_matrix['Total'] != 0).all():\n", + " normalized_matrix.drop(columns=['Total'], inplace=True)\n", + " all_tech = normalized_matrix if all_tech.empty else pd.concat([all_tech, normalized_matrix], ignore_index=False)\n", + " if tech == \"res_type_central_AC\":\n", + " norm2 = replace_col_vals(normalized_matrix, \"wall-window_room_AC\")\n", + " all_tech = pd.concat([all_tech, norm2], ignore_index=False)\n", + " all_eu = all_tech if all_eu.empty else pd.concat([all_eu, all_tech], ignore_index=False)\n", + " all_eu.to_csv(f\"./{outdir}/{sec}_Cdiv_EMM_{weath}_electricity_Stock_Tech.csv\", index=False)\n", + "\n", + "\n", + "scoutgeo_df = get_scout_geo()\n", + "\n", + "fdir = 'input'\n", + "outdir = 'output/2024_technology'\n", + "geos = ['emm', 'cdiv']\n", + "\n", + "print(\"COMMERCIAL\")\n", + "convert_matrix(\n", + " sector = \"commercial\",\n", + " filedir = f\"./{fdir}/2024_comstock/\",\n", + " filename = \"baseline_metadata_and_annual_results.parquet\",\n", + " weathers = ['amy2018'],\n", + " mymap = fuel_enduse_map)\n", + "print(\"RESIDENTIAL\")\n", + "convert_matrix(\n", + " sector = \"residential\",\n", + " filedir = f\"./{fdir}/2024_resstock/\",\n", + " filename = \"baseline_metadata_and_annual_results.parquet\",\n", + " weathers = ['amy2018'],\n", + " mymap = fuel_enduse_map)\n", + "\n", + "print(\"COMPLETE\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "62c0763f-ff9e-4ca3-8d02-7ec9a04c7f03", + "metadata": {}, + "source": [ + "### CDIV/STATE - ENERGY (TECH)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "75e74341-e59a-4890-9f26-f3f7a3826b81", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [], + "source": [ + "def apply_geographies(df, dfdict, geos):\n", + " df['county'] = df['county'].astype(str)\n", + " df.loc[df['state'] == 'AK', 'county'] = 'G0'\n", + " df.loc[df['state'] == 'HI', 'county'] = 'G1' \n", + " for geo in geos:\n", + " geocol = 'cdiv' if geo == 'cdiv' else geo\n", + " d = dfdict.set_index('gisjoin').T.to_dict('index')[geocol]\n", + " df[geo] = df['county'].map(d)\n", + " df = df.drop('county', axis=1)\n", + " return df\n", + "\n", + "def output(df):\n", + " sorted_matrix = df\n", + " sorted_matrix.loc['total'] = sorted_matrix.sum()\n", + " sorted_matrix = transpose(sorted_matrix) ### to transpose CDIV on the row and EMM on the columns\n", + " return(sorted_matrix)\n", + " \n", + "def replace_col_vals(df, tech):\n", + " df = df.copy()\n", + " df.drop(columns=['Technology'], inplace=True)\n", + " df.insert(0, 'Technology', tech)\n", + " return df\n", + " \n", + "def convert_matrix(sector,filedir, filename, weathers, mymap):\n", + " if sector == \"commercial\":\n", + " county_col = \"in.nhgis_county_gisjoin\"\n", + " sec = \"Com\"\n", + " else:\n", + " county_col = \"in.county\"\n", + " sec = \"Res\" \n", + " combined_map = combine_keys(mymap[sector])\n", + " mykeys = list(combined_map)\n", + " \n", + " for weath in weathers:\n", + " # weath = 'tmy3'\n", + " df_all = pd.read_parquet(f\"{filedir}{weath}/{filename}\", engine='pyarrow')\n", + " df_all.rename(columns={county_col: 'county'}, inplace=True)\n", + " df_all.rename(columns={'in.state': 'state'}, inplace=True)\n", + " \n", + " df_all.reset_index(inplace=True)\n", + " df_all = apply_geographies(df_all, scoutgeo_df, geos)\n", + " df_all = df_all.dropna(subset=geos)\n", + "\n", + " all_eu = pd.DataFrame()\n", + " for eu in mykeys:\n", + " df = df_all.copy()\n", + " df[eu] = df[combined_map[eu]].sum(axis=1)\n", + " df = df[df[eu]>0]\n", + " mapfile = f\"map_{sector[:3]}_{eu}.csv\"\n", + " map_df = pd.read_csv(f\"./{fdir}/mapping/{mapfile}\")\n", + "\n", + " df['scout_tech'] = None\n", + " for _, map_row in map_df.iterrows():\n", + " condition = pd.Series(True, index=df.index)\n", + " for col in map_df.columns:\n", + " if col != 'scout_tech' and col in df.columns:\n", + " condition &= (df[col] == map_row[col])\n", + " df.loc[condition, 'scout_tech'] = map_row['scout_tech']\n", + " matched_rows = df[df['scout_tech'].notna()]\n", + " columns_to_keep = geos + ['scout_tech'] + [eu]\n", + " df = df[columns_to_keep]\n", + " tech_list = df['scout_tech'].unique().tolist() \n", + " df = df.groupby(['state', 'cdiv', 'scout_tech']).sum().reset_index()\n", + "\n", + " all_tech = pd.DataFrame()\n", + " for tech in tech_list:\n", + "\n", + " convert_pd = pd.DataFrame()\n", + " tdf = df[(df['scout_tech'] == tech)]\n", + " tdf = tdf.drop(columns=['scout_tech'])\n", + " conversion_matrix = tdf.pivot(index='state', columns='cdiv', values=eu)\n", + " convert_matrix = output(conversion_matrix.reset_index())\n", + " convert_pd = convert_matrix if convert_pd.empty else pd.concat([convert_pd, convert_matrix], ignore_index=False)\n", + " normalized_matrix = conversion_matrix.div(conversion_matrix.sum(axis=0), axis=1).reset_index()\n", + " normalized_matrix = output(normalized_matrix)\n", + " normalized_matrix = normalized_matrix.fillna(0)\n", + " normalized_matrix.columns = normalized_matrix.iloc[0]\n", + " normalized_matrix.rename(columns={normalized_matrix.columns[-1]: 'Total'}, inplace=True)\n", + " normalized_matrix = normalized_matrix.iloc[1:]\n", + " normalized_matrix.insert(0, 'CDIV', normalized_matrix.index)\n", + " normalized_matrix.insert(0, 'End use', eu.split('_')[1])\n", + " normalized_matrix.insert(0, 'Technology', tech)\n", + " if (normalized_matrix['Total'] != 0).all():\n", + " normalized_matrix.drop(columns=['Total'], inplace=True)\n", + " all_tech = normalized_matrix if all_tech.empty else pd.concat([all_tech, normalized_matrix], ignore_index=False)\n", + " if tech == \"res_type_central_AC\":\n", + " norm2 = replace_col_vals(normalized_matrix, \"wall-window_room_AC\")\n", + " all_tech = pd.concat([all_tech, norm2], ignore_index=False) \n", + " all_eu = all_tech if all_eu.empty else pd.concat([all_eu, all_tech], ignore_index=False)\n", + " all_eu.to_csv(f\"./{outdir}/{sec}_Cdiv_State_{weath}_electricity_Tech.csv\", index=False)\n", + "\n", + "\n", + "scoutgeo_df = get_scout_geo()\n", + "\n", + "fdir = 'input'\n", + "outdir = 'output/2024_technology'\n", + "geos = ['cdiv','state']\n", + "\n", + "print(\"COMMERCIAL\")\n", + "convert_matrix(\n", + " sector = \"commercial\",\n", + " filedir = f\"./{fdir}/2024_comstock/\",\n", + " filename = \"baseline_metadata_and_annual_results.parquet\",\n", + " weathers = ['amy2018'],\n", + " mymap = fuel_enduse_map)\n", + "\n", + "print(\"RESIDENTIAL\")\n", + "convert_matrix(\n", + " sector = \"residential\",\n", + " filedir = f\"./{fdir}/2024_resstock/\",\n", + " filename = \"baseline_metadata_and_annual_results.parquet\",\n", + " weathers = ['amy2018'],\n", + " mymap = fuel_enduse_map)\n", + "\n", + "print(\"COMPLETE\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "e1771820-e08b-4d03-a137-cb29630bc6f7", + "metadata": {}, + "source": [ + "### CDIV/STATE - STOCK (TECH)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5cdbd969-e13c-4930-a890-6ea6258468d0", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [], + "source": [ + "def apply_geographies(df, dfdict, geos):\n", + " df['county'] = df['county'].astype(str)\n", + " df.loc[df['state'] == 'AK', 'county'] = 'G0'\n", + " df.loc[df['state'] == 'HI', 'county'] = 'G1' \n", + " for geo in geos:\n", + " geocol = 'cdiv' if geo == 'cdiv' else geo\n", + " d = dfdict.set_index('gisjoin').T.to_dict('index')[geocol]\n", + " df[geo] = df['county'].map(d) \n", + " df = df.drop('county', axis=1)\n", + " return df\n", + "\n", + "def output(df):\n", + " sorted_matrix = df\n", + " sorted_matrix.loc['total'] = sorted_matrix.sum()\n", + " sorted_matrix = transpose(sorted_matrix) ### to transpose CDIV on the row and EMM on the columns\n", + " return(sorted_matrix)\n", + "\n", + "\n", + "def replace_col_vals(df, tech):\n", + " df = df.copy()\n", + " df.drop(columns=['Technology'], inplace=True)\n", + " df.insert(0, 'Technology', tech)\n", + " return df\n", + " \n", + "def convert_matrix(sector,filedir, filename, weathers, mymap): \n", + " if sector == \"commercial\":\n", + " county_col = \"in.nhgis_county_gisjoin\"\n", + " # area_col = \"weight\"\n", + " area_col = \"calc.weighted.sqft\"\n", + " sec = \"Com\"\n", + " else:\n", + " county_col = \"in.county\"\n", + " area_col = \"in.units_represented\"\n", + " sec = \"Res\"\n", + " \n", + " combined_map = combine_keys(mymap[sector])\n", + " mykeys = list(combined_map)\n", + " \n", + " for weath in weathers:\n", + " # weath = 'tmy3'\n", + " df_all = pd.read_parquet(f\"{filedir}{weath}/{filename}\", engine='pyarrow')\n", + " df_all.rename(columns={county_col: 'county'}, inplace=True)\n", + " df_all.rename(columns={'in.state': 'state'}, inplace=True)\n", + " df_all.rename(columns={area_col: \"warea\"}, inplace=True)\n", + " \n", + " df_all.reset_index(inplace=True)\n", + " df_all = apply_geographies(df_all, scoutgeo_df, geos)\n", + " df_all = df_all.dropna(subset=geos)\n", + "\n", + " all_eu = pd.DataFrame()\n", + " for eu in mykeys:\n", + " df = df_all.copy()\n", + " # print(f\"END USE= {eu}\")\n", + " df[eu] = df[combined_map[eu]].sum(axis=1)\n", + " df = df[df[eu]>0]\n", + " mapfile = f\"map_{sector[:3]}_{eu}.csv\"\n", + " map_df = pd.read_csv(f\"./{fdir}/mapping/{mapfile}\")\n", + "\n", + " df['scout_tech'] = None\n", + " for _, map_row in map_df.iterrows():\n", + " condition = pd.Series(True, index=df.index)\n", + " for col in map_df.columns:\n", + " if col != 'scout_tech' and col in df.columns:\n", + " condition &= (df[col] == map_row[col])\n", + " df.loc[condition, 'scout_tech'] = map_row['scout_tech']\n", + " matched_rows = df[df['scout_tech'].notna()]\n", + " columns_to_keep = geos + ['scout_tech'] + [eu,'warea']\n", + " df = df[columns_to_keep]\n", + " tech_list = df['scout_tech'].unique().tolist()\n", + " # df = df.groupby(['state', 'cdiv', 'scout_tech']).sum().reset_index()\n", + " all_tech = pd.DataFrame()\n", + " for tech in tech_list:\n", + "\n", + " convert_pd = pd.DataFrame()\n", + " tdf = df[(df['scout_tech'] == tech)]\n", + " tdf = tdf.drop(columns=['scout_tech'])\n", + " \n", + " tdf_temp = tdf[['state', 'cdiv', 'warea', eu]]\n", + " mask = (tdf_temp[[eu]] != 0).all(axis=1)\n", + " tedf = tdf_temp[mask]\n", + "\n", + " conversion_matrix = tedf.pivot_table(index='state', columns='cdiv', values=\"warea\", aggfunc='sum')\n", + " convert_matrix = output(conversion_matrix.reset_index())\n", + " convert_pd = convert_matrix if convert_pd.empty else pd.concat([convert_pd, convert_matrix], ignore_index=False)\n", + " normalized_matrix = conversion_matrix.div(conversion_matrix.sum(axis=0), axis=1).reset_index()\n", + " normalized_matrix = output(normalized_matrix)\n", + " normalized_matrix = normalized_matrix.fillna(0)\n", + " normalized_matrix.columns = normalized_matrix.iloc[0]\n", + " normalized_matrix.rename(columns={normalized_matrix.columns[-1]: 'Total'}, inplace=True)\n", + " normalized_matrix = normalized_matrix.iloc[1:]\n", + " normalized_matrix.insert(0, 'CDIV', normalized_matrix.index)\n", + " normalized_matrix.insert(0, 'End use', eu.split('_')[1])\n", + " normalized_matrix.insert(0, 'Technology', tech)\n", + " if (normalized_matrix['Total'] != 0).all():\n", + " normalized_matrix.drop(columns=['Total'], inplace=True)\n", + " all_tech = normalized_matrix if all_tech.empty else pd.concat([all_tech, normalized_matrix], ignore_index=False)\n", + " if tech == \"res_type_central_AC\":\n", + " norm2 = replace_col_vals(normalized_matrix, \"wall-window_room_AC\")\n", + " all_tech = pd.concat([all_tech, norm2], ignore_index=False)\n", + " all_eu = all_tech if all_eu.empty else pd.concat([all_eu, all_tech], ignore_index=False)\n", + " all_eu.to_csv(f\"./{outdir}/{sec}_Cdiv_State_{weath}_electricity_Stock_Tech.csv\", index=False)\n", + "\n", + "\n", + "scoutgeo_df = get_scout_geo()\n", + "\n", + "fdir = 'input'\n", + "outdir = 'output/2024_technology'\n", + "geos = ['cdiv','state']\n", + "\n", + "print(\"COMMERCIAL\")\n", + "convert_matrix(\n", + " sector = \"commercial\",\n", + " filedir = f\"./{fdir}/2024_comstock/\",\n", + " filename = \"baseline_metadata_and_annual_results.parquet\",\n", + " weathers = ['amy2018'],\n", + " mymap = fuel_enduse_map)\n", + "print(\"RESIDENTIAL\")\n", + "convert_matrix(\n", + " sector = \"residential\",\n", + " filedir = f\"./{fdir}/2024_resstock/\",\n", + " filename = \"baseline_metadata_and_annual_results.parquet\",\n", + " weathers = ['amy2018'],\n", + " mymap = fuel_enduse_map)\n", + "\n", + "print(\"COMPLETE\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "76c7d432-5a77-4e13-9de5-7052de9a4277", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "69551561-27cf-4f2a-8c1a-76908de6165e", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "b76d7bca-1c1b-4db2-b0d1-30e72fc5d96f", + "metadata": {}, + "source": [ + "### CDIV/EMM - ENERGY (END USE)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ccdfcdd0-8b30-4683-9d50-894b1eff2cce", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [], + "source": [ + "#### Energy ####\n", + "import pandas as pd\n", + "import warnings\n", + "warnings.filterwarnings(\"ignore\")\n", + "\n", + "def apply_geographies(df, dfdict, geos):\n", + " df['county'] = df['county'].astype(str)\n", + " # df.loc[df['state'] == 'AK', 'county'] = 'G0'\n", + " # df.loc[df['state'] == 'HI', 'county'] = 'G1' \n", + " for geo in geos:\n", + " geocol = 'emm2020_county' if geo == 'emm' else geo\n", + " d = dfdict.set_index('gisjoin').T.to_dict('index')[geocol]\n", + " df[geo] = df['county'].map(d)\n", + " df = df.drop('county', axis=1)\n", + " return df\n", + "\n", + "def output(df):\n", + " merged_matrix = df.merge(df_order, left_on='emm', right_on='emm_intersect', how='left')\n", + " sorted_matrix = merged_matrix.sort_values(by='no')\n", + " sorted_matrix = sorted_matrix.drop(sorted_matrix.columns[-2:], axis=1)\n", + " sorted_matrix.loc['total'] = sorted_matrix.sum()\n", + " sorted_matrix = transpose(sorted_matrix) ### to transpose CDIV on the row and EMM on the columns\n", + "\n", + " return(sorted_matrix)\n", + "\n", + "\n", + "def convert_matrix(sector,filedir, filename, weathers, mymap, fueltype):\n", + " if sector == \"commercial\":\n", + " county_col = \"in.nhgis_county_gisjoin\"\n", + " sec = \"Com\"\n", + " else:\n", + " county_col = \"in.county\"\n", + " sec = \"Res\"\n", + " \n", + " mykeys = list(mymap[sector][fueltype])\n", + "\n", + " for weath in weathers:\n", + " df = pd.read_parquet(f\"{filedir}{weath}/{filename}\", engine='pyarrow')\n", + " df.rename(columns={county_col: 'county'}, inplace=True)\n", + " df.rename(columns={'in.state': 'state'}, inplace=True)\n", + "\n", + " for eu in mykeys:\n", + " df[eu] = df[mymap[sector][fueltype][eu]].sum(axis=1)\n", + " df.reset_index(inplace=True)\n", + " df = apply_geographies(df, scoutgeo_df, geos)\n", + " df = df.dropna(subset=geos)\n", + " df = df[geos+mykeys]\n", + " df = df.groupby(['emm','cdiv']).sum().reset_index()\n", + " norm_pd = pd.DataFrame()\n", + " convert_pd = pd.DataFrame()\n", + " for eu in mykeys:\n", + "\n", + " conversion_matrix = df.pivot(index='emm', columns='cdiv', values=eu)\n", + " convert_matrix = output(conversion_matrix.reset_index())\n", + " convert_pd = convert_matrix if convert_pd.empty else pd.concat([convert_pd, convert_matrix], ignore_index=False)\n", + " normalized_matrix = conversion_matrix.div(conversion_matrix.sum(axis=0), axis=1).reset_index()\n", + " normalized_matrix = output(normalized_matrix)\n", + " normalized_matrix = normalized_matrix.fillna(0)\n", + " normalized_matrix.columns = normalized_matrix.iloc[0]\n", + " normalized_matrix.rename(columns={normalized_matrix.columns[-1]: 'Total'}, inplace=True)\n", + " normalized_matrix = normalized_matrix.iloc[1:]\n", + " normalized_matrix.insert(0, 'CDIV', normalized_matrix.index)\n", + " normalized_matrix.insert(0, 'End use', eu)\n", + " normalized_matrix.drop(columns=['Total'], inplace=True)\n", + " norm_pd = normalized_matrix if norm_pd.empty else pd.concat([norm_pd, normalized_matrix], ignore_index=False)\n", + " if sec == \"Res\": norm_pd['AK_HI'] = 0 \n", + " norm_pd.to_csv(f\"./{outdir}/{sec}_Cdiv_EMM_{weath}_{remove_space(fueltype)}.csv\", index=False)\n", + "\n", + "scoutgeo_df = get_scout_geo()\n", + "\n", + "fdir = 'input'\n", + "outdir = 'output/2024_end_use'\n", + "building_types = ['commercial','residential']\n", + "geos = ['emm', 'cdiv']\n", + "fuel_com = ['electricity', 'natural gas', 'distillate', 'other fuel']\n", + "fuel_res = ['electricity', 'natural gas', 'distillate', 'other fuel']\n", + "################################################################################\n", + "print(\"COMMERCIAL\")\n", + "\n", + "for fl in fuel_com:\n", + " convert_matrix(\n", + " sector = \"commercial\",\n", + " filedir = f\"./{fdir}/2024_comstock/\",\n", + " filename = \"baseline_metadata_and_annual_results.parquet\",\n", + " weathers = ['amy2018'],\n", + " mymap = enduse_map,\n", + " fueltype = fl)\n", + "\n", + "print(\"RESIDENTIAL\")\n", + "for fl in fuel_res:\n", + " convert_matrix(\n", + " sector = \"residential\",\n", + " filedir = f\"./{fdir}/2024_resstock/\",\n", + " filename = \"baseline_metadata_and_annual_results.parquet\",\n", + " weathers = ['amy2018'],#,'tmy3'],\n", + " mymap = enduse_map,\n", + " fueltype = fl)\n", + "\n", + "print(\"COMPLETE\")" + ] + }, + { + "cell_type": "markdown", + "id": "a4465e27-742a-4eb3-8066-fcad62ea1252", + "metadata": {}, + "source": [ + "### CDIV/EMM - STOCK (END USE)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f3afb22a-56e3-4323-b420-dd824bd7521f", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [], + "source": [ + "def apply_geographies(df, dfdict, geos):\n", + " df['county'] = df['county'].astype(str)\n", + " # df.loc[df['state'] == 'AK', 'county'] = 'G0'\n", + " # df.loc[df['state'] == 'HI', 'county'] = 'G1' \n", + " for geo in geos:\n", + " geocol = 'emm2020_county' if geo == 'emm' else geo\n", + " d = dfdict.set_index('gisjoin').T.to_dict('index')[geocol]\n", + " df[geo] = df['county'].map(d)\n", + " df = df.drop('county', axis=1)\n", + " return df\n", + "\n", + "def output(df):\n", + " merged_matrix = df.merge(df_order, left_on='emm', right_on='emm_intersect', how='left')\n", + " sorted_matrix = merged_matrix.sort_values(by='no')\n", + " sorted_matrix = sorted_matrix.drop(sorted_matrix.columns[-2:], axis=1)\n", + " sorted_matrix.loc['total'] = sorted_matrix.sum()\n", + " sorted_matrix = transpose(sorted_matrix) ### to transpose CDIV on the row and EMM on the columns\n", + "\n", + " return(sorted_matrix)\n", + " \n", + "def eu_rows(df, category, columns_dict, threshold=1):\n", + " # threshold means, minimum 1 col in the dict is non-zero\n", + " columns = columns_dict.get(category, [])\n", + " mask = (df[columns] != 0).sum(axis=1) >= threshold\n", + " filtered_df = df[mask]\n", + " return filtered_df\n", + "\n", + "def eu_rows_woutthreshold(df, category, columns_dict):\n", + " columns = columns_dict.get(category, [])\n", + " mask = (df[columns] != 0).all(axis=1)\n", + " filtered_df = df[mask]\n", + " return filtered_df\n", + " \n", + "def convert_matrix_stock(sector,filedir, filename, weathers, mymap, fueltype):\n", + " conditions_dict = mymap[sector][fueltype]\n", + " \n", + " if sector == \"commercial\":\n", + " sec = \"Com\"\n", + " county_col = \"in.nhgis_county_gisjoin\"\n", + " # area_col = \"weight\"\n", + " area_col = \"calc.weighted.sqft\"\n", + " else:\n", + " sec = \"Res\"\n", + " county_col = \"in.county\"\n", + " area_col = \"in.units_represented\"\n", + " # area_col = \"weight\"\n", + " \n", + " for weath in weathers: \n", + " alldf = pd.read_parquet(f\"{filedir}{weath}/{filename}\", engine='pyarrow')\n", + " alldf.rename(columns={county_col: \"county\"}, inplace=True)\n", + " alldf.rename(columns={\"in.state\": \"state\"}, inplace=True)\n", + " alldf.rename(columns={area_col: \"warea\"}, inplace=True)\n", + " \n", + " mykeys = list(mymap[sector][fueltype])\n", + " \n", + " norm_pd = pd.DataFrame()\n", + " convert_pd = pd.DataFrame()\n", + " \n", + " for eu in mykeys:\n", + " df = eu_rows(alldf, eu, conditions_dict)\n", + " \n", + " df = apply_geographies(df, scoutgeo_df, geos)\n", + " df = df[[\"warea\",\"emm\",\"cdiv\"]] #\"state\",\"weight\",\"in.sqft\"]]\n", + " \n", + " conversion_matrix = df.pivot_table(index='emm', columns='cdiv', values=\"warea\", aggfunc='sum')\n", + " convert_matrix = output(conversion_matrix.reset_index())\n", + " convert_pd = convert_matrix if convert_pd.empty else pd.concat([convert_pd, convert_matrix], ignore_index=False)\n", + " normalized_matrix = conversion_matrix.div(conversion_matrix.sum(axis=0), axis=1).reset_index()\n", + " normalized_matrix = output(normalized_matrix)\n", + " normalized_matrix = normalized_matrix.fillna(0)\n", + " normalized_matrix.columns = normalized_matrix.iloc[0]\n", + " normalized_matrix.rename(columns={normalized_matrix.columns[-1]: 'Total'}, inplace=True)\n", + " normalized_matrix = normalized_matrix.iloc[1:]\n", + " normalized_matrix.insert(0, 'CDIV', normalized_matrix.index)\n", + " normalized_matrix.insert(0, 'End use', eu)\n", + " normalized_matrix.drop(columns=['Total'], inplace=True)\n", + " norm_pd = normalized_matrix if norm_pd.empty else pd.concat([norm_pd, normalized_matrix], ignore_index=False)\n", + " if sec == \"Res\": norm_pd['AK_HI'] = 0 \n", + " norm_pd.to_csv(f\"./{outdir}/{sec}_Cdiv_EMM_{weath}_{remove_space(fueltype)}_Stock.csv\", index=False)\n", + "################################################################################\n", + "scoutgeo_df = get_scout_geo()\n", + "\n", + "fdir = 'input'\n", + "outdir = 'output/2024_end_use'\n", + "building_types = ['commercial','residential']\n", + "geos = ['emm', 'cdiv']\n", + "fuel_com = ['electricity', 'natural gas', 'distillate', 'other fuel']\n", + "fuel_res = ['electricity', 'natural gas', 'distillate', 'other fuel']\n", + "\n", + "print(\"COMMERCIAL\")\n", + "for fl in fuel_com:\n", + " convert_matrix_stock(\n", + " sector = \"commercial\",\n", + " filedir = f\"./{fdir}/2024_comstock/\",\n", + " filename = \"baseline_metadata_and_annual_results.parquet\",\n", + " weathers = ['amy2018'],\n", + " mymap = enduse_map,\n", + " fueltype =fl\n", + " )\n", + "\n", + "print(\"RESIDENTIAL\")\n", + "for fl in fuel_res:\n", + " convert_matrix_stock(\n", + " sector = \"residential\",\n", + " filedir = f\"./{fdir}/2024_resstock/\",\n", + " filename = \"baseline_metadata_and_annual_results.parquet\",\n", + " weathers = ['amy2018'],\n", + " mymap = enduse_map,\n", + " fueltype = fl\n", + " )\n", + "\n", + "print(\"COMPLETE\")" + ] + }, + { + "cell_type": "markdown", + "id": "cb387ce9-908f-4465-aff9-dc5648a6db14", + "metadata": {}, + "source": [ + "### CDIV/STATE - ENERGY (END USE)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1adf9038-a2d2-4b09-b2f9-48792187df6b", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [], + "source": [ + "### Energy ###\n", + "### ResStock 2022 ComStock 2023\n", + "import pandas as pd\n", + "import warnings\n", + "warnings.filterwarnings(\"ignore\")\n", + "\n", + "def apply_geographies(df, dfdict, geos):\n", + " df['county'] = df['county'].astype(str)\n", + " # df.loc[df['state'] == 'AK', 'county'] = 'G0'\n", + " # df.loc[df['state'] == 'HI', 'county'] = 'G1'\n", + " for geo in geos:\n", + " geocol = 'cdiv' if geo == 'cdiv' else geo\n", + " d = dfdict.set_index('gisjoin').T.to_dict('index')[geocol]\n", + " df[geo] = df['county'].map(d) \n", + " df = df.drop('county', axis=1)\n", + " # print((df[df['state'].isnull()])['state'])\n", + " return df\n", + "\n", + "def output(df):\n", + " # merged_matrix = df.merge(df_order, left_on='cdiv', right_on='cdiv_intersect', how='left')\n", + " # sorted_matrix = merged_matrix.sort_values(by='no')\n", + " # sorted_matrix = sorted_matrix.drop(sorted_matrix.columns[-2:], axis=1)\n", + " sorted_matrix = df\n", + " sorted_matrix.loc['total'] = sorted_matrix.sum()\n", + " sorted_matrix = transpose(sorted_matrix) ### to transpose CDIV on the row and EMM on the columns\n", + " return(sorted_matrix)\n", + "\n", + "\n", + "def convert_matrix(sector,filedir, filename, weathers, mymap, fueltype):\n", + " if sector == \"commercial\":\n", + " county_col = \"in.nhgis_county_gisjoin\"\n", + " sec = \"Com\"\n", + " else:\n", + " county_col = \"in.county\"\n", + " sec = \"Res\"\n", + " \n", + " mykeys = list(mymap[sector][fueltype])\n", + " for weath in weathers:\n", + " df = pd.read_parquet(f\"{filedir}{weath}/{filename}\", engine='pyarrow')\n", + "\n", + " # list_ak_counties = (df[df['in.state'] == 'AK']['in.county']).to_list()\n", + " # list_hi_counties = (df[df['in.state'] == 'hi']['in.county']).to_list()\n", + " # filtered_values = df[df['in.county'].isin(list_hi_counties)]['in.county']\n", + " # for value in filtered_values:\n", + " # print(value)\n", + " \n", + " df.rename(columns={county_col: 'county'}, inplace=True)\n", + " df.rename(columns={'in.state': 'state'}, inplace=True)\n", + " for eu in mykeys:\n", + " df[eu] = df[mymap[sector][fueltype][eu]].sum(axis=1)\n", + " df.reset_index(inplace=True)\n", + " df = apply_geographies(df, scoutgeo_df, geos)\n", + " df = df.dropna(subset=geos)\n", + " df = df[geos+mykeys]\n", + " df = df.groupby(['cdiv', 'state']).sum().reset_index()\n", + " norm_pd = pd.DataFrame()\n", + " convert_pd = pd.DataFrame()\n", + " for eu in mykeys:\n", + " conversion_matrix = df.pivot(index='state', columns='cdiv', values=eu)\n", + " convert_matrix = output(conversion_matrix.reset_index())\n", + " convert_pd = convert_matrix if convert_pd.empty else pd.concat([convert_pd, convert_matrix], ignore_index=False)\n", + " normalized_matrix = conversion_matrix.div(conversion_matrix.sum(axis=0), axis=1).reset_index()\n", + " normalized_matrix = output(normalized_matrix)\n", + " \n", + " normalized_matrix = normalized_matrix.fillna(0)\n", + " normalized_matrix.columns = normalized_matrix.iloc[0]\n", + " normalized_matrix.rename(columns={normalized_matrix.columns[-1]: 'Total'}, inplace=True)\n", + " normalized_matrix = normalized_matrix.iloc[1:]\n", + " normalized_matrix.insert(0, 'CDIV', normalized_matrix.index)\n", + " normalized_matrix.insert(0, 'End use', eu)\n", + " normalized_matrix.drop(columns=['Total'], inplace=True)\n", + " norm_pd = normalized_matrix if norm_pd.empty else pd.concat([norm_pd, normalized_matrix], ignore_index=False)\n", + " if sec == \"Res\":\n", + " norm_pd['AK'] = 0\n", + " norm_pd['HI'] = 0\n", + " norm_pd.to_csv(f\"./{outdir}/{sec}_Cdiv_State_{weath}_{remove_space(fueltype)}.csv\", index=False)\n", + "\n", + "scoutgeo_df = get_scout_geo()\n", + "\n", + "fdir = 'input'\n", + "outdir = 'output/2024_end_use'\n", + "building_types = ['commercial','residential']\n", + "lst_ak_counties = []\n", + "lst_hi_counties = []\n", + "\n", + "geos = ['cdiv', 'state']\n", + "fuel_com = ['electricity', 'natural gas', 'distillate', 'other fuel']\n", + "fuel_res = ['electricity', 'natural gas', 'distillate', 'other fuel']\n", + "################################################################################\n", + "print(\"COMMERCIAL\")\n", + "for fl in fuel_com:\n", + " convert_matrix(\n", + " sector = \"commercial\",\n", + " filedir = f\"./{fdir}/2024_comstock/\",\n", + " filename = \"baseline_metadata_and_annual_results.parquet\",\n", + " weathers = ['amy2018'],\n", + " mymap = enduse_map,\n", + " fueltype = fl\n", + " )\n", + "print(\"RESIDENTIAL\")\n", + "for fl in fuel_res:\n", + " convert_matrix(\n", + " sector = \"residential\",\n", + " filedir = f\"./{fdir}/2024_resstock/\",\n", + " filename = \"baseline_metadata_and_annual_results.parquet\",\n", + " weathers = ['amy2018'],\n", + " mymap = enduse_map,\n", + " fueltype = fl\n", + " )\n", + "################################################################################\n", + "print (\"COMPLETE!\")" + ] + }, + { + "cell_type": "markdown", + "id": "bf1801df-7f79-4d2a-8182-bed4f78bafdf", + "metadata": {}, + "source": [ + "### CDIV/STATE - STOCK (END USE)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3818dfa0-2709-4085-ad6e-ef6342d8cf62", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [], + "source": [ + "def apply_geographies(df, dfdict, geos):\n", + " df['county'] = df['county'].astype(str)\n", + " # df.loc[df['state'] == 'AK', 'county'] = 'G0'\n", + " # df.loc[df['state'] == 'HI', 'county'] = 'G1'\n", + " for geo in geos:\n", + " geocol = 'cdiv' if geo == 'cdiv' else geo\n", + " d = dfdict.set_index('gisjoin').T.to_dict('index')[geocol]\n", + " df[geo] = df['county'].map(d) \n", + " df = df.drop('county', axis=1)\n", + " # print((df[df['state'].isnull()])['state'])\n", + " return df\n", + "\n", + "def output(df):\n", + " # merged_matrix = df.merge(df_order, left_on='cdiv', right_on='cdiv_intersect', how='left')\n", + " # sorted_matrix = merged_matrix.sort_values(by='no')\n", + " # sorted_matrix = sorted_matrix.drop(sorted_matrix.columns[-2:], axis=1)\n", + " sorted_matrix = df\n", + " sorted_matrix.loc['total'] = sorted_matrix.sum()\n", + " sorted_matrix = transpose(sorted_matrix) ### to transpose CDIV on the row and EMM on the columns\n", + " return(sorted_matrix)\n", + "\n", + "\n", + "def eu_rows(df, category, columns_dict, threshold=1):\n", + " # threshold means, minimum 1 col in the dict is non-zero\n", + " columns = columns_dict.get(category, [])\n", + " mask = (df[columns] != 0).sum(axis=1) >= threshold\n", + " filtered_df = df[mask]\n", + " return filtered_df\n", + "\n", + "def eu_rows_woutthreshold(df, category, columns_dict):\n", + " columns = columns_dict.get(category, [])\n", + " mask = (df[columns] != 0).all(axis=1)\n", + " filtered_df = df[mask]\n", + " return filtered_df\n", + " \n", + "def convert_matrix_stock(sector,filedir, filename, weathers, mymap, fueltype):\n", + " conditions_dict = mymap[sector][fueltype]\n", + " if sector == \"commercial\":\n", + " sec = \"Com\"\n", + " county_col = \"in.nhgis_county_gisjoin\"\n", + " # area_col = \"weight\"\n", + " area_col = \"calc.weighted.sqft\"\n", + " else:\n", + " sec = \"Res\"\n", + " county_col = \"in.county\"\n", + " area_col = \"in.units_represented\"\n", + " # area_col = \"weight\"\n", + " \n", + " for weath in weathers: \n", + " alldf = pd.read_parquet(f\"{filedir}{weath}/{filename}\", engine='pyarrow')\n", + " alldf.rename(columns={county_col: \"county\"}, inplace=True)\n", + " alldf.rename(columns={\"in.state\": \"state\"}, inplace=True)\n", + " alldf.rename(columns={area_col: \"warea\"}, inplace=True)\n", + " \n", + " mykeys = list(mymap[sector][fueltype])\n", + " \n", + " norm_pd = pd.DataFrame()\n", + " convert_pd = pd.DataFrame()\n", + " \n", + " for eu in mykeys:\n", + " df = eu_rows(alldf, eu, conditions_dict)\n", + " df = apply_geographies(df, scoutgeo_df, geos)\n", + " # df = df.dropna(subset=geos)\n", + " df = df[[\"warea\",\"state\",\"cdiv\"]] #\"state\",\"weight\",\"in.sqft\"]]\n", + " conversion_matrix = df.pivot_table(index='state', columns='cdiv', values=\"warea\", aggfunc='sum')\n", + " convert_matrix = output(conversion_matrix.reset_index())\n", + " convert_pd = convert_matrix if convert_pd.empty else pd.concat([convert_pd, convert_matrix], ignore_index=False)\n", + " normalized_matrix = conversion_matrix.div(conversion_matrix.sum(axis=0), axis=1).reset_index()\n", + " normalized_matrix = output(normalized_matrix)\n", + " normalized_matrix = normalized_matrix.fillna(0)\n", + " normalized_matrix.columns = normalized_matrix.iloc[0]\n", + " normalized_matrix.rename(columns={normalized_matrix.columns[-1]: 'Total'}, inplace=True)\n", + " normalized_matrix = normalized_matrix.iloc[1:]\n", + " normalized_matrix.insert(0, 'CDIV', normalized_matrix.index)\n", + " normalized_matrix.insert(0, 'End use', eu)\n", + " normalized_matrix.drop(columns=['Total'], inplace=True)\n", + " norm_pd = normalized_matrix if norm_pd.empty else pd.concat([norm_pd, normalized_matrix], ignore_index=False)\n", + " if sec == \"Res\": \n", + " norm_pd['AK'] = 0\n", + " norm_pd['HI'] = 0 \n", + " norm_pd.to_csv(f\"./{outdir}/{sec}_Cdiv_State_{weath}_{remove_space(fueltype)}_Stock.csv\", index=False)\n", + "################################################################################\n", + "scoutgeo_df = get_scout_geo()\n", + "\n", + "fdir = 'input'\n", + "outdir = 'output/2024_end_use'\n", + "building_types = ['commercial','residential']\n", + "lst_ak_counties = []\n", + "lst_hi_counties = []\n", + "\n", + "geos = ['cdiv', 'state']\n", + "fuel_com = ['electricity', 'natural gas', 'distillate', 'other fuel']\n", + "fuel_res = ['electricity', 'natural gas', 'distillate', 'other fuel']\n", + "################################################################################'\n", + "building_types = ['commercial','residential']\n", + "lst_ak_counties = []\n", + "lst_hi_counties = []\n", + "\n", + "geos = ['cdiv', 'state']\n", + "\n", + "print(\"COMMERCIAL\")\n", + "for fl in fuel_com:\n", + " convert_matrix_stock(\n", + " sector = \"commercial\",\n", + " filedir = f\"./{fdir}/2024_comstock/\",\n", + " filename = \"baseline_metadata_and_annual_results.parquet\",\n", + " weathers = ['amy2018'],\n", + " mymap = enduse_map,\n", + " fueltype = fl\n", + " )\n", + "print(\"RESIDENTIAL\")\n", + "for fl in fuel_res:\n", + " convert_matrix_stock(\n", + " sector = \"residential\",\n", + " filedir = f\"./{fdir}/2024_resstock/\",\n", + " filename = \"baseline_metadata_and_annual_results.parquet\",\n", + " weathers = ['amy2018'],\n", + " mymap = enduse_map,\n", + " fueltype = fl\n", + " )\n", + "\n", + "print(\"COMPLETE\")" + ] + }, + { + "cell_type": "markdown", + "id": "9ae2d6fd-9b2c-44bb-8b3d-170308f22810", + "metadata": {}, + "source": [ + "### STATE/EMM - ENERGY (END USE)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ffbec6f0-5a58-4b8c-884d-6949557c0735", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [], + "source": [ + "### ResStock 2024 ComStock 2024\n", + "import pandas as pd\n", + "import warnings\n", + "warnings.filterwarnings(\"ignore\")\n", + "\n", + "def apply_geographies(df, dfdict, geos):\n", + " df['county'] = df['county'].astype(str)\n", + " df.loc[df['state'] == 'AK', 'county'] = 'G0'\n", + " df.loc[df['state'] == 'HI', 'county'] = 'G1' \n", + " for geo in geos:\n", + " geocol = 'emm2020_county' if geo == 'emm' else geo\n", + " d = dfdict.set_index('gisjoin').T.to_dict('index')[geocol]\n", + " df[geo] = df['county'].map(d)\n", + " df = df.drop('county', axis=1)\n", + " return df\n", + "\n", + "def output(df):\n", + " merged_matrix = df.merge(df_order, left_on='emm', right_on='emm_intersect', how='left')\n", + " sorted_matrix = merged_matrix.sort_values(by='no')\n", + " sorted_matrix = sorted_matrix.drop(sorted_matrix.columns[-2:], axis=1)\n", + " sorted_matrix.loc['total'] = sorted_matrix.sum()\n", + " sorted_matrix = transpose(sorted_matrix)\n", + " return(sorted_matrix)\n", + "\n", + "\n", + "def convert_matrix(sector,filedir, filename, weathers, mymap):\n", + " if sector == \"commercial\":\n", + " county_col = \"in.nhgis_county_gisjoin\"\n", + " sec = \"Com\"\n", + " else:\n", + " county_col = \"in.county\"\n", + " sec = \"Res\"\n", + " \n", + " mykeys = list(mymap[sector])\n", + " for weath in weathers:\n", + " df = pd.read_parquet(f\"{filedir}{weath}/{filename}\", engine='pyarrow')\n", + "\n", + " # list_ak_counties = (df[df['in.state'] == 'AK']['in.nhgis_county_gisjoin']).to_list()\n", + " # list_hi_counties = (df[df['in.state'] == 'hi']['in.nhgis_county_gisjoin']).to_list()\n", + " # filtered_values = df[df['in.county'].isin(list_hi_counties)]['in.county']\n", + " # for value in filtered_values:\n", + " # print(value)\n", + " \n", + " df.rename(columns={county_col: 'county'}, inplace=True)\n", + " df.rename(columns={'in.state': 'state'}, inplace=True)\n", + " for eu in mykeys:\n", + " df[eu] = df[mymap[sector][eu]].sum(axis=1)\n", + " df.reset_index(inplace=True)\n", + " df = apply_geographies(df, scoutgeo_df, geos)\n", + " df = df.dropna(subset=geos)\n", + " df = df[geos+mykeys]\n", + " df = df.groupby(['emm', 'state']).sum().reset_index()\n", + " norm_pd = pd.DataFrame()\n", + " convert_pd = pd.DataFrame()\n", + " for eu in mykeys:\n", + " # sdf = df[['emm','cdiv','total_elec']]\n", + " conversion_matrix = df.pivot(index='emm', columns='state', values=eu)\n", + " convert_matrix = output(conversion_matrix.reset_index())\n", + " convert_pd = convert_matrix if convert_pd.empty else pd.concat([convert_pd, convert_matrix], ignore_index=False)\n", + " normalized_matrix = conversion_matrix.div(conversion_matrix.sum(axis=0), axis=1).reset_index()\n", + " normalized_matrix = output(normalized_matrix)\n", + "\n", + " normalized_matrix = normalized_matrix.fillna(0)\n", + " normalized_matrix.columns = normalized_matrix.iloc[0]\n", + " normalized_matrix.rename(columns={normalized_matrix.columns[-1]: 'Total'}, inplace=True)\n", + " normalized_matrix = normalized_matrix.iloc[1:]\n", + " normalized_matrix.insert(0, 'State', normalized_matrix.index)\n", + " normalized_matrix.insert(0, 'End use', eu)\n", + " normalized_matrix.drop(columns=['Total'], inplace=True)\n", + " norm_pd = normalized_matrix if norm_pd.empty else pd.concat([norm_pd, normalized_matrix], ignore_index=False)\n", + " norm_pd.to_csv(f\"./{outdir}/{sec}_State_EMM_{weath}.csv\", index=False)\n", + "\n", + "scoutgeo_df = get_scout_geo()\n", + "\n", + "fdir = 'input'\n", + "outdir = 'output/2024_end_use'\n", + "building_types = ['commercial','residential']\n", + "\n", + "\n", + "geos = ['emm', 'state']\n", + "################################################################################\n", + "\n", + "print(\"COMMERCIAL\")\n", + "convert_matrix(\n", + " sector = \"commercial\",\n", + " filedir = f\"./{fdir}/2024_comstock/\",\n", + " filename = \"baseline_metadata_and_annual_results.parquet\",\n", + " weathers = ['amy2018'],\n", + " mymap = enduse_map)\n", + "print(\"RESIDENTIAL\")\n", + "convert_matrix(\n", + " sector = \"residential\",\n", + " filedir = f\"./{fdir}/2024_resstock/\",\n", + " filename = \"baseline_metadata_and_annual_results.parquet\",\n", + " weathers = ['tmy3','amy2018'],\n", + " mymap = enduse_map)\n", + "################################################################################\n", + "\n", + "print(\"Complete\")" + ] + }, + { + "cell_type": "markdown", + "id": "36eb2353-f4d6-4fd8-92fe-b940c148d9f4", + "metadata": {}, + "source": [ + "### STATE/EMM - STOCK (END USE)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0206b1a4-f3d0-42f0-87c7-eb2cb7c9fdc2", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [], + "source": [ + "def eu_rows(df, category, columns_dict, threshold=1):\n", + " # threshold means, minimum 1 col in the dict is non-zero\n", + " columns = columns_dict.get(category, [])\n", + " mask = (df[columns] != 0).sum(axis=1) >= threshold\n", + " filtered_df = df[mask]\n", + " return filtered_df\n", + "\n", + "def eu_rows_woutthreshold(df, category, columns_dict):\n", + " columns = columns_dict.get(category, [])\n", + " mask = (df[columns] != 0).all(axis=1)\n", + " filtered_df = df[mask]\n", + " return filtered_df\n", + " \n", + "def convert_matrix_stock(sector,filedir, filename, weathers, mymap):\n", + " conditions_dict = mymap[sector]\n", + " if sector == \"commercial\":\n", + " county_col = \"in.nhgis_county_gisjoin\"\n", + " area_col = \"calc.weighted.sqft\"\n", + " sec = \"Com\"\n", + " else:\n", + " county_col = \"in.county\"\n", + " area_col = \"weight\"\n", + " sec = \"Res\"\n", + " \n", + " for weath in weathers: \n", + " alldf = pd.read_parquet(f\"{filedir}{weath}/{filename}\", engine='pyarrow')\n", + " alldf.rename(columns={county_col: \"county\"}, inplace=True)\n", + " alldf.rename(columns={\"in.state\": \"state\"}, inplace=True)\n", + " alldf.rename(columns={area_col: \"warea\"}, inplace=True)\n", + " \n", + " mykeys = list(mymap[sector])\n", + " \n", + " norm_pd = pd.DataFrame()\n", + " convert_pd = pd.DataFrame()\n", + " \n", + " for eu in mykeys:\n", + " df = eu_rows(alldf, eu, conditions_dict)\n", + " df = apply_geographies(df, scoutgeo_df, geos)\n", + " # df = df.dropna(subset=geos)\n", + " df = df[[\"warea\",\"state\",\"emm\"]] #\"state\",\"weight\",\"in.sqft\"]]\n", + " \n", + " conversion_matrix = df.pivot_table(index='emm', columns='state', values=\"warea\", aggfunc='sum')\n", + " convert_matrix = output(conversion_matrix.reset_index())\n", + " convert_pd = convert_matrix if convert_pd.empty else pd.concat([convert_pd, convert_matrix], ignore_index=False)\n", + " normalized_matrix = conversion_matrix.div(conversion_matrix.sum(axis=0), axis=1).reset_index()\n", + " normalized_matrix = output(normalized_matrix)\n", + " normalized_matrix = normalized_matrix.fillna(0)\n", + " normalized_matrix.columns = normalized_matrix.iloc[0]\n", + " normalized_matrix.rename(columns={normalized_matrix.columns[-1]: 'Total'}, inplace=True)\n", + " normalized_matrix = normalized_matrix.iloc[1:]\n", + " normalized_matrix.insert(0, 'emm', normalized_matrix.index)\n", + " normalized_matrix.insert(0, 'End use', eu)\n", + " norm_pd = normalized_matrix if norm_pd.empty else pd.concat([norm_pd, normalized_matrix], ignore_index=False)\n", + " \n", + " norm_pd.to_csv(f\"./{outdir}/{sec}_State_EMM_{weath}_Stock.csv\", index=False)\n", + "################################################################################\n", + "scoutgeo_df = get_scout_geo()\n", + "\n", + "fdir = 'input'\n", + "outdir = 'output/2024_end_use'\n", + "building_types = ['commercial','residential']\n", + "\n", + "\n", + "geos = ['emm', 'state']\n", + "print(\"COMMERCIAL\")\n", + "convert_matrix_stock(\n", + " sector = \"commercial\",\n", + " filedir = f\"./{fdir}/2024_comstock/\",\n", + " filename = \"baseline_metadata_and_annual_results.parquet\",\n", + " weathers = ['amy2018'],\n", + " mymap = enduse_map)\n", + "print(\"RESIDENTIAL\")\n", + "convert_matrix_stock(\n", + " sector = \"residential\",\n", + " filedir = f\"./{fdir}/2024_resstock/\",\n", + " filename = \"baseline_metadata_and_annual_results.parquet\",\n", + " weathers = ['tmy3','amy2018'],\n", + " mymap = enduse_map)\n", + "\n", + "print(\"COMPLETE\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/scout/supporting_data/base_disagg/scout_geography.csv b/scout/supporting_data/base_disagg/scout_geography.csv new file mode 100644 index 00000000..c34a00eb --- /dev/null +++ b/scout/supporting_data/base_disagg/scout_geography.csv @@ -0,0 +1,3143 @@ +county_name,state,cambium_ba,fips_code,cdiv,aia,population,ASHRAE,countryns,emm2020_county,iecc,ba_climate_zone,,cdiv_high +Autauga,AL,90,1001,6,5,60342,3A,161526,SRSE,3,Hot-Humid,,South +Baldwin,AL,90,1003,6,5,253507,2A,161527,SRSE,2,Hot-Humid,,South +Barbour,AL,90,1005,6,5,24585,3A,161528,SRSE,3,Hot-Humid,,South +Bibb,AL,89,1007,6,4,21868,3A,161529,SRSE,3,Mixed-Humid,,South +Blount,AL,90,1009,6,4,59816,3A,161530,SRSE,3,Mixed-Humid,,South +Bullock,AL,90,1011,6,5,9897,3A,161531,SRSE,3,Hot-Humid,,South +Butler,AL,90,1013,6,5,18382,3A,161532,SRSE,3,Hot-Humid,,South +Calhoun,AL,90,1015,6,4,116429,3A,161533,SRSE,3,Mixed-Humid,,South +Chambers,AL,90,1017,6,4,34079,3A,161534,SRSE,3,Mixed-Humid,,South +Cherokee,AL,90,1019,6,4,25666,3A,161535,SRSE,3,Mixed-Humid,,South +Chilton,AL,90,1021,6,4,46431,3A,161536,SRSE,3,Mixed-Humid,,South +Choctaw,AL,89,1023,6,4,12252,3A,161537,SRSE,3,Hot-Humid,,South +Clarke,AL,90,1025,6,5,22337,3A,161538,SRSE,3,Hot-Humid,,South +Clay,AL,90,1027,6,4,14111,3A,161539,SRSE,3,Mixed-Humid,,South +Cleburne,AL,90,1029,6,4,15639,3A,161540,SRSE,3,Mixed-Humid,,South +Coffee,AL,90,1031,6,5,55643,3A,161541,SRSE,3,Hot-Humid,,South +Colbert,AL,89,1033,6,4,58361,3A,161542,SRSE,3,Mixed-Humid,,South +Conecuh,AL,90,1035,6,5,11174,3A,161543,SRSE,3,Hot-Humid,,South +Coosa,AL,90,1037,6,4,10268,3A,161544,SRSE,3,Mixed-Humid,,South +Covington,AL,90,1039,6,4,37952,3A,161545,SRSE,3,Hot-Humid,,South +Crenshaw,AL,90,1041,6,4,13101,3A,161546,SRSE,3,Hot-Humid,,South +Cullman,AL,89,1043,6,4,92016,3A,161547,SRSE,3,Mixed-Humid,,South +Dale,AL,90,1045,6,5,49871,3A,161548,SRSE,3,Hot-Humid,,South +Dallas,AL,90,1047,6,5,36165,3A,161549,SRSE,3,Hot-Humid,,South +DeKalb,AL,89,1049,6,4,72569,3A,161550,SRCE,3,Mixed-Humid,,South +Elmore,AL,90,1051,6,4,90441,3A,161551,SRSE,3,Hot-Humid,,South +Escambia,AL,90,1053,6,5,36558,3A,161552,SRSE,3,Hot-Humid,,South +Etowah,AL,90,1055,6,4,103241,3A,161553,SRSE,3,Mixed-Humid,,South +Fayette,AL,89,1057,6,4,15967,3A,161554,SRSE,3,Mixed-Humid,,South +Franklin,AL,89,1059,6,4,31802,3A,161555,SRSE,3,Mixed-Humid,,South +Geneva,AL,90,1061,6,5,26988,3A,161556,SRSE,3,Hot-Humid,,South +Greene,AL,89,1063,6,4,7341,3A,161557,SRSE,3,Mixed-Humid,,South +Hale,AL,89,1065,6,5,14888,3A,161558,SRSE,3,Mixed-Humid,,South +Henry,AL,90,1067,6,5,17899,3A,161559,SRSE,3,Hot-Humid,,South +Houston,AL,90,1069,6,5,108462,3A,161560,SRSE,3,Hot-Humid,,South +Jackson,AL,89,1071,6,4,53467,3A,161561,SRCE,3,Mixed-Humid,,South +Jefferson,AL,89,1073,6,4,662895,3A,161562,SRSE,3,Mixed-Humid,,South +Lamar,AL,89,1075,6,4,13661,3A,161563,SRSE,3,Mixed-Humid,,South +Lauderdale,AL,89,1077,6,4,96814,3A,161564,SRCE,3,Mixed-Humid,,South +Lawrence,AL,89,1079,6,4,33502,3A,161565,SRSE,3,Mixed-Humid,,South +Lee,AL,90,1081,6,4,183215,3A,161566,SRSE,3,Mixed-Humid,,South +Limestone,AL,89,1083,6,4,114654,3A,161567,SRCE,3,Mixed-Humid,,South +Lowndes,AL,90,1085,6,5,9717,3A,161568,SRSE,3,Hot-Humid,,South +Macon,AL,90,1087,6,4,18370,3A,161569,SRSE,3,Hot-Humid,,South +Madison,AL,89,1089,6,4,412600,3A,161570,SRCE,3,Mixed-Humid,,South +Marengo,AL,89,1091,6,5,18684,3A,161572,SRSE,3,Hot-Humid,,South +Marion,AL,89,1093,6,4,29244,3A,161573,SRSE,3,Mixed-Humid,,South +Marshall,AL,89,1095,6,4,100756,3A,161574,SRSE,3,Mixed-Humid,,South +Mobile,AL,90,1097,6,5,411640,2A,161575,SRSE,2,Hot-Humid,,South +Monroe,AL,90,1099,6,5,19229,3A,161576,SRSE,3,Hot-Humid,,South +Montgomery,AL,90,1101,6,5,224980,3A,161577,SRSE,3,Hot-Humid,,South +Morgan,AL,89,1103,6,4,125133,3A,161578,SRCE,3,Mixed-Humid,,South +Perry,AL,89,1105,6,4,7738,3A,161579,SRSE,3,Hot-Humid,,South +Pickens,AL,89,1107,6,4,18688,3A,161580,SRSE,3,Mixed-Humid,,South +Pike,AL,90,1109,6,5,33137,3A,161581,SRSE,3,Hot-Humid,,South +Randolph,AL,90,1111,6,4,22786,3A,161582,SRSE,3,Mixed-Humid,,South +Russell,AL,90,1113,6,5,58744,3A,161583,SRSE,3,Hot-Humid,,South +St. Clair,AL,90,1115,6,4,95552,3A,164997,SRSE,3,Mixed-Humid,,South +Shelby,AL,89,1117,6,4,233000,3A,161584,SRSE,3,Mixed-Humid,,South +Sumter,AL,89,1119,6,4,11727,3A,161585,SRSE,3,Mixed-Humid,,South +Talladega,AL,90,1121,6,4,81132,3A,161586,SRSE,3,Mixed-Humid,,South +Tallapoosa,AL,90,1123,6,4,40677,3A,161587,SRSE,3,Mixed-Humid,,South +Tuscaloosa,AL,89,1125,6,4,237373,3A,161588,SRSE,3,Mixed-Humid,,South +Walker,AL,89,1127,6,4,64728,3A,161589,SRSE,3,Mixed-Humid,,South +Washington,AL,90,1129,6,5,15022,3A,161590,SRSE,3,Hot-Humid,,South +Wilcox,AL,89,1131,6,5,9944,3A,161591,SRSE,3,Hot-Humid,,South +Winston,AL,89,1133,6,4,23611,3A,161592,SRSE,3,Mixed-Humid,,South +Aleutians East Borough,AK,,2013,9,1,3461,7,,,7,Very Cold,,West +Aleutians West Census Area,AK,,2016,9,1,5160,7,,,7,Very Cold,,West +Anchorage Municipality,AK,,2020,9,1,286075,7,,,7,Very Cold,,West +Bethel Census Area,AK,,2050,9,1,18224,8,,,8,Subarctic,,West +Bristol Bay Borough,AK,,2060,9,1,844,7,,,7,Very Cold,,West +Denali Borough,AK,,2068,9,1,1584,7,,,7,Very Cold,,West +Dillingham Census Area,AK,,2070,9,1,4607,8,,,8,Subarctic,,West +Fairbanks North Star Borough,AK,,2090,9,1,94840,8,,,8,Subarctic,,West +Haines Borough,AK,,2100,9,1,2070,7,,,7,Very Cold,,West +Hoonah-Angoon Census Area,AK,,2105,9,1,2262,7,,,7,Very Cold,,West +Juneau City and Borough,AK,,2110,9,1,31555,7,,,7,Very Cold,,West +Kenai Peninsula Borough,AK,,2122,9,1,61223,7,,,7,Very Cold,,West +Ketchikan Gateway Borough,AK,,2130,9,1,13738,7,,,7,Very Cold,,West +Kodiak Island Borough,AK,,2150,9,1,12565,7,,,7,Very Cold,,West +Kusilvak Census Area,AK,,2158,9,1,8001,8,,,8,Subarctic,,West +Lake and Peninsula Borough,AK,,2164,9,1,1331,7,,,7,Very Cold,,West +Matanuska-Susitna Borough,AK,,2170,9,1,115239,7,,,7,Very Cold,,West +Nome Census Area,AK,,2180,9,1,9763,8,,,8,Subarctic,,West +North Slope Borough,AK,,2185,9,1,10603,8,,,8,Subarctic,,West +Northwest Arctic Borough,AK,,2188,9,1,7361,8,,,8,Subarctic,,West +Petersburg Borough,AK,,2195,9,1,3427,7,,,7,Very Cold,,West +Prince of Wales-Hyder Census Area,AK,,2198,9,1,5696,7,,,7,Very Cold,,West +Sitka City and Borough,AK,,2220,9,1,8282,7,,,7,Very Cold,,West +Skagway Municipality,AK,,2230,9,1,1095,7,,,7,Very Cold,,West +Southeast Fairbanks Census Area,AK,,2240,9,1,7077,8,,,8,Subarctic,,West +Valdez-Cordova Census Area,AK,,2261,9,1,9202,7,,,7,Very Cold,,West +Wrangell City and Borough,AK,,2275,9,1,2064,7,,,7,Very Cold,,West +Yakutat City and Borough,AK,,2282,9,1,687,7,,,7,Very Cold,,West +Yukon-Koyukuk Census Area,AK,,2290,9,1,5129,8,,,8,Subarctic,,West +Apache,AZ,29,4001,8,2,65036,5B,25441,SRSG,5,Cold,,West +Cochise,AZ,28,4003,8,4,124640,3B,25442,SRSG,3,Hot-Dry,,West +Coconino,AZ,28,4005,8,2,144472,5B,25443,SRSG,5,Cold,,West +Gila,AZ,28,4007,8,4,54003,4B,40471,SRSG,4,Mixed-Dry,,West +Graham,AZ,28,4009,8,5,39525,3B,25444,SRSG,3,Hot-Dry,,West +Greenlee,AZ,28,4011,8,5,9369,3B,42807,SRSG,3,Hot-Dry,,West +La Paz,AZ,28,4012,8,5,16710,2B,43540,SRSG,2,Hot-Dry,,West +Maricopa,AZ,28,4013,8,5,4585871,2B,37026,SRSG,2,Hot-Dry,,West +Mohave,AZ,27,4015,8,5,223682,3B,25445,SRSG,3,Hot-Dry,,West +Navajo,AZ,28,4017,8,3,109175,5B,42808,SRSG,5,Cold,,West +Pima,AZ,30,4019,8,5,1063162,2B,25446,SRSG,2,Hot-Dry,,West +Pinal,AZ,28,4021,8,5,484239,2B,25447,SRSG,2,Hot-Dry,,West +Santa Cruz,AZ,30,4023,8,4,49158,3B,40472,SRSG,3,Hot-Dry,,West +Yavapai,AZ,28,4025,8,3,249081,4B,42809,SRSG,4,Mixed-Dry,,West +Yuma,AZ,28,4027,8,5,213221,2B,23901,SRSG,2,Hot-Dry,,West +Arkansas,AR,85,5001,7,5,16307,3A,63755,MISS,3,Mixed-Humid,,South +Ashley,AR,85,5003,7,4,18262,3A,63756,MISS,3,Mixed-Humid,,South +Baxter,AR,85,5005,7,3,42875,4A,69895,MISS,4,Mixed-Humid,,South +Benton,AR,56,5007,7,3,311013,4A,69896,SPPS,4,Mixed-Humid,,South +Boone,AR,56,5009,7,3,38530,4A,69897,MISS,4,Mixed-Humid,,South +Bradley,AR,85,5011,7,4,10104,3A,63757,MISS,3,Mixed-Humid,,South +Calhoun,AR,85,5013,7,4,4641,3A,63758,MISS,3,Mixed-Humid,,South +Carroll,AR,56,5015,7,3,28814,4A,66975,SPPS,4,Mixed-Humid,,South +Chicot,AR,85,5017,7,5,9538,3A,69160,MISS,3,Mixed-Humid,,South +Clark,AR,85,5019,7,4,21274,3A,66845,MISS,3,Mixed-Humid,,South +Clay,AR,85,5021,7,4,14201,3A,63759,MISS,3,Mixed-Humid,,South +Cleburne,AR,56,5023,7,4,25445,3A,66983,MISS,3,Mixed-Humid,,South +Cleveland,AR,85,5025,7,4,7378,3A,63760,MISS,3,Mixed-Humid,,South +Columbia,AR,85,5027,7,4,22150,3A,63761,MISS,3,Hot-Humid,,South +Conway,AR,85,5029,7,5,21077,3A,66846,MISS,3,Mixed-Humid,,South +Craighead,AR,85,5031,7,4,113993,3A,66847,MISS,3,Mixed-Humid,,South +Crawford,AR,56,5033,7,4,61891,3A,69161,SPPS,3,Mixed-Humid,,South +Crittenden,AR,85,5035,7,4,47139,3A,69162,MISS,3,Mixed-Humid,,South +Cross,AR,85,5037,7,4,16420,3A,66848,MISS,3,Mixed-Humid,,South +Dallas,AR,85,5039,7,4,6185,3A,66849,MISS,3,Mixed-Humid,,South +Desha,AR,85,5041,7,5,10479,3A,66850,MISS,3,Mixed-Humid,,South +Drew,AR,85,5043,7,4,16945,3A,66851,MISS,3,Mixed-Humid,,South +Faulkner,AR,85,5045,7,4,129951,3A,66852,MISS,3,Mixed-Humid,,South +Franklin,AR,56,5047,7,4,17468,3A,66853,SPPS,3,Mixed-Humid,,South +Fulton,AR,85,5049,7,4,12421,4A,66854,MISS,4,Mixed-Humid,,South +Garland,AR,85,5051,7,4,99784,3A,66855,MISS,3,Mixed-Humid,,South +Grant,AR,85,5053,7,4,18383,3A,66856,MISS,3,Mixed-Humid,,South +Greene,AR,85,5055,7,4,46743,3A,66857,MISS,3,Mixed-Humid,,South +Hempstead,AR,85,5057,7,4,19343,3A,66858,SPPS,3,Mixed-Humid,,South +Hot Spring,AR,85,5059,7,4,33258,3A,66859,MISS,3,Mixed-Humid,,South +Howard,AR,56,5061,7,4,12533,3A,66872,SPPS,3,Mixed-Humid,,South +Independence,AR,85,5063,7,4,38320,3A,69163,MISS,3,Mixed-Humid,,South +Izard,AR,85,5065,7,4,14169,4A,66860,MISS,4,Mixed-Humid,,South +Jackson,AR,85,5067,7,4,16784,3A,66861,MISS,3,Mixed-Humid,,South +Jefferson,AR,85,5069,7,5,63661,3A,66862,MISS,3,Mixed-Humid,,South +Johnson,AR,56,5071,7,4,26129,3A,66863,SPPS,3,Mixed-Humid,,South +Lafayette,AR,85,5073,7,4,6095,3A,66864,SPPS,3,Hot-Humid,,South +Lawrence,AR,85,5075,7,4,16318,3A,66865,MISS,3,Mixed-Humid,,South +Lee,AR,85,5077,7,4,8201,3A,66866,MISS,3,Mixed-Humid,,South +Lincoln,AR,85,5079,7,5,12898,3A,66873,MISS,3,Mixed-Humid,,South +Little River,AR,85,5081,7,5,11805,3A,66874,SPPS,3,Hot-Humid,,South +Logan,AR,56,5083,7,4,21400,3A,82850,SPPS,3,Mixed-Humid,,South +Lonoke,AR,85,5085,7,4,75944,3A,69164,MISS,3,Mixed-Humid,,South +Madison,AR,56,5087,7,3,17775,4A,69165,SPPS,4,Mixed-Humid,,South +Marion,AR,56,5089,7,3,17514,4A,69898,MISS,4,Mixed-Humid,,South +Miller,AR,85,5091,7,5,42415,3A,69166,SPPS,3,Hot-Humid,,South +Mississippi,AR,85,5093,7,4,38663,3A,69899,MISS,3,Mixed-Humid,,South +Monroe,AR,85,5095,7,4,6512,3A,69167,MISS,3,Mixed-Humid,,South +Montgomery,AR,56,5097,7,4,8620,3A,69168,SPPS,3,Mixed-Humid,,South +Nevada,AR,85,5099,7,5,8120,3A,69169,MISS,3,Mixed-Humid,,South +Newton,AR,56,5101,7,3,7071,4A,69900,SPPS,4,Mixed-Humid,,South +Ouachita,AR,85,5103,7,4,21793,3A,69170,MISS,3,Mixed-Humid,,South +Perry,AR,85,5105,7,4,10184,3A,69171,MISS,3,Mixed-Humid,,South +Phillips,AR,85,5107,7,4,14961,3A,69172,MISS,3,Mixed-Humid,,South +Pike,AR,56,5109,7,4,10208,3A,69173,SPPS,3,Mixed-Humid,,South +Poinsett,AR,85,5111,7,4,22397,3A,69174,MISS,3,Mixed-Humid,,South +Polk,AR,56,5113,7,4,19436,3A,69175,SPPS,3,Mixed-Humid,,South +Pope,AR,85,5115,7,4,64593,3A,69901,MISS,3,Mixed-Humid,,South +Prairie,AR,85,5117,7,4,8036,3A,69176,MISS,3,Mixed-Humid,,South +Pulaski,AR,85,5119,7,4,400009,3A,69177,MISS,3,Mixed-Humid,,South +Randolph,AR,85,5121,7,4,18907,3A,69178,MISS,3,Mixed-Humid,,South +St. Francis,AR,85,5123,7,4,22101,3A,83331,MISS,3,Mixed-Humid,,South +Saline,AR,85,5125,7,4,129574,3A,67102,MISS,3,Mixed-Humid,,South +Scott,AR,56,5127,7,4,9851,3A,69179,SPPS,3,Mixed-Humid,,South +Searcy,AR,56,5129,7,3,7806,4A,69180,MISS,4,Mixed-Humid,,South +Sebastian,AR,56,5131,7,4,129098,3A,69181,SPPS,3,Mixed-Humid,,South +Sevier,AR,85,5133,7,4,15632,3A,69182,SPPS,3,Mixed-Humid,,South +Sharp,AR,85,5135,7,4,17968,3A,69183,MISS,3,Mixed-Humid,,South +Stone,AR,85,5137,7,3,12671,4A,69902,MISS,4,Mixed-Humid,,South +Union,AR,85,5139,7,5,37397,3A,69903,MISS,3,Hot-Humid,,South +Van Buren,AR,56,5141,7,4,16142,3A,69904,MISS,3,Mixed-Humid,,South +Washington,AR,56,5143,7,3,261549,4A,69905,SPPS,4,Mixed-Humid,,South +White,AR,85,5145,7,4,78452,3A,69906,MISS,3,Mixed-Humid,,South +Woodruff,AR,85,5147,7,4,5964,3A,69907,MISS,3,Mixed-Humid,,South +Yell,AR,85,5149,7,4,20044,3A,69908,SPPS,3,Mixed-Humid,,South +Alameda,CA,9,6001,9,4,1622188,3C,1675839,CANO,3,Marine,,West +Alpine,CA,9,6003,9,1,1141,6B,1675840,CANO,6,Cold,,West +Amador,CA,9,6005,9,4,41811,4B,1675841,CANO,4,Mixed-Dry,,West +Butte,CA,9,6007,9,4,207172,3B,1675842,CANO,3,Hot-Dry,,West +Calaveras,CA,9,6009,9,4,46565,4B,1675885,CANO,4,Mixed-Dry,,West +Colusa,CA,9,6011,9,4,22037,3B,1675902,CANO,3,Hot-Dry,,West +Contra Costa,CA,9,6013,9,4,1155025,3B,1675903,CANO,3,Hot-Dry,,West +Del Norte,CA,9,6015,9,3,26589,4C,1682074,NWPP,4,Marine,,West +El Dorado,CA,9,6017,9,4,192215,4B,277273,CANO,4,Mixed-Dry,,West +Fresno,CA,9,6019,9,4,1017162,3B,277274,CANO,3,Hot-Dry,,West +Glenn,CA,9,6021,9,4,28129,3B,277275,CANO,3,Hot-Dry,,West +Humboldt,CA,9,6023,9,3,133985,4C,1681908,CANO,4,Marine,,West +Imperial,CA,10,6025,9,5,179057,2B,277277,SRSG,2,Hot-Dry,,West +Inyo,CA,10,6027,9,3,18527,4B,1804637,CASO,4,Mixed-Dry,,West +Kern,CA,10,6029,9,5,913820,3B,2054176,CASO,3,Hot-Dry,,West +Kings,CA,9,6031,9,4,152682,3B,277280,CANO,3,Hot-Dry,,West +Lake,CA,9,6033,9,4,67878,4B,277281,CANO,4,Mixed-Dry,,West +Lassen,CA,8,6035,9,2,28861,5B,1693324,NWPP,5,Cold,,West +Los Angeles,CA,10,6037,9,4,9663345,3B,277283,CASO,3,Hot-Dry,,West +Madera,CA,9,6039,9,4,162858,3B,277284,CANO,3,Hot-Dry,,West +Marin,CA,9,6041,9,4,254407,3C,277285,CANO,3,Marine,,West +Mariposa,CA,9,6043,9,4,16919,4B,277286,CANO,4,Mixed-Dry,,West +Mendocino,CA,9,6045,9,4,89108,3C,277287,CANO,3,Marine,,West +Merced,CA,9,6047,9,4,291920,3B,277288,CANO,3,Hot-Dry,,West +Modoc,CA,8,6049,9,1,8500,5B,277289,NWPP,5,Cold,,West +Mono,CA,10,6051,9,1,13066,6B,277290,CASO,6,Cold,,West +Monterey,CA,9,6053,9,4,430723,3C,277291,CANO,3,Marine,,West +Napa,CA,9,6055,9,4,133216,3C,277292,CANO,3,Marine,,West +Nevada,CA,9,6057,9,3,102037,5B,1682927,CANO,5,Cold,,West +Orange,CA,10,6059,9,4,3135755,3B,277294,CASO,3,Hot-Dry,,West +Placer,CA,9,6061,9,4,423561,3B,277295,CANO,3,Hot-Dry,,West +Plumas,CA,9,6063,9,2,19131,5B,277296,CANO,5,Cold,,West +Riverside,CA,10,6065,9,4,2492442,3B,277297,CASO,3,Hot-Dry,,West +Sacramento,CA,9,6067,9,4,1584288,3B,277298,CANO,3,Hot-Dry,,West +San Benito,CA,9,6069,9,4,68175,3C,277299,CANO,3,Marine,,West +San Bernardino,CA,10,6071,9,4,2195611,3B,277300,CASO,3,Hot-Dry,,West +San Diego,CA,11,6073,9,4,3269973,3B,277301,CASO,3,Hot-Dry,,West +San Francisco,CA,9,6075,9,4,808988,3C,277302,CANO,3,Marine,,West +San Joaquin,CA,9,6077,9,4,800965,3B,277303,CANO,3,Hot-Dry,,West +San Luis Obispo,CA,9,6079,9,4,281639,3C,277304,CANO,3,Marine,,West +San Mateo,CA,9,6081,9,4,726353,3C,277305,CANO,3,Marine,,West +Santa Barbara,CA,9,6083,9,4,441257,3C,277306,CANO,3,Marine,,West +Santa Clara,CA,9,6085,9,4,1877592,3C,277307,CANO,3,Marine,,West +Santa Cruz,CA,9,6087,9,4,261547,3C,277308,CANO,3,Marine,,West +Shasta,CA,9,6089,9,4,180366,3B,1682610,CANO,3,Hot-Dry,,West +Sierra,CA,9,6091,9,3,3200,5B,277310,CANO,5,Cold,,West +Siskiyou,CA,8,6093,9,3,42905,5B,277311,NWPP,5,Cold,,West +Solano,CA,9,6095,9,4,449218,3B,277312,CANO,3,Hot-Dry,,West +Sonoma,CA,9,6097,9,4,481812,3C,1657246,CANO,3,Marine,,West +Stanislaus,CA,9,6099,9,4,551430,3B,277314,CANO,3,Hot-Dry,,West +Sutter,CA,9,6101,9,4,97948,3B,277315,CANO,3,Hot-Dry,,West +Tehama,CA,9,6103,9,4,64896,3B,1692767,CANO,3,Hot-Dry,,West +Trinity,CA,9,6105,9,3,15670,4B,277317,CANO,4,Mixed-Dry,,West +Tulare,CA,10,6107,9,4,479468,3B,277318,CASO,3,Hot-Dry,,West +Tuolumne,CA,9,6109,9,4,54204,4B,277319,CANO,4,Mixed-Dry,,West +Ventura,CA,10,6111,9,4,829590,3C,277320,CASO,3,Marine,,West +Yolo,CA,9,6113,9,4,220544,3B,277321,CANO,3,Hot-Dry,,West +Yuba,CA,9,6115,9,4,85722,3B,277322,CANO,3,Hot-Dry,,West +Adams,CO,33,8001,8,2,533365,5B,198116,RMRG,5,Cold,,West +Alamosa,CO,34,8003,8,1,16655,6B,198117,RMRG,6,Cold,,West +Arapahoe,CO,33,8005,8,2,656061,5B,198118,RMRG,5,Cold,,West +Archuleta,CO,34,8007,8,1,14189,6B,198119,RMRG,6,Cold,,West +Baca,CO,34,8009,8,3,3344,4B,198120,RMRG,4,Mixed-Dry,,West +Bent,CO,34,8011,8,3,5681,5B,198121,RMRG,5,Cold,,West +Boulder,CO,33,8013,8,2,326831,5B,198122,RMRG,5,Cold,,West +Broomfield,CO,33,8014,8,2,76860,5B,1945881,RMRG,5,Cold,,West +Chaffee,CO,34,8015,8,1,20617,6B,198123,RMRG,6,Cold,,West +Cheyenne,CO,34,8017,8,2,1727,5B,198124,RMRG,5,Cold,,West +Clear Creek,CO,33,8019,8,1,9147,7,198125,RMRG,7,Very Cold,,West +Conejos,CO,34,8021,8,1,7521,6B,198126,RMRG,6,Cold,,West +Costilla,CO,34,8023,8,1,3628,6B,198127,RMRG,6,Cold,,West +Crowley,CO,34,8025,8,3,5636,5B,198128,RMRG,5,Cold,,West +Custer,CO,34,8027,8,1,5534,6B,198129,RMRG,6,Cold,,West +Delta,CO,34,8029,8,2,31746,5B,198130,RMRG,5,Cold,,West +Denver,CO,33,8031,8,2,716577,5B,198131,RMRG,5,Cold,,West +Dolores,CO,34,8033,8,1,2513,6B,198132,RMRG,6,Cold,,West +Douglas,CO,33,8035,8,2,383906,5B,198133,RMRG,5,Cold,,West +Eagle,CO,33,8037,8,1,54381,6B,198134,RMRG,6,Cold,,West +Elbert,CO,34,8039,8,2,28806,5B,198136,RMRG,5,Cold,,West +El Paso,CO,34,8041,8,2,744215,5B,198135,RMRG,5,Cold,,West +Fremont,CO,34,8043,8,3,50318,5B,198137,RMRG,5,Cold,,West +Garfield,CO,33,8045,8,1,62707,5B,198138,RMRG,5,Cold,,West +Gilpin,CO,33,8047,8,2,5926,5B,198139,RMRG,5,Cold,,West +Grand,CO,33,8049,8,1,15935,7,198140,RMRG,7,Very Cold,,West +Gunnison,CO,34,8051,8,1,17321,7,198141,RMRG,7,Very Cold,,West +Hinsdale,CO,34,8053,8,1,765,7,198142,RMRG,7,Very Cold,,West +Huerfano,CO,34,8055,8,3,7055,5B,198143,RMRG,5,Cold,,West +Jackson,CO,33,8057,8,1,1309,7,198144,RMRG,7,Very Cold,,West +Jefferson,CO,33,8059,8,2,576366,5B,198145,RMRG,5,Cold,,West +Kiowa,CO,34,8061,8,2,1384,5B,198146,RMRG,5,Cold,,West +Kit Carson,CO,34,8063,8,2,6994,5B,198147,RMRG,5,Cold,,West +Lake,CO,33,8065,8,1,7365,7,198149,RMRG,7,Very Cold,,West +La Plata,CO,34,8067,8,1,56407,5B,198148,RMRG,5,Cold,,West +Larimer,CO,33,8069,8,2,370771,5B,198150,RMRG,5,Cold,,West +Las Animas,CO,34,8071,8,3,14348,4B,198151,RMRG,4,Mixed-Dry,,West +Lincoln,CO,34,8073,8,2,5480,5B,198152,RMRG,5,Cold,,West +Logan,CO,33,8075,8,2,20619,5B,198153,RMRG,5,Cold,,West +Mesa,CO,33,8077,8,2,159681,5B,198154,RMRG,5,Cold,,West +Mineral,CO,34,8079,8,1,944,7,198155,RMRG,7,Very Cold,,West +Moffat,CO,33,8081,8,1,13327,6B,198156,RMRG,6,Cold,,West +Montezuma,CO,34,8083,8,1,26531,5B,198157,RMRG,5,Cold,,West +Montrose,CO,34,8085,8,2,44156,5B,198158,RMRG,5,Cold,,West +Morgan,CO,33,8087,8,2,29524,5B,198159,RMRG,5,Cold,,West +Otero,CO,34,8089,8,3,18136,4B,198160,RMRG,4,Mixed-Dry,,West +Ouray,CO,34,8091,8,1,5176,6B,198161,RMRG,6,Cold,,West +Park,CO,33,8093,8,1,18117,7,198162,RMRG,7,Very Cold,,West +Phillips,CO,33,8095,8,2,4476,5B,198163,RMRG,5,Cold,,West +Pitkin,CO,33,8097,8,1,16640,7,198164,RMRG,7,Very Cold,,West +Prowers,CO,34,8099,8,3,11751,5B,198165,RMRG,5,Cold,,West +Pueblo,CO,34,8101,8,3,169422,5B,198166,RMRG,5,Cold,,West +Rio Blanco,CO,33,8103,8,1,6569,6B,198167,RMRG,6,Cold,,West +Rio Grande,CO,34,8105,8,1,11188,7,198168,RMRG,7,Very Cold,,West +Routt,CO,33,8107,8,1,25064,7,198169,RMRG,7,Very Cold,,West +Saguache,CO,34,8109,8,1,6688,6B,198170,RMRG,6,Cold,,West +San Juan,CO,34,8111,8,1,802,7,198171,RMRG,7,Very Cold,,West +San Miguel,CO,34,8113,8,1,7868,6B,198172,RMRG,6,Cold,,West +Sedgwick,CO,33,8115,8,2,2299,5B,198173,RMRG,5,Cold,,West +Summit,CO,33,8117,8,1,30465,7,198174,RMRG,7,Very Cold,,West +Teller,CO,33,8119,8,2,24617,5B,198175,RMRG,5,Cold,,West +Washington,CO,33,8121,8,2,4855,5B,198176,RMRG,5,Cold,,West +Weld,CO,33,8123,8,2,359442,5B,198177,RMRG,5,Cold,,West +Yuma,CO,33,8125,8,2,9862,5B,198178,RMRG,5,Cold,,West +Fairfield,CT,132,9001,1,2,957419,5A,212794,ISNE,5,Cold,,Northeast +Hartford,CT,132,9003,1,2,899498,5A,212338,ISNE,5,Cold,,Northeast +Litchfield,CT,132,9005,1,2,185186,5A,212796,ISNE,5,Cold,,Northeast +Middlesex,CT,132,9007,1,2,164245,5A,212797,ISNE,5,Cold,,Northeast +New Haven,CT,132,9009,1,2,864835,5A,212798,ISNE,5,Cold,,Northeast +New London,CT,132,9011,1,2,268555,5A,212799,ISNE,5,Cold,,Northeast +Tolland,CT,132,9013,1,2,149788,5A,212668,ISNE,5,Cold,,Northeast +Windham,CT,132,9015,1,2,116418,5A,212801,ISNE,5,Cold,,Northeast +Kent,DE,125,10001,5,3,189789,4A,217271,PJME,4,Mixed-Humid,,South +New Castle,DE,125,10003,5,3,578592,4A,217270,PJME,4,Mixed-Humid,,South +Sussex,DE,125,10005,5,3,263509,4A,217269,PJME,4,Mixed-Humid,,South +District of Columbia,DC,123,11001,5,3,678972,4A,1702382,PJMD,4,Mixed-Humid,,South +Alachua,FL,101,12001,5,5,285994,2A,308548,FRCC,2,Hot-Humid,,South +Baker,FL,101,12003,5,5,28368,2A,306920,FRCC,2,Hot-Humid,,South +Bay,FL,91,12005,5,5,190769,2A,295738,SRSE,2,Hot-Humid,,South +Bradford,FL,101,12007,5,5,27858,2A,303634,FRCC,2,Hot-Humid,,South +Brevard,FL,102,12009,5,5,643979,2A,295749,FRCC,2,Hot-Humid,,South +Broward,FL,102,12011,5,5,1962531,1A,295753,FRCC,1,Hot-Humid,,South +Calhoun,FL,91,12013,5,5,13470,2A,306919,SRSE,2,Hot-Humid,,South +Charlotte,FL,101,12015,5,5,206134,2A,295742,FRCC,2,Hot-Humid,,South +Citrus,FL,101,12017,5,5,166696,2A,295752,FRCC,2,Hot-Humid,,South +Clay,FL,101,12019,5,5,232439,2A,295726,FRCC,2,Hot-Humid,,South +Collier,FL,101,12021,5,5,404310,2A,295754,FRCC,2,Hot-Humid,,South +Columbia,FL,101,12023,5,5,73063,2A,306909,FRCC,2,Hot-Humid,,South +DeSoto,FL,101,12027,5,5,35979,2A,294452,FRCC,2,Hot-Humid,,South +Dixie,FL,101,12029,5,5,17465,2A,295725,FRCC,2,Hot-Humid,,South +Duval,FL,101,12031,5,5,1030822,2A,293656,FRCC,2,Hot-Humid,,South +Escambia,FL,91,12033,5,5,326928,2A,295737,SRSE,2,Hot-Humid,,South +Flagler,FL,101,12035,5,5,131439,2A,308547,FRCC,2,Hot-Humid,,South +Franklin,FL,101,12037,5,5,12594,2A,306911,FRCC,2,Hot-Humid,,South +Gadsden,FL,101,12039,5,5,43833,2A,306918,FRCC,2,Hot-Humid,,South +Gilchrist,FL,101,12041,5,5,19587,2A,303633,FRCC,2,Hot-Humid,,South +Glades,FL,101,12043,5,5,12786,2A,295743,FRCC,2,Hot-Humid,,South +Gulf,FL,91,12045,5,5,15693,2A,306917,SRSE,2,Hot-Humid,,South +Hamilton,FL,101,12047,5,5,13471,2A,295736,FRCC,2,Hot-Humid,,South +Hardee,FL,101,12049,5,5,25760,2A,295746,FRCC,2,Hot-Humid,,South +Hendry,FL,101,12051,5,5,43333,2A,307626,FRCC,2,Hot-Humid,,South +Hernando,FL,101,12053,5,5,212807,2A,295751,FRCC,2,Hot-Humid,,South +Highlands,FL,101,12055,5,5,107614,2A,295756,FRCC,2,Hot-Humid,,South +Hillsborough,FL,101,12057,5,5,1535564,2A,295757,FRCC,2,Hot-Humid,,South +Holmes,FL,91,12059,5,5,19944,2A,295735,SRSE,2,Hot-Humid,,South +Indian River,FL,102,12061,5,5,169795,2A,307624,FRCC,2,Hot-Humid,,South +Jackson,FL,91,12063,5,5,48622,2A,295734,SRSE,2,Hot-Humid,,South +Jefferson,FL,101,12065,5,5,15450,2A,295733,FRCC,2,Hot-Humid,,South +Lafayette,FL,101,12067,5,5,8078,2A,295732,FRCC,2,Hot-Humid,,South +Lake,FL,101,12069,5,5,424462,2A,308551,FRCC,2,Hot-Humid,,South +Lee,FL,101,12071,5,5,834573,2A,295758,FRCC,2,Hot-Humid,,South +Leon,FL,101,12073,5,5,296913,2A,306916,FRCC,2,Hot-Humid,,South +Levy,FL,101,12075,5,5,46545,2A,295724,FRCC,2,Hot-Humid,,South +Liberty,FL,101,12077,5,5,7706,2A,308549,FRCC,2,Hot-Humid,,South +Madison,FL,101,12079,5,5,18519,2A,295731,FRCC,2,Hot-Humid,,South +Manatee,FL,101,12081,5,5,441095,2A,295744,FRCC,2,Hot-Humid,,South +Marion,FL,101,12083,5,5,409959,2A,306922,FRCC,2,Hot-Humid,,South +Martin,FL,102,12085,5,5,163315,2A,308550,FRCC,2,Hot-Humid,,South +Miami-Dade,FL,102,12086,5,5,2686867,1A,295755,FRCC,1,Hot-Humid,,South +Monroe,FL,101,12087,5,5,80614,1A,295759,FRCC,1,Hot-Humid,,South +Nassau,FL,101,12089,5,5,101501,2A,295730,FRCC,2,Hot-Humid,,South +Okaloosa,FL,91,12091,5,5,218464,2A,306915,SRSE,2,Hot-Humid,,South +Okeechobee,FL,101,12093,5,5,41427,2A,295760,FRCC,2,Hot-Humid,,South +Orange,FL,101,12095,5,5,1471416,2A,295750,FRCC,2,Hot-Humid,,South +Osceola,FL,101,12097,5,5,437784,2A,295748,FRCC,2,Hot-Humid,,South +Palm Beach,FL,102,12099,5,5,1533801,2A,295761,FRCC,2,Hot-Humid,,South +Pasco,FL,101,12101,5,5,632996,2A,295739,FRCC,2,Hot-Humid,,South +Pinellas,FL,101,12103,5,5,961596,2A,295745,FRCC,2,Hot-Humid,,South +Polk,FL,101,12105,5,5,818330,2A,295747,FRCC,2,Hot-Humid,,South +Putnam,FL,101,12107,5,5,75955,2A,306910,FRCC,2,Hot-Humid,,South +St. Johns,FL,101,12109,5,5,320110,2A,308371,FRCC,2,Hot-Humid,,South +St. Lucie,FL,102,12111,5,5,373586,2A,308372,FRCC,2,Hot-Humid,,South +Santa Rosa,FL,91,12113,5,5,203162,2A,306914,SRSE,2,Hot-Humid,,South +Sarasota,FL,101,12115,5,5,469013,2A,295741,FRCC,2,Hot-Humid,,South +Seminole,FL,101,12117,5,5,484271,2A,303665,FRCC,2,Hot-Humid,,South +Sumter,FL,101,12119,5,5,151565,2A,295740,FRCC,2,Hot-Humid,,South +Suwannee,FL,101,12121,5,5,46130,2A,295729,FRCC,2,Hot-Humid,,South +Taylor,FL,101,12123,5,5,21582,2A,295728,FRCC,2,Hot-Humid,,South +Union,FL,101,12125,5,5,15532,2A,306913,FRCC,2,Hot-Humid,,South +Volusia,FL,101,12127,5,5,590357,2A,306921,FRCC,2,Hot-Humid,,South +Wakulla,FL,101,12129,5,5,36449,2A,306912,FRCC,2,Hot-Humid,,South +Walton,FL,91,12131,5,5,86354,2A,295727,SRSE,2,Hot-Humid,,South +Washington,FL,91,12133,5,5,25602,2A,295762,SRSE,2,Hot-Humid,,South +Appling,GA,94,13001,5,5,18457,2A,349113,SRSE,2,Hot-Humid,,South +Atkinson,GA,94,13003,5,5,8293,2A,345784,SRSE,2,Hot-Humid,,South +Bacon,GA,94,13005,5,5,11124,2A,344784,SRSE,2,Hot-Humid,,South +Baker,GA,94,13007,5,5,2743,2A,342832,SRSE,2,Hot-Humid,,South +Baldwin,GA,94,13009,5,4,43396,3A,345255,SRSE,3,Mixed-Humid,,South +Banks,GA,94,13011,5,4,19789,4A,349230,SRSE,4,Mixed-Humid,,South +Barrow,GA,94,13013,5,4,92792,3A,356976,SRSE,3,Mixed-Humid,,South +Bartow,GA,94,13015,5,4,115041,3A,351604,SRSE,3,Mixed-Humid,,South +Ben Hill,GA,94,13017,5,5,17128,3A,351606,SRSE,3,Hot-Humid,,South +Berrien,GA,94,13019,5,5,18570,2A,326638,SRSE,2,Hot-Humid,,South +Bibb,GA,94,13021,5,5,156512,3A,1672039,SRSE,3,Mixed-Humid,,South +Bleckley,GA,94,13023,5,5,12465,3A,347451,SRSE,3,Hot-Humid,,South +Brantley,GA,94,13025,5,5,18401,2A,351605,SRSE,2,Hot-Humid,,South +Brooks,GA,94,13027,5,5,16245,2A,345518,SRSE,2,Hot-Humid,,South +Bryan,GA,94,13029,5,5,49739,2A,350496,SRSE,2,Hot-Humid,,South +Bulloch,GA,94,13031,5,5,84327,3A,350302,SRSE,3,Hot-Humid,,South +Burke,GA,94,13033,5,4,24438,3A,347944,SRSE,3,Mixed-Humid,,South +Butts,GA,94,13035,5,4,26887,3A,352295,SRSE,3,Mixed-Humid,,South +Calhoun,GA,94,13037,5,5,5457,3A,344074,SRSE,3,Hot-Humid,,South +Camden,GA,94,13039,5,5,58118,2A,1671316,SRSE,2,Hot-Humid,,South +Candler,GA,94,13043,5,5,11059,3A,342852,SRSE,3,Hot-Humid,,South +Carroll,GA,94,13045,5,4,127098,3A,326650,SRSE,3,Mixed-Humid,,South +Catoosa,GA,94,13047,5,4,68910,4A,353230,SRSE,4,Mixed-Humid,,South +Charlton,GA,94,13049,5,5,12934,2A,357747,SRSE,2,Hot-Humid,,South +Chatham,GA,94,13051,5,5,303655,2A,1694477,SRSE,2,Hot-Humid,,South +Chattahoochee,GA,94,13053,5,4,8661,3A,351012,SRSE,3,Hot-Humid,,South +Chattooga,GA,94,13055,5,4,25222,4A,352213,SRSE,4,Mixed-Humid,,South +Cherokee,GA,94,13057,5,4,286602,3A,1685718,SRSE,3,Mixed-Humid,,South +Clarke,GA,94,13059,5,4,129933,3A,1672699,SRSE,3,Mixed-Humid,,South +Clay,GA,94,13061,5,5,2853,3A,344805,SRSE,3,Hot-Humid,,South +Clayton,GA,94,13063,5,4,298300,3A,1672399,SRSE,3,Mixed-Humid,,South +Clinch,GA,94,13065,5,5,6746,2A,351285,SRSE,2,Hot-Humid,,South +Cobb,GA,94,13067,5,4,776743,3A,1686112,SRSE,3,Mixed-Humid,,South +Coffee,GA,94,13069,5,5,43317,3A,347456,SRSE,3,Hot-Humid,,South +Colquitt,GA,94,13071,5,5,46167,2A,343936,SRSE,2,Hot-Humid,,South +Columbia,GA,94,13073,5,4,165162,3A,348865,SRSE,3,Mixed-Humid,,South +Cook,GA,94,13075,5,5,17714,2A,343878,SRSE,2,Hot-Humid,,South +Coweta,GA,94,13077,5,4,155892,3A,326666,SRSE,3,Mixed-Humid,,South +Crawford,GA,94,13079,5,5,12277,3A,342918,SRSE,3,Mixed-Humid,,South +Crisp,GA,94,13081,5,5,19631,3A,351607,SRSE,3,Hot-Humid,,South +Dade,GA,94,13083,5,4,16165,4A,347465,SRCE,4,Mixed-Humid,,South +Dawson,GA,94,13085,5,4,31732,4A,351312,SRSE,4,Mixed-Humid,,South +Decatur,GA,94,13087,5,5,29087,2A,352234,SRSE,2,Hot-Humid,,South +DeKalb,GA,94,13089,5,4,762992,3A,1687424,SRSE,3,Mixed-Humid,,South +Dodge,GA,94,13091,5,5,19776,3A,348116,SRSE,3,Hot-Humid,,South +Dooly,GA,94,13093,5,5,10981,3A,351608,SRSE,3,Hot-Humid,,South +Dougherty,GA,94,13095,5,5,82645,3A,351259,SRSE,3,Hot-Humid,,South +Douglas,GA,94,13097,5,4,149160,3A,1686467,SRSE,3,Mixed-Humid,,South +Early,GA,94,13099,5,5,10563,3A,345041,SRSE,3,Hot-Humid,,South +Echols,GA,94,13101,5,5,3709,2A,348092,SRSE,2,Hot-Humid,,South +Effingham,GA,94,13103,5,5,71541,2A,350219,SRSE,2,Hot-Humid,,South +Elbert,GA,94,13105,5,4,20013,3A,347828,SRSE,3,Mixed-Humid,,South +Emanuel,GA,94,13107,5,5,23119,3A,347508,SRSE,3,Hot-Humid,,South +Evans,GA,94,13109,5,5,10754,2A,345923,SRSE,2,Hot-Humid,,South +Fannin,GA,94,13111,5,4,25955,4A,351094,SRSE,4,Mixed-Humid,,South +Fayette,GA,94,13113,5,4,123351,3A,1687740,SRSE,3,Mixed-Humid,,South +Floyd,GA,94,13115,5,4,100113,4A,353665,SRSE,4,Mixed-Humid,,South +Forsyth,GA,94,13117,5,4,272887,3A,1673358,SRSE,3,Mixed-Humid,,South +Franklin,GA,94,13119,5,4,24782,4A,349324,SRSE,4,Mixed-Humid,,South +Fulton,GA,94,13121,5,4,1079105,3A,1694833,SRSE,3,Mixed-Humid,,South +Gilmer,GA,94,13123,5,4,32860,4A,351260,SRSE,4,Mixed-Humid,,South +Glascock,GA,94,13125,5,4,2954,3A,345642,SRSE,3,Mixed-Humid,,South +Glynn,GA,94,13127,5,5,86172,2A,1671513,SRSE,2,Hot-Humid,,South +Gordon,GA,94,13129,5,4,59757,4A,356672,SRSE,4,Mixed-Humid,,South +Grady,GA,94,13131,5,5,26066,2A,351261,SRSE,2,Hot-Humid,,South +Greene,GA,94,13133,5,4,20722,3A,348672,SRSE,3,Mixed-Humid,,South +Gwinnett,GA,94,13135,5,4,983526,3A,1688166,SRSE,3,Mixed-Humid,,South +Habersham,GA,94,13137,5,4,48757,4A,351383,SRSE,4,Mixed-Humid,,South +Hall,GA,94,13139,5,4,217267,4A,1686953,SRSE,4,Mixed-Humid,,South +Hancock,GA,94,13141,5,4,8676,3A,348209,SRSE,3,Mixed-Humid,,South +Haralson,GA,94,13143,5,4,32038,3A,350637,SRSE,3,Mixed-Humid,,South +Harris,GA,94,13145,5,4,36654,3A,326700,SRSE,3,Mixed-Humid,,South +Hart,GA,94,13147,5,4,27556,3A,1687995,SRSE,3,Mixed-Humid,,South +Heard,GA,94,13149,5,4,12034,3A,347067,SRSE,3,Mixed-Humid,,South +Henry,GA,94,13151,5,4,254613,3A,1671894,SRSE,3,Mixed-Humid,,South +Houston,GA,94,13153,5,5,171974,3A,1671693,SRSE,3,Hot-Humid,,South +Irwin,GA,94,13155,5,5,9120,3A,352302,SRSE,3,Hot-Humid,,South +Jackson,GA,94,13157,5,4,88615,3A,349570,SRSE,3,Mixed-Humid,,South +Jasper,GA,94,13159,5,5,16455,3A,346144,SRSE,3,Mixed-Humid,,South +Jeff Davis,GA,94,13161,5,5,14906,2A,1687999,SRSE,2,Hot-Humid,,South +Jefferson,GA,94,13163,5,5,15183,3A,345714,SRSE,3,Mixed-Humid,,South +Jenkins,GA,94,13165,5,5,8627,3A,342985,SRSE,3,Hot-Humid,,South +Johnson,GA,94,13167,5,4,9282,3A,346664,SRSE,3,Hot-Humid,,South +Jones,GA,94,13169,5,4,28969,3A,345367,SRSE,3,Mixed-Humid,,South +Lamar,GA,94,13171,5,4,20401,3A,326713,SRSE,3,Mixed-Humid,,South +Lanier,GA,94,13173,5,5,10452,2A,348102,SRSE,2,Hot-Humid,,South +Laurens,GA,94,13175,5,5,49941,3A,346568,SRSE,3,Hot-Humid,,South +Lee,GA,94,13177,5,5,33872,3A,343390,SRSE,3,Hot-Humid,,South +Liberty,GA,94,13179,5,5,69210,2A,357095,SRSE,2,Hot-Humid,,South +Lincoln,GA,94,13181,5,4,7879,3A,1688000,SRSE,3,Mixed-Humid,,South +Long,GA,94,13183,5,5,19594,2A,326719,SRSE,2,Hot-Humid,,South +Lowndes,GA,94,13185,5,5,120712,2A,326720,SRSE,2,Hot-Humid,,South +Lumpkin,GA,94,13187,5,4,35258,4A,357196,SRSE,4,Mixed-Humid,,South +McDuffie,GA,94,13189,5,4,21799,3A,348794,SRSE,3,Mixed-Humid,,South +McIntosh,GA,94,13191,5,5,11501,2A,356886,SRSE,2,Hot-Humid,,South +Macon,GA,94,13193,5,5,11817,3A,346957,SRSE,3,Hot-Humid,,South +Madison,GA,94,13195,5,4,32191,3A,1688004,SRSE,3,Mixed-Humid,,South +Marion,GA,94,13197,5,4,7440,3A,344107,SRSE,3,Hot-Humid,,South +Meriwether,GA,94,13199,5,4,20931,3A,346892,SRSE,3,Mixed-Humid,,South +Miller,GA,94,13201,5,5,5747,2A,344088,SRSE,2,Hot-Humid,,South +Mitchell,GA,94,13205,5,5,21114,2A,343645,SRSE,2,Hot-Humid,,South +Monroe,GA,94,13207,5,4,30625,3A,343073,SRSE,3,Mixed-Humid,,South +Montgomery,GA,94,13209,5,5,8761,3A,352276,SRSE,3,Hot-Humid,,South +Morgan,GA,94,13211,5,4,21460,3A,346008,SRSE,3,Mixed-Humid,,South +Murray,GA,94,13213,5,4,41035,4A,1688005,SRSE,4,Mixed-Humid,,South +Muscogee,GA,94,13215,5,5,201877,3A,357428,SRSE,3,Mixed-Humid,,South +Newton,GA,94,13217,5,4,120135,3A,1673547,SRSE,3,Mixed-Humid,,South +Oconee,GA,94,13219,5,4,44182,3A,356774,SRSE,3,Mixed-Humid,,South +Oglethorpe,GA,94,13221,5,4,15754,3A,351262,SRSE,3,Mixed-Humid,,South +Paulding,GA,94,13223,5,4,183164,3A,349912,SRSE,3,Mixed-Humid,,South +Peach,GA,94,13225,5,5,28805,3A,343153,SRSE,3,Hot-Humid,,South +Pickens,GA,94,13227,5,4,35969,4A,1673011,SRSE,4,Mixed-Humid,,South +Pierce,GA,94,13229,5,5,20425,2A,349086,SRSE,2,Hot-Humid,,South +Pike,GA,94,13231,5,4,20461,3A,346482,SRSE,3,Mixed-Humid,,South +Polk,GA,94,13233,5,4,44223,3A,343585,SRSE,3,Mixed-Humid,,South +Pulaski,GA,94,13235,5,5,10095,3A,347593,SRSE,3,Hot-Humid,,South +Putnam,GA,94,13237,5,5,23129,3A,347246,SRSE,3,Mixed-Humid,,South +Quitman,GA,94,13239,5,5,2280,3A,350547,SRSE,3,Hot-Humid,,South +Rabun,GA,94,13241,5,4,17442,4A,351489,SRSE,4,Mixed-Humid,,South +Randolph,GA,94,13243,5,5,6078,3A,352242,SRSE,3,Hot-Humid,,South +Richmond,GA,94,13245,5,4,205414,3A,358024,SRSE,3,Mixed-Humid,,South +Rockdale,GA,94,13247,5,4,95987,3A,357592,SRSE,3,Mixed-Humid,,South +Schley,GA,94,13249,5,4,4526,3A,344129,SRSE,3,Hot-Humid,,South +Screven,GA,94,13251,5,5,14174,3A,350204,SRSE,3,Hot-Humid,,South +Seminole,GA,94,13253,5,5,9092,2A,351263,SRSE,2,Hot-Humid,,South +Spalding,GA,94,13255,5,4,69946,3A,353055,SRSE,3,Mixed-Humid,,South +Stephens,GA,94,13257,5,4,27228,4A,350028,SRSE,4,Mixed-Humid,,South +Stewart,GA,94,13259,5,5,4674,3A,347360,SRSE,3,Hot-Humid,,South +Sumter,GA,94,13261,5,4,28890,3A,343504,SRSE,3,Hot-Humid,,South +Talbot,GA,94,13263,5,4,5718,3A,326757,SRSE,3,Mixed-Humid,,South +Taliaferro,GA,94,13265,5,4,1609,3A,347654,SRSE,3,Mixed-Humid,,South +Tattnall,GA,94,13267,5,5,24296,2A,347445,SRSE,2,Hot-Humid,,South +Taylor,GA,94,13269,5,5,7758,3A,344156,SRSE,3,Hot-Humid,,South +Telfair,GA,94,13271,5,5,10920,3A,356958,SRSE,3,Hot-Humid,,South +Terrell,GA,94,13273,5,5,8718,3A,352238,SRSE,3,Hot-Humid,,South +Thomas,GA,94,13275,5,5,45649,2A,343835,SRSE,2,Hot-Humid,,South +Tift,GA,94,13277,5,5,41554,3A,344090,SRSE,3,Hot-Humid,,South +Toombs,GA,94,13279,5,5,27040,2A,345220,SRSE,2,Hot-Humid,,South +Towns,GA,94,13281,5,4,13035,4A,351252,SRCE,4,Mixed-Humid,,South +Treutlen,GA,94,13283,5,5,6341,3A,347505,SRSE,3,Hot-Humid,,South +Troup,GA,94,13285,5,4,70742,3A,1673298,SRSE,3,Mixed-Humid,,South +Turner,GA,94,13287,5,5,8909,3A,343238,SRSE,3,Hot-Humid,,South +Twiggs,GA,94,13289,5,5,7691,3A,345456,SRSE,3,Hot-Humid,,South +Union,GA,94,13291,5,4,27124,4A,353193,SRCE,4,Mixed-Humid,,South +Upson,GA,94,13293,5,5,28263,3A,346759,SRSE,3,Mixed-Humid,,South +Walker,GA,94,13295,5,4,69489,4A,354216,SRSE,4,Mixed-Humid,,South +Walton,GA,94,13297,5,4,106702,3A,351264,SRSE,3,Mixed-Humid,,South +Ware,GA,94,13299,5,5,36243,2A,357722,SRSE,2,Hot-Humid,,South +Warren,GA,94,13301,5,4,5106,3A,347777,SRSE,3,Mixed-Humid,,South +Washington,GA,94,13303,5,4,19820,3A,348428,SRSE,3,Mixed-Humid,,South +Wayne,GA,94,13305,5,5,31373,2A,350608,SRSE,2,Hot-Humid,,South +Webster,GA,94,13307,5,5,2337,3A,352287,SRSE,3,Hot-Humid,,South +Wheeler,GA,94,13309,5,5,7081,3A,351278,SRSE,3,Hot-Humid,,South +White,GA,94,13311,5,4,29026,4A,326781,SRSE,4,Mixed-Humid,,South +Whitfield,GA,94,13313,5,4,103687,4A,353513,SRSE,4,Mixed-Humid,,South +Wilcox,GA,94,13315,5,5,8779,3A,345499,SRSE,3,Hot-Humid,,South +Wilkes,GA,94,13317,5,4,9518,3A,351265,SRSE,3,Mixed-Humid,,South +Wilkinson,GA,94,13319,5,5,8725,3A,346824,SRSE,3,Mixed-Humid,,South +Worth,GA,94,13321,5,5,20273,3A,343365,SRSE,3,Hot-Humid,,South +Hawaii County,HI,,15001,9,5,207615,1A,,,1,Hot-Humid,,West +Honolulu County,HI,,15003,9,5,989408,1A,,,1,Hot-Humid,,West +Kalawao County,HI,,15005,9,5,81,1A,,,1,Hot-Humid,,West +Kauai County,HI,,15007,9,5,73851,1A,,,1,Hot-Humid,,West +Maui County,HI,,15009,9,5,164183,1A,,,1,Hot-Humid,,West +Ada,ID,15,16001,8,2,524673,5B,395066,BASN,5,Cold,,West +Adams,ID,15,16003,8,1,4903,6B,395067,BASN,6,Cold,,West +Bannock,ID,16,16005,8,1,90400,6B,395091,BASN,6,Cold,,West +Bear Lake,ID,16,16007,8,1,6766,6B,395090,BASN,6,Cold,,West +Benewah,ID,14,16009,8,2,10369,5B,395190,NWPP,5,Cold,,West +Bingham,ID,16,16011,8,1,50395,6B,400593,BASN,6,Cold,,West +Blaine,ID,15,16013,8,1,25041,6B,395696,BASN,6,Cold,,West +Boise,ID,15,16015,8,1,8517,6B,395157,BASN,6,Cold,,West +Bonner,ID,14,16017,8,1,52547,6B,395158,NWPP,6,Cold,,West +Bonneville,ID,16,16019,8,1,131366,6B,395407,BASN,6,Cold,,West +Boundary,ID,14,16021,8,1,13557,6B,395159,NWPP,6,Cold,,West +Butte,ID,15,16023,8,1,2758,6B,401703,BASN,6,Cold,,West +Camas,ID,15,16025,8,1,1232,6B,399408,BASN,6,Cold,,West +Canyon,ID,15,16027,8,2,257674,5B,399406,BASN,5,Cold,,West +Caribou,ID,16,16029,8,1,7219,6B,395406,BASN,6,Cold,,West +Cassia,ID,16,16031,8,2,25696,5B,395698,BASN,5,Cold,,West +Clark,ID,16,16033,8,1,801,6B,399755,BASN,6,Cold,,West +Clearwater,ID,15,16035,8,2,9214,5B,395697,NWPP,5,Cold,,West +Custer,ID,15,16037,8,1,4523,6B,399758,BASN,6,Cold,,West +Elmore,ID,15,16039,8,2,29724,5B,400252,BASN,5,Cold,,West +Franklin,ID,16,16041,8,1,15494,6B,395585,BASN,6,Cold,,West +Fremont,ID,16,16043,8,1,14196,6B,395408,BASN,6,Cold,,West +Gem,ID,15,16045,8,2,21071,5B,395442,BASN,5,Cold,,West +Gooding,ID,15,16047,8,2,16061,5B,395441,BASN,5,Cold,,West +Idaho,ID,15,16049,8,1,17890,5B,395699,BASN,5,Cold,,West +Jefferson,ID,16,16051,8,1,34198,6B,399751,BASN,6,Cold,,West +Jerome,ID,15,16053,8,2,25479,5B,395662,BASN,5,Cold,,West +Kootenai,ID,14,16055,8,2,185010,5B,395661,NWPP,5,Cold,,West +Latah,ID,14,16057,8,2,41301,5B,395613,NWPP,5,Cold,,West +Lemhi,ID,15,16059,8,1,8441,6B,399754,BASN,6,Cold,,West +Lewis,ID,14,16061,8,1,3739,5B,395622,NWPP,5,Cold,,West +Lincoln,ID,15,16063,8,1,5450,5B,395624,BASN,5,Cold,,West +Madison,ID,16,16065,8,1,54547,6B,394803,BASN,6,Cold,,West +Minidoka,ID,15,16067,8,1,22480,5B,394807,BASN,5,Cold,,West +Nez Perce,ID,14,16069,8,2,42987,5B,399394,NWPP,5,Cold,,West +Oneida,ID,16,16071,8,1,4953,6B,399759,BASN,6,Cold,,West +Owyhee,ID,15,16073,8,2,12722,5B,399760,BASN,5,Cold,,West +Payette,ID,15,16075,8,2,27279,5B,394896,BASN,5,Cold,,West +Power,ID,16,16077,8,1,8253,5B,394951,BASN,5,Cold,,West +Shoshone,ID,15,16079,8,2,14026,5B,1702379,NWPP,5,Cold,,West +Teton,ID,16,16081,8,1,12549,6B,399297,BASN,6,Cold,,West +Twin Falls,ID,16,16083,8,2,95156,5B,399334,BASN,5,Cold,,West +Valley,ID,15,16085,8,1,12644,6B,399756,BASN,6,Cold,,West +Washington,ID,15,16087,8,2,11425,5B,399757,BASN,5,Cold,,West +Adams,IL,81,17001,3,2,64441,5A,424202,MISC,5,Cold,,Midwest +Alexander,IL,81,17003,3,3,4695,4A,424203,MISC,4,Mixed-Humid,,Midwest +Bond,IL,81,17005,3,3,16450,4A,424204,MISC,4,Mixed-Humid,,Midwest +Boone,IL,80,17007,3,2,53202,5A,424205,PJMC,5,Cold,,Midwest +Brown,IL,81,17009,3,2,6294,5A,424206,MISC,5,Cold,,Midwest +Bureau,IL,81,17011,3,2,32729,5A,424207,MISC,5,Cold,,Midwest +Calhoun,IL,81,17013,3,3,4317,5A,424208,MISC,5,Cold,,Midwest +Carroll,IL,80,17015,3,2,15526,5A,424209,PJMC,5,Cold,,Midwest +Cass,IL,81,17017,3,2,12596,5A,424210,MISC,5,Cold,,Midwest +Champaign,IL,83,17019,3,2,205644,5A,424211,MISC,5,Cold,,Midwest +Christian,IL,83,17021,3,3,33228,4A,424212,MISC,4,Mixed-Humid,,Midwest +Clark,IL,83,17023,3,2,15088,5A,424213,MISC,5,Cold,,Midwest +Clay,IL,83,17025,3,3,12999,4A,424214,MISC,4,Mixed-Humid,,Midwest +Clinton,IL,81,17027,3,3,36785,4A,424215,MISC,4,Mixed-Humid,,Midwest +Coles,IL,83,17029,3,2,46060,5A,424216,MISC,5,Cold,,Midwest +Cook,IL,80,17031,3,2,5087072,5A,1784766,PJMC,5,Cold,,Midwest +Crawford,IL,83,17033,3,3,18300,4A,424218,MISC,4,Mixed-Humid,,Midwest +Cumberland,IL,83,17035,3,2,10261,5A,424219,MISC,5,Cold,,Midwest +DeKalb,IL,80,17037,3,2,100288,5A,422190,PJMC,5,Cold,,Midwest +De Witt,IL,83,17039,3,2,15365,5A,426598,MISC,5,Cold,,Midwest +Douglas,IL,83,17041,3,2,19629,5A,424222,MISC,5,Cold,,Midwest +DuPage,IL,80,17043,3,2,921213,5A,422191,PJMC,5,Cold,,Midwest +Edgar,IL,83,17045,3,2,16334,5A,424224,MISC,5,Cold,,Midwest +Edwards,IL,83,17047,3,3,5968,4A,424225,MISC,4,Mixed-Humid,,Midwest +Effingham,IL,83,17049,3,3,34331,4A,424226,MISC,4,Mixed-Humid,,Midwest +Fayette,IL,81,17051,3,3,21164,4A,424227,MISC,4,Mixed-Humid,,Midwest +Ford,IL,83,17053,3,2,13250,5A,424228,MISC,5,Cold,,Midwest +Franklin,IL,81,17055,3,3,37138,4A,424229,MISC,4,Mixed-Humid,,Midwest +Fulton,IL,81,17057,3,2,32541,5A,424230,MISC,5,Cold,,Midwest +Gallatin,IL,81,17059,3,3,4670,4A,424231,MISC,4,Mixed-Humid,,Midwest +Greene,IL,81,17061,3,3,11543,5A,424232,MISC,5,Cold,,Midwest +Grundy,IL,80,17063,3,2,53578,5A,424233,MISC,5,Cold,,Midwest +Hamilton,IL,81,17065,3,3,7911,4A,424234,MISC,4,Mixed-Humid,,Midwest +Hancock,IL,81,17067,3,2,17186,5A,424235,MISC,5,Cold,,Midwest +Hardin,IL,81,17069,3,3,3569,4A,424236,MISC,4,Mixed-Humid,,Midwest +Henderson,IL,81,17071,3,2,6088,5A,424237,MISC,5,Cold,,Midwest +Henry,IL,81,17073,3,2,48448,5A,424238,MISC,5,Cold,,Midwest +Iroquois,IL,83,17075,3,2,26136,5A,424239,MISC,5,Cold,,Midwest +Jackson,IL,81,17077,3,3,52141,4A,424240,MISC,4,Mixed-Humid,,Midwest +Jasper,IL,83,17079,3,3,9144,4A,424241,MISC,4,Mixed-Humid,,Midwest +Jefferson,IL,81,17081,3,3,36320,4A,424242,MISC,4,Mixed-Humid,,Midwest +Jersey,IL,81,17083,3,3,21091,5A,424243,MISC,5,Cold,,Midwest +Jo Daviess,IL,80,17085,3,2,21756,5A,424244,MISW,5,Cold,,Midwest +Johnson,IL,81,17087,3,3,13326,4A,424245,MISC,4,Mixed-Humid,,Midwest +Kane,IL,80,17089,3,2,514982,5A,424246,PJMC,5,Cold,,Midwest +Kankakee,IL,80,17091,3,2,105940,5A,424247,MISC,5,Cold,,Midwest +Kendall,IL,80,17093,3,2,139976,5A,424248,MISC,5,Cold,,Midwest +Knox,IL,81,17095,3,2,48411,5A,424249,MISC,5,Cold,,Midwest +Lake,IL,80,17097,3,2,708760,5A,1784796,PJMC,5,Cold,,Midwest +LaSalle,IL,80,17099,3,2,108309,5A,422247,MISC,5,Cold,,Midwest +Lawrence,IL,83,17101,3,3,14813,4A,424252,MISC,4,Mixed-Humid,,Midwest +Lee,IL,80,17103,3,2,33654,5A,424253,PJMC,5,Cold,,Midwest +Livingston,IL,80,17105,3,2,35320,5A,424254,MISC,5,Cold,,Midwest +Logan,IL,82,17107,3,2,27590,5A,424255,MISC,5,Cold,,Midwest +McDonough,IL,81,17109,3,2,26839,5A,1784729,MISC,5,Cold,,Midwest +McHenry,IL,80,17111,3,2,312800,5A,1784815,PJMC,5,Cold,,Midwest +McLean,IL,83,17113,3,2,170441,5A,1784833,MISC,5,Cold,,Midwest +Macon,IL,83,17115,3,2,100591,5A,424256,MISC,5,Cold,,Midwest +Macoupin,IL,81,17117,3,3,44018,4A,424257,MISC,4,Mixed-Humid,,Midwest +Madison,IL,81,17119,3,3,262752,4A,424258,MISC,4,Mixed-Humid,,Midwest +Marion,IL,81,17121,3,3,36673,4A,424259,MISC,4,Mixed-Humid,,Midwest +Marshall,IL,82,17123,3,2,11683,5A,424260,MISC,5,Cold,,Midwest +Mason,IL,81,17125,3,2,12523,5A,424261,MISC,5,Cold,,Midwest +Massac,IL,81,17127,3,3,13661,4A,1784730,MISC,4,Mixed-Humid,,Midwest +Menard,IL,81,17129,3,2,11954,5A,424266,MISC,5,Cold,,Midwest +Mercer,IL,81,17131,3,2,15487,5A,1784750,MISC,5,Cold,,Midwest +Monroe,IL,81,17133,3,3,34957,4A,1784865,MISC,4,Mixed-Humid,,Midwest +Montgomery,IL,81,17135,3,3,27663,4A,1784866,MISC,4,Mixed-Humid,,Midwest +Morgan,IL,81,17137,3,2,32140,5A,424270,MISC,5,Cold,,Midwest +Moultrie,IL,83,17139,3,2,14342,5A,1784885,MISC,5,Cold,,Midwest +Ogle,IL,80,17141,3,2,51265,5A,1784894,PJMC,5,Cold,,Midwest +Peoria,IL,82,17143,3,2,177513,5A,1784920,MISC,5,Cold,,Midwest +Perry,IL,81,17145,3,3,20503,4A,1784940,MISC,4,Mixed-Humid,,Midwest +Piatt,IL,83,17147,3,2,16714,5A,424275,MISC,5,Cold,,Midwest +Pike,IL,81,17149,3,2,14342,5A,1784941,MISC,5,Cold,,Midwest +Pope,IL,81,17151,3,3,3707,4A,424277,MISC,4,Mixed-Humid,,Midwest +Pulaski,IL,81,17153,3,3,4911,4A,1784966,MISC,4,Mixed-Humid,,Midwest +Putnam,IL,81,17155,3,2,5561,5A,424279,MISC,5,Cold,,Midwest +Randolph,IL,81,17157,3,3,29815,4A,1784967,MISC,4,Mixed-Humid,,Midwest +Richland,IL,83,17159,3,3,15488,4A,424281,MISC,4,Mixed-Humid,,Midwest +Rock Island,IL,81,17161,3,2,141236,5A,424282,MISC,5,Cold,,Midwest +St. Clair,IL,81,17163,3,3,251018,4A,1784987,MISC,4,Mixed-Humid,,Midwest +Saline,IL,81,17165,3,3,22873,4A,424283,MISC,4,Mixed-Humid,,Midwest +Sangamon,IL,82,17167,3,2,193491,5A,1785010,MISC,5,Cold,,Midwest +Schuyler,IL,81,17169,3,2,6733,5A,1785037,MISC,5,Cold,,Midwest +Scott,IL,81,17171,3,2,4710,5A,424286,MISC,5,Cold,,Midwest +Shelby,IL,83,17173,3,3,20568,4A,1785051,MISC,4,Mixed-Humid,,Midwest +Stark,IL,81,17175,3,2,5218,5A,424288,MISC,5,Cold,,Midwest +Stephenson,IL,80,17177,3,2,43105,5A,1785076,PJMC,5,Cold,,Midwest +Tazewell,IL,82,17179,3,2,129541,5A,1785094,MISC,5,Cold,,Midwest +Union,IL,81,17181,3,3,16667,4A,1785113,MISC,4,Mixed-Humid,,Midwest +Vermilion,IL,83,17183,3,2,71652,5A,1785114,MISC,5,Cold,,Midwest +Wabash,IL,83,17185,3,3,10942,4A,424293,MISC,4,Mixed-Humid,,Midwest +Warren,IL,81,17187,3,2,16185,5A,1785134,MISC,5,Cold,,Midwest +Washington,IL,81,17189,3,3,13536,4A,1785150,MISC,4,Mixed-Humid,,Midwest +Wayne,IL,81,17191,3,3,15761,4A,424296,MISC,4,Mixed-Humid,,Midwest +White,IL,81,17193,3,3,13401,4A,424297,MISC,4,Mixed-Humid,,Midwest +Whiteside,IL,80,17195,3,2,54498,5A,1785167,PJMC,5,Cold,,Midwest +Will,IL,80,17197,3,2,700728,5A,1785190,PJMC,5,Cold,,Midwest +Williamson,IL,81,17199,3,3,66706,4A,1785215,MISC,4,Mixed-Humid,,Midwest +Winnebago,IL,80,17201,3,2,280922,5A,1785216,PJMC,5,Cold,,Midwest +Woodford,IL,82,17203,3,2,38285,5A,1785231,MISC,5,Cold,,Midwest +Adams,IN,105,18001,3,2,36288,5A,450401,PJMW,5,Cold,,Midwest +Allen,IN,105,18003,3,2,394545,5A,450402,PJMW,5,Cold,,Midwest +Bartholomew,IN,107,18005,3,3,84003,5A,451683,MISC,5,Cold,,Midwest +Benton,IN,105,18007,3,2,8729,5A,450403,MISC,5,Cold,,Midwest +Blackford,IN,105,18009,3,2,11893,5A,450404,PJMW,5,Cold,,Midwest +Boone,IN,105,18011,3,2,76120,5A,450405,MISC,5,Cold,,Midwest +Brown,IN,107,18013,3,3,15653,4A,451684,MISC,4,Mixed-Humid,,Midwest +Carroll,IN,105,18015,3,2,20525,5A,450406,PJMW,5,Cold,,Midwest +Cass,IN,105,18017,3,2,37666,5A,450339,MISC,5,Cold,,Midwest +Clark,IN,107,18019,3,3,125467,4A,450340,MISC,4,Mixed-Humid,,Midwest +Clay,IN,107,18021,3,2,26460,5A,450341,MISC,5,Cold,,Midwest +Clinton,IN,105,18023,3,2,32730,5A,450342,MISC,5,Cold,,Midwest +Crawford,IN,107,18025,3,3,10438,4A,451674,MISC,4,Mixed-Humid,,Midwest +Daviess,IN,107,18027,3,3,33656,4A,450343,MISC,4,Mixed-Humid,,Midwest +Dearborn,IN,107,18029,3,3,51215,4A,450344,MISC,4,Mixed-Humid,,Midwest +Decatur,IN,107,18031,3,2,26399,5A,450345,MISC,5,Cold,,Midwest +DeKalb,IN,105,18033,3,2,44198,5A,450346,PJMW,5,Cold,,Midwest +Delaware,IN,105,18035,3,2,112321,5A,450347,PJMW,5,Cold,,Midwest +Dubois,IN,107,18037,3,3,43546,4A,451675,MISC,4,Mixed-Humid,,Midwest +Elkhart,IN,105,18039,3,2,206409,5A,450348,PJMW,5,Cold,,Midwest +Fayette,IN,107,18041,3,2,23362,5A,450349,MISC,5,Cold,,Midwest +Floyd,IN,107,18043,3,3,80809,4A,450350,MISC,4,Mixed-Humid,,Midwest +Fountain,IN,105,18045,3,2,16731,5A,450351,MISC,5,Cold,,Midwest +Franklin,IN,107,18047,3,2,23096,5A,450352,MISC,5,Cold,,Midwest +Fulton,IN,105,18049,3,2,20358,5A,450353,MISC,5,Cold,,Midwest +Gibson,IN,107,18051,3,3,32904,4A,450354,MISC,4,Mixed-Humid,,Midwest +Grant,IN,105,18053,3,2,66200,5A,450355,PJMW,5,Cold,,Midwest +Greene,IN,107,18055,3,3,31196,4A,451676,MISC,4,Mixed-Humid,,Midwest +Hamilton,IN,106,18057,3,2,371645,5A,450356,PJMW,5,Cold,,Midwest +Hancock,IN,105,18059,3,2,86166,5A,450357,MISC,5,Cold,,Midwest +Harrison,IN,107,18061,3,3,40006,4A,451677,MISC,4,Mixed-Humid,,Midwest +Hendricks,IN,105,18063,3,2,186387,5A,450358,MISC,5,Cold,,Midwest +Henry,IN,107,18065,3,2,48929,5A,450359,PJMW,5,Cold,,Midwest +Howard,IN,105,18067,3,2,83831,5A,450360,PJMW,5,Cold,,Midwest +Huntington,IN,105,18069,3,2,36781,5A,450361,PJMW,5,Cold,,Midwest +Jackson,IN,107,18071,3,3,46460,4A,451678,MISC,4,Mixed-Humid,,Midwest +Jasper,IN,105,18073,3,2,33535,5A,450494,MISC,5,Cold,,Midwest +Jay,IN,105,18075,3,2,20032,5A,450362,PJMW,5,Cold,,Midwest +Jefferson,IN,107,18077,3,3,33056,4A,450363,MISC,4,Mixed-Humid,,Midwest +Jennings,IN,107,18079,3,3,27622,4A,450364,MISC,4,Mixed-Humid,,Midwest +Johnson,IN,107,18081,3,2,167819,5A,450365,MISC,5,Cold,,Midwest +Knox,IN,107,18083,3,3,36070,4A,450366,MISC,4,Mixed-Humid,,Midwest +Kosciusko,IN,105,18085,3,2,80364,5A,450367,PJMW,5,Cold,,Midwest +LaGrange,IN,105,18087,3,2,40907,5A,450368,PJMW,5,Cold,,Midwest +Lake,IN,105,18089,3,2,500598,5A,450495,MISC,5,Cold,,Midwest +LaPorte,IN,105,18091,3,2,111706,5A,450507,PJMW,5,Cold,,Midwest +Lawrence,IN,107,18093,3,3,45084,4A,451703,MISC,4,Mixed-Humid,,Midwest +Madison,IN,105,18095,3,2,132504,5A,450370,PJMW,5,Cold,,Midwest +Marion,IN,106,18097,3,2,968460,5A,450371,MISC,5,Cold,,Midwest +Marshall,IN,105,18099,3,2,46352,5A,450372,PJMW,5,Cold,,Midwest +Martin,IN,107,18101,3,3,9897,4A,451679,MISC,4,Mixed-Humid,,Midwest +Miami,IN,105,18103,3,2,35402,5A,450373,PJMW,5,Cold,,Midwest +Monroe,IN,107,18105,3,3,139342,4A,451680,MISC,4,Mixed-Humid,,Midwest +Montgomery,IN,105,18107,3,2,38573,5A,450374,PJMW,5,Cold,,Midwest +Morgan,IN,107,18109,3,2,73227,5A,450375,MISC,5,Cold,,Midwest +Newton,IN,105,18111,3,2,13960,5A,450376,MISC,5,Cold,,Midwest +Noble,IN,105,18113,3,2,47430,5A,450377,PJMW,5,Cold,,Midwest +Ohio,IN,107,18115,3,3,6004,4A,450378,MISC,4,Mixed-Humid,,Midwest +Orange,IN,107,18117,3,3,19638,4A,451681,MISC,4,Mixed-Humid,,Midwest +Owen,IN,107,18119,3,2,21532,5A,450379,MISC,5,Cold,,Midwest +Parke,IN,105,18121,3,2,16484,5A,450380,MISC,5,Cold,,Midwest +Perry,IN,107,18123,3,3,19209,4A,451682,MISC,4,Mixed-Humid,,Midwest +Pike,IN,107,18125,3,3,12106,4A,450381,MISC,4,Mixed-Humid,,Midwest +Porter,IN,105,18127,3,2,175335,5A,450382,MISC,5,Cold,,Midwest +Posey,IN,107,18129,3,3,25040,4A,450383,MISC,4,Mixed-Humid,,Midwest +Pulaski,IN,105,18131,3,2,12385,5A,446852,MISC,5,Cold,,Midwest +Putnam,IN,105,18133,3,2,37567,5A,450384,MISC,5,Cold,,Midwest +Randolph,IN,105,18135,3,2,24216,5A,446853,PJMW,5,Cold,,Midwest +Ripley,IN,107,18137,3,3,29227,4A,450385,MISC,4,Mixed-Humid,,Midwest +Rush,IN,107,18139,3,2,16847,5A,446854,MISC,5,Cold,,Midwest +St. Joseph,IN,105,18141,3,2,272848,5A,452855,PJMW,5,Cold,,Midwest +Scott,IN,107,18143,3,3,24657,4A,450386,MISC,4,Mixed-Humid,,Midwest +Shelby,IN,107,18145,3,2,45231,5A,450387,MISC,5,Cold,,Midwest +Spencer,IN,107,18147,3,3,19910,4A,450388,MISC,4,Mixed-Humid,,Midwest +Starke,IN,105,18149,3,2,23206,5A,450389,MISC,5,Cold,,Midwest +Steuben,IN,105,18151,3,2,34917,5A,450390,PJMW,5,Cold,,Midwest +Sullivan,IN,107,18153,3,3,20757,4A,450391,MISC,4,Mixed-Humid,,Midwest +Switzerland,IN,107,18155,3,3,10019,4A,450392,MISC,4,Mixed-Humid,,Midwest +Tippecanoe,IN,105,18157,3,2,188792,5A,450393,MISC,5,Cold,,Midwest +Tipton,IN,105,18159,3,2,15256,5A,450394,PJMW,5,Cold,,Midwest +Union,IN,107,18161,3,2,6973,5A,450395,MISC,5,Cold,,Midwest +Vanderburgh,IN,107,18163,3,3,179810,4A,450396,MISC,4,Mixed-Humid,,Midwest +Vermillion,IN,105,18165,3,2,15417,5A,450397,MISC,5,Cold,,Midwest +Vigo,IN,105,18167,3,2,106153,5A,450398,MISC,5,Cold,,Midwest +Wabash,IN,105,18169,3,2,30670,5A,450399,PJMW,5,Cold,,Midwest +Warren,IN,105,18171,3,2,8518,5A,450400,MISC,5,Cold,,Midwest +Warrick,IN,107,18173,3,3,65867,4A,450335,MISC,4,Mixed-Humid,,Midwest +Washington,IN,107,18175,3,3,28205,4A,451665,MISC,4,Mixed-Humid,,Midwest +Wayne,IN,107,18177,3,2,66127,5A,450336,MISC,5,Cold,,Midwest +Wells,IN,105,18179,3,2,28555,5A,450337,PJMW,5,Cold,,Midwest +White,IN,105,18181,3,2,24917,5A,450338,MISC,5,Cold,,Midwest +Whitley,IN,105,18183,3,2,34742,5A,450369,PJMW,5,Cold,,Midwest +Adair,IA,70,19001,4,2,7389,5A,465190,SPPN,5,Cold,,Midwest +Adams,IA,70,19003,4,2,3544,5A,465191,MISW,5,Cold,,Midwest +Allamakee,IA,69,19005,4,1,14074,6A,465192,MISW,6,Cold,,Midwest +Appanoose,IA,70,19007,4,2,12119,5A,465193,MISW,5,Cold,,Midwest +Audubon,IA,45,19009,4,2,5534,5A,465194,SPPN,5,Cold,,Midwest +Benton,IA,70,19011,4,2,25796,5A,465195,MISW,5,Cold,,Midwest +Black Hawk,IA,69,19013,4,1,130471,6A,465196,MISW,6,Cold,,Midwest +Boone,IA,70,19015,4,2,26590,5A,465197,MISW,5,Cold,,Midwest +Bremer,IA,69,19017,4,1,25307,6A,465198,MISW,6,Cold,,Midwest +Buchanan,IA,69,19019,4,1,20691,6A,465199,MISW,6,Cold,,Midwest +Buena Vista,IA,45,19021,4,1,20567,6A,465200,SPPN,6,Cold,,Midwest +Butler,IA,69,19023,4,1,14172,6A,465201,MISW,6,Cold,,Midwest +Calhoun,IA,45,19025,4,1,9763,6A,465202,MISW,6,Cold,,Midwest +Carroll,IA,45,19027,4,2,20522,5A,465203,SPPN,5,Cold,,Midwest +Cass,IA,70,19029,4,2,13130,5A,465204,SPPN,5,Cold,,Midwest +Cedar,IA,70,19031,4,2,18302,5A,465205,MISW,5,Cold,,Midwest +Cerro Gordo,IA,45,19033,4,1,42406,6A,465206,MISW,6,Cold,,Midwest +Cherokee,IA,45,19035,4,1,11605,6A,465207,SPPN,6,Cold,,Midwest +Chickasaw,IA,69,19037,4,1,11658,6A,465208,MISW,6,Cold,,Midwest +Clarke,IA,70,19039,4,2,9588,5A,465209,MISW,5,Cold,,Midwest +Clay,IA,45,19041,4,1,16511,6A,465625,SPPN,6,Cold,,Midwest +Clayton,IA,69,19043,4,1,16969,6A,465210,MISW,6,Cold,,Midwest +Clinton,IA,70,19045,4,2,46158,5A,465211,MISW,5,Cold,,Midwest +Crawford,IA,45,19047,4,2,16013,5A,465212,SPPN,6,Cold,,Midwest +Dallas,IA,70,19049,4,2,111092,5A,465213,MISW,5,Cold,,Midwest +Davis,IA,70,19051,4,2,9169,5A,465214,MISW,5,Cold,,Midwest +Decatur,IA,70,19053,4,2,7665,5A,465215,MISW,5,Cold,,Midwest +Delaware,IA,70,19055,4,1,17600,6A,465216,MISW,6,Cold,,Midwest +Des Moines,IA,70,19057,4,2,38253,5A,465217,MISW,5,Cold,,Midwest +Dickinson,IA,45,19059,4,1,18056,6A,465218,SPPN,6,Cold,,Midwest +Dubuque,IA,70,19061,4,2,98887,5A,465219,MISW,5,Cold,,Midwest +Emmet,IA,45,19063,4,1,9229,6A,465220,SPPN,6,Cold,,Midwest +Fayette,IA,69,19065,4,1,19210,6A,465221,MISW,6,Cold,,Midwest +Floyd,IA,69,19067,4,1,15326,6A,465222,MISW,6,Cold,,Midwest +Franklin,IA,45,19069,4,1,9875,6A,465223,MISW,6,Cold,,Midwest +Fremont,IA,45,19071,4,2,6458,5A,465224,MISW,5,Cold,,Midwest +Greene,IA,70,19073,4,2,8584,5A,465225,MISW,5,Cold,,Midwest +Grundy,IA,69,19075,4,1,12384,6A,465226,MISW,6,Cold,,Midwest +Guthrie,IA,70,19077,4,2,10722,5A,465227,SPPN,5,Cold,,Midwest +Hamilton,IA,70,19079,4,1,14729,6A,465228,MISW,6,Cold,,Midwest +Hancock,IA,45,19081,4,1,10615,6A,465229,MISW,6,Cold,,Midwest +Hardin,IA,70,19083,4,1,16463,6A,465230,MISW,6,Cold,,Midwest +Harrison,IA,45,19085,4,2,14670,5A,465231,SPPN,5,Cold,,Midwest +Henry,IA,70,19087,4,2,19547,5A,465232,MISW,5,Cold,,Midwest +Howard,IA,69,19089,4,1,9376,6A,465233,MISW,6,Cold,,Midwest +Humboldt,IA,45,19091,4,1,9500,6A,465234,MISW,6,Cold,,Midwest +Ida,IA,45,19093,4,1,6833,6A,465235,SPPN,6,Cold,,Midwest +Iowa,IA,70,19095,4,2,16381,5A,465236,MISW,5,Cold,,Midwest +Jackson,IA,70,19097,4,2,19342,5A,465237,MISW,5,Cold,,Midwest +Jasper,IA,70,19099,4,2,37919,5A,465238,MISW,5,Cold,,Midwest +Jefferson,IA,70,19101,4,2,15440,5A,465239,MISW,5,Cold,,Midwest +Johnson,IA,70,19103,4,2,157528,5A,465240,MISW,5,Cold,,Midwest +Jones,IA,70,19105,4,2,20900,5A,465241,MISW,5,Cold,,Midwest +Keokuk,IA,70,19107,4,2,9914,5A,465242,MISW,5,Cold,,Midwest +Kossuth,IA,45,19109,4,1,14396,6A,465243,SPPN,6,Cold,,Midwest +Lee,IA,70,19111,4,2,32565,5A,465244,MISW,5,Cold,,Midwest +Linn,IA,70,19113,4,2,228972,5A,465245,MISW,5,Cold,,Midwest +Louisa,IA,70,19115,4,2,10513,5A,465246,MISW,5,Cold,,Midwest +Lucas,IA,70,19117,4,2,8747,5A,465247,MISW,5,Cold,,Midwest +Lyon,IA,45,19119,4,1,12324,6A,465248,SPPN,6,Cold,,Midwest +Madison,IA,70,19121,4,2,16971,5A,465249,MISW,5,Cold,,Midwest +Mahaska,IA,70,19123,4,2,21874,5A,465250,MISW,5,Cold,,Midwest +Marion,IA,70,19125,4,2,33770,5A,465251,MISW,5,Cold,,Midwest +Marshall,IA,70,19127,4,2,40014,5A,465252,MISW,5,Cold,,Midwest +Mills,IA,45,19129,4,2,14633,5A,465253,MISW,5,Cold,,Midwest +Mitchell,IA,69,19131,4,1,10518,6A,465254,MISW,6,Cold,,Midwest +Monona,IA,45,19133,4,2,8493,5A,465255,SPPN,5,Cold,,Midwest +Monroe,IA,70,19135,4,2,7504,5A,465256,MISW,5,Cold,,Midwest +Montgomery,IA,45,19137,4,2,10139,5A,465257,MISW,5,Cold,,Midwest +Muscatine,IA,70,19139,4,2,42218,5A,465258,MISW,5,Cold,,Midwest +O'Brien,IA,45,19141,4,1,14012,6A,465259,SPPN,6,Cold,,Midwest +Osceola,IA,45,19143,4,1,5978,6A,465260,SPPN,6,Cold,,Midwest +Page,IA,45,19145,4,2,15014,5A,465261,MISW,5,Cold,,Midwest +Palo Alto,IA,45,19147,4,1,8810,6A,465262,SPPN,6,Cold,,Midwest +Plymouth,IA,45,19149,4,1,25722,6A,465263,SPPN,6,Cold,,Midwest +Pocahontas,IA,45,19151,4,1,6976,6A,465264,SPPN,6,Cold,,Midwest +Polk,IA,70,19153,4,2,505255,5A,465265,MISW,5,Cold,,Midwest +Pottawattamie,IA,45,19155,4,2,93179,5A,465266,SPPN,5,Cold,,Midwest +Poweshiek,IA,70,19157,4,2,18453,5A,465267,MISW,5,Cold,,Midwest +Ringgold,IA,70,19159,4,2,4642,5A,465268,SPPN,5,Cold,,Midwest +Sac,IA,45,19161,4,1,9686,6A,465269,SPPN,6,Cold,,Midwest +Scott,IA,70,19163,4,2,174270,5A,465270,MISW,5,Cold,,Midwest +Shelby,IA,45,19165,4,2,11806,5A,465271,SPPN,5,Cold,,Midwest +Sioux,IA,45,19167,4,1,36246,6A,465272,SPPN,6,Cold,,Midwest +Story,IA,70,19169,4,2,98566,5A,465273,MISW,5,Cold,,Midwest +Tama,IA,70,19171,4,2,16833,5A,465274,MISW,5,Cold,,Midwest +Taylor,IA,45,19173,4,2,5924,5A,465275,SPPN,5,Cold,,Midwest +Union,IA,70,19175,4,2,11906,5A,465276,SPPN,5,Cold,,Midwest +Van Buren,IA,70,19177,4,2,7266,5A,465277,MISW,5,Cold,,Midwest +Wapello,IA,70,19179,4,2,35166,5A,465278,MISW,5,Cold,,Midwest +Warren,IA,70,19181,4,2,55205,5A,465279,MISW,5,Cold,,Midwest +Washington,IA,70,19183,4,2,22560,5A,465280,MISW,5,Cold,,Midwest +Wayne,IA,70,19185,4,2,6557,5A,465281,MISW,5,Cold,,Midwest +Webster,IA,45,19187,4,1,36485,6A,465282,MISW,6,Cold,,Midwest +Winnebago,IA,45,19189,4,1,10571,6A,465283,MISW,6,Cold,,Midwest +Winneshiek,IA,69,19191,4,1,19815,6A,465284,MISW,6,Cold,,Midwest +Woodbury,IA,45,19193,4,1,105951,5A,465285,SPPN,5,Cold,,Midwest +Worth,IA,45,19195,4,1,7297,6A,465286,MISW,6,Cold,,Midwest +Wright,IA,45,19197,4,1,12656,6A,465287,MISW,6,Cold,,Midwest +Allen,KS,53,20001,4,3,12412,4A,484970,SPPC,4,Mixed-Humid,,Midwest +Anderson,KS,53,20003,4,3,7838,4A,484971,SPPC,4,Mixed-Humid,,Midwest +Atchison,KS,53,20005,4,3,16016,4A,484972,SPPC,4,Mixed-Humid,,Midwest +Barber,KS,53,20007,4,3,4071,4A,484973,SPPC,4,Mixed-Humid,,Midwest +Barton,KS,53,20009,4,3,24899,4A,484974,SPPC,4,Mixed-Humid,,Midwest +Bourbon,KS,53,20011,4,3,14408,4A,484975,SPPC,4,Mixed-Humid,,Midwest +Brown,KS,53,20013,4,3,9250,4A,484976,SPPC,4,Mixed-Humid,,Midwest +Butler,KS,53,20015,4,3,68632,4A,484977,SPPC,4,Mixed-Humid,,Midwest +Chase,KS,53,20017,4,3,2579,4A,484978,SPPC,4,Mixed-Humid,,Midwest +Chautauqua,KS,53,20019,4,3,3347,4A,484979,SPPC,4,Mixed-Humid,,Midwest +Cherokee,KS,53,20021,4,3,19054,4A,484980,SPPC,4,Mixed-Humid,,Midwest +Cheyenne,KS,52,20023,4,2,2636,5A,484981,SPPC,5,Cold,,Midwest +Clark,KS,53,20025,4,3,1847,4A,484982,SPPC,4,Mixed-Humid,,Midwest +Clay,KS,53,20027,4,3,8007,4A,484983,SPPC,4,Mixed-Humid,,Midwest +Cloud,KS,53,20029,4,2,8854,5A,484984,SPPC,5,Cold,,Midwest +Coffey,KS,53,20031,4,3,8251,4A,484985,SPPC,4,Mixed-Humid,,Midwest +Comanche,KS,53,20033,4,3,1655,4A,484986,SPPC,4,Mixed-Humid,,Midwest +Cowley,KS,53,20035,4,3,34157,4A,484987,SPPC,4,Mixed-Humid,,Midwest +Crawford,KS,53,20037,4,3,38764,4A,484988,SPPC,4,Mixed-Humid,,Midwest +Decatur,KS,52,20039,4,2,2712,5A,484989,SPPC,5,Cold,,Midwest +Dickinson,KS,53,20041,4,3,18445,4A,484990,SPPC,4,Mixed-Humid,,Midwest +Doniphan,KS,53,20043,4,3,7493,4A,484991,SPPC,4,Mixed-Humid,,Midwest +Douglas,KS,53,20045,4,3,120553,4A,484992,SPPC,4,Mixed-Humid,,Midwest +Edwards,KS,53,20047,4,3,2733,4A,484993,SPPC,4,Mixed-Humid,,Midwest +Elk,KS,53,20049,4,3,2467,4A,484994,SPPC,4,Mixed-Humid,,Midwest +Ellis,KS,53,20051,4,2,28810,5A,484995,SPPC,5,Cold,,Midwest +Ellsworth,KS,53,20053,4,3,6357,4A,484996,SPPC,4,Mixed-Humid,,Midwest +Finney,KS,52,20055,4,3,37466,4A,485326,SPPC,4,Mixed-Humid,,Midwest +Ford,KS,53,20057,4,3,33980,4A,484997,SPPC,4,Mixed-Humid,,Midwest +Franklin,KS,53,20059,4,3,26125,4A,484998,SPPC,4,Mixed-Humid,,Midwest +Geary,KS,53,20061,4,3,35047,4A,484999,SPPC,4,Mixed-Humid,,Midwest +Gove,KS,52,20063,4,2,2735,5A,485000,SPPC,5,Cold,,Midwest +Graham,KS,52,20065,4,2,2376,5A,481811,SPPC,5,Cold,,Midwest +Grant,KS,52,20067,4,3,7147,4A,485099,SPPC,4,Mixed-Humid,,Midwest +Gray,KS,53,20069,4,3,5743,4A,485001,SPPC,4,Mixed-Humid,,Midwest +Greeley,KS,52,20071,4,2,1181,5A,485002,SPPC,5,Cold,,Midwest +Greenwood,KS,53,20073,4,3,5870,4A,485003,SPPC,4,Mixed-Humid,,Midwest +Hamilton,KS,52,20075,4,3,2437,5A,485327,SPPC,5,Cold,,Midwest +Harper,KS,53,20077,4,3,5435,4A,485004,SPPC,4,Mixed-Humid,,Midwest +Harvey,KS,53,20079,4,3,33504,4A,485005,SPPC,4,Mixed-Humid,,Midwest +Haskell,KS,53,20081,4,3,3630,4A,485328,SPPC,4,Mixed-Humid,,Midwest +Hodgeman,KS,53,20083,4,3,1655,4A,485006,SPPC,4,Mixed-Humid,,Midwest +Jackson,KS,53,20085,4,3,13368,4A,485007,SPPC,4,Mixed-Humid,,Midwest +Jefferson,KS,53,20087,4,3,18327,4A,485008,SPPC,4,Mixed-Humid,,Midwest +Jewell,KS,53,20089,4,2,2847,5A,485009,SPPC,5,Cold,,Midwest +Johnson,KS,53,20091,4,3,622237,4A,485010,SPPC,4,Mixed-Humid,,Midwest +Kearny,KS,52,20093,4,3,3823,4A,485011,SPPC,4,Mixed-Humid,,Midwest +Kingman,KS,53,20095,4,3,7066,4A,485012,SPPC,4,Mixed-Humid,,Midwest +Kiowa,KS,53,20097,4,3,2374,4A,485013,SPPC,4,Mixed-Humid,,Midwest +Labette,KS,53,20099,4,3,19728,4A,485014,SPPC,4,Mixed-Humid,,Midwest +Lane,KS,52,20101,4,2,1529,5A,485015,SPPC,5,Cold,,Midwest +Leavenworth,KS,53,20103,4,3,83518,4A,485016,SPPC,4,Mixed-Humid,,Midwest +Lincoln,KS,53,20105,4,3,2920,4A,485017,SPPC,4,Mixed-Humid,,Midwest +Linn,KS,53,20107,4,3,9860,4A,485018,SPPC,4,Mixed-Humid,,Midwest +Logan,KS,52,20109,4,2,2665,5A,485019,SPPC,5,Cold,,Midwest +Lyon,KS,53,20111,4,3,32172,4A,485020,SPPC,4,Mixed-Humid,,Midwest +McPherson,KS,53,20113,4,3,30091,4A,485021,SPPC,4,Mixed-Humid,,Midwest +Marion,KS,53,20115,4,3,11690,4A,485022,SPPC,4,Mixed-Humid,,Midwest +Marshall,KS,53,20117,4,2,9933,4A,485023,SPPC,4,Mixed-Humid,,Midwest +Meade,KS,53,20119,4,3,3911,4A,485024,SPPC,4,Mixed-Humid,,Midwest +Miami,KS,53,20121,4,3,35320,4A,485025,SPPC,4,Mixed-Humid,,Midwest +Mitchell,KS,53,20123,4,2,5719,5A,485026,SPPC,5,Cold,,Midwest +Montgomery,KS,53,20125,4,3,30568,4A,485027,SPPC,4,Mixed-Humid,,Midwest +Morris,KS,53,20127,4,3,5334,4A,485028,SPPC,4,Mixed-Humid,,Midwest +Morton,KS,52,20129,4,3,2580,4A,485135,SPPC,4,Mixed-Humid,,Midwest +Nemaha,KS,53,20131,4,3,10114,4A,485029,SPPC,4,Mixed-Humid,,Midwest +Neosho,KS,53,20133,4,3,15420,4A,485030,SPPC,4,Mixed-Humid,,Midwest +Ness,KS,53,20135,4,2,2618,5A,485031,SPPC,5,Cold,,Midwest +Norton,KS,52,20137,4,2,5330,5A,485032,SPPC,5,Cold,,Midwest +Osage,KS,53,20139,4,3,15824,4A,485033,SPPC,4,Mixed-Humid,,Midwest +Osborne,KS,53,20141,4,2,3427,5A,485034,SPPC,5,Cold,,Midwest +Ottawa,KS,53,20143,4,3,5818,4A,485035,SPPC,4,Mixed-Humid,,Midwest +Pawnee,KS,53,20145,4,3,6126,4A,485036,SPPC,4,Mixed-Humid,,Midwest +Phillips,KS,53,20147,4,2,4761,5A,485037,SPPC,5,Cold,,Midwest +Pottawatomie,KS,53,20149,4,3,26382,4A,485038,SPPC,4,Mixed-Humid,,Midwest +Pratt,KS,53,20151,4,3,9082,4A,485039,SPPC,4,Mixed-Humid,,Midwest +Rawlins,KS,52,20153,4,2,2463,5A,485040,SPPC,5,Cold,,Midwest +Reno,KS,53,20155,4,3,61497,4A,485041,SPPC,4,Mixed-Humid,,Midwest +Republic,KS,53,20157,4,2,4627,5A,485042,SPPC,5,Cold,,Midwest +Rice,KS,53,20159,4,3,9260,4A,485043,SPPC,4,Mixed-Humid,,Midwest +Riley,KS,53,20161,4,3,71402,4A,485044,SPPC,4,Mixed-Humid,,Midwest +Rooks,KS,53,20163,4,2,4778,5A,485045,SPPC,5,Cold,,Midwest +Rush,KS,53,20165,4,3,2830,4A,485358,SPPC,4,Mixed-Humid,,Midwest +Russell,KS,53,20167,4,3,6723,4A,485046,SPPC,4,Mixed-Humid,,Midwest +Saline,KS,53,20169,4,3,53098,4A,485047,SPPC,4,Mixed-Humid,,Midwest +Scott,KS,52,20171,4,2,4922,5A,485048,SPPC,5,Cold,,Midwest +Sedgwick,KS,53,20173,4,3,528469,4A,485049,SPPC,4,Mixed-Humid,,Midwest +Seward,KS,53,20175,4,3,21067,4A,485050,SPPC,4,Mixed-Humid,,Midwest +Shawnee,KS,53,20177,4,3,177746,4A,485051,SPPC,4,Mixed-Humid,,Midwest +Sheridan,KS,52,20179,4,2,2423,5A,485052,SPPC,5,Cold,,Midwest +Sherman,KS,52,20181,4,2,5844,5A,485053,SPPC,5,Cold,,Midwest +Smith,KS,53,20183,4,2,3590,5A,484969,SPPC,5,Cold,,Midwest +Stafford,KS,53,20185,4,3,3909,4A,485054,SPPC,4,Mixed-Humid,,Midwest +Stanton,KS,52,20187,4,3,1901,4A,485055,SPPC,4,Mixed-Humid,,Midwest +Stevens,KS,52,20189,4,3,5077,4A,485056,SPPC,4,Mixed-Humid,,Midwest +Sumner,KS,53,20191,4,3,22334,4A,481812,SPPC,4,Mixed-Humid,,Midwest +Thomas,KS,52,20193,4,2,7865,5A,485057,SPPC,5,Cold,,Midwest +Trego,KS,52,20195,4,2,2731,5A,485058,SPPC,5,Cold,,Midwest +Wabaunsee,KS,53,20197,4,3,7057,4A,485059,SPPC,4,Mixed-Humid,,Midwest +Wallace,KS,52,20199,4,2,1509,5A,485060,SPPC,5,Cold,,Midwest +Washington,KS,53,20201,4,2,5504,4A,485061,SPPC,4,Mixed-Humid,,Midwest +Wichita,KS,52,20203,4,2,2082,5A,485062,SPPC,5,Cold,,Midwest +Wilson,KS,53,20205,4,3,8382,4A,485063,SPPC,4,Mixed-Humid,,Midwest +Woodson,KS,53,20207,4,3,3115,4A,485064,SPPC,4,Mixed-Humid,,Midwest +Wyandotte,KS,53,20209,4,3,165281,4A,485065,SPPC,4,Mixed-Humid,,Midwest +Adair,KY,109,21001,6,3,19264,4A,516847,SRCE,4,Mixed-Humid,,South +Allen,KY,93,21003,6,3,21788,4A,516848,SRCE,4,Mixed-Humid,,South +Anderson,KY,109,21005,6,3,24613,4A,516849,SRCE,4,Mixed-Humid,,South +Ballard,KY,93,21007,6,3,7582,4A,516850,SRCE,4,Mixed-Humid,,South +Barren,KY,109,21009,6,3,45008,4A,516851,SRCE,4,Mixed-Humid,,South +Bath,KY,109,21011,6,3,12975,4A,516852,SRCE,4,Mixed-Humid,,South +Bell,KY,109,21013,6,3,23317,4A,516853,SRCE,4,Mixed-Humid,,South +Boone,KY,109,21015,6,3,140496,4A,516854,SRCE,4,Mixed-Humid,,South +Bourbon,KY,109,21017,6,3,20134,4A,516855,SRCE,4,Mixed-Humid,,South +Boyd,KY,110,21019,6,3,47826,4A,516856,PJMW,4,Mixed-Humid,,South +Boyle,KY,109,21021,6,3,30988,4A,516857,SRCE,4,Mixed-Humid,,South +Bracken,KY,109,21023,6,3,8426,4A,516858,SRCE,4,Mixed-Humid,,South +Breathitt,KY,110,21025,6,3,12953,4A,516859,SRCE,4,Mixed-Humid,,South +Breckinridge,KY,108,21027,6,3,21124,4A,516860,SRCE,4,Mixed-Humid,,South +Bullitt,KY,109,21029,6,3,84863,4A,516861,SRCE,4,Mixed-Humid,,South +Butler,KY,93,21031,6,3,12375,4A,516862,SRCE,4,Mixed-Humid,,South +Caldwell,KY,108,21033,6,3,12551,4A,516863,SRCE,4,Mixed-Humid,,South +Calloway,KY,93,21035,6,3,38280,4A,516864,SRCE,4,Mixed-Humid,,South +Campbell,KY,109,21037,6,3,93702,4A,516865,PJMW,4,Mixed-Humid,,South +Carlisle,KY,93,21039,6,3,4704,4A,516866,SRCE,4,Mixed-Humid,,South +Carroll,KY,109,21041,6,3,10987,4A,516867,SRCE,4,Mixed-Humid,,South +Carter,KY,110,21043,6,3,26366,4A,516868,SRCE,4,Mixed-Humid,,South +Casey,KY,109,21045,6,3,15918,4A,516869,SRCE,4,Mixed-Humid,,South +Christian,KY,93,21047,6,3,72032,4A,516870,SRCE,4,Mixed-Humid,,South +Clark,KY,109,21049,6,3,37304,4A,516871,SRCE,4,Mixed-Humid,,South +Clay,KY,109,21051,6,3,19648,4A,516872,SRCE,4,Mixed-Humid,,South +Clinton,KY,93,21053,6,3,9148,4A,516873,SRCE,4,Mixed-Humid,,South +Crittenden,KY,108,21055,6,3,8974,4A,516874,SRCE,4,Mixed-Humid,,South +Cumberland,KY,93,21057,6,3,6000,4A,516875,SRCE,4,Mixed-Humid,,South +Daviess,KY,108,21059,6,3,103458,4A,516876,SRCE,4,Mixed-Humid,,South +Edmonson,KY,109,21061,6,3,12448,4A,516877,SRCE,4,Mixed-Humid,,South +Elliott,KY,109,21063,6,3,7245,4A,516878,SRCE,4,Mixed-Humid,,South +Estill,KY,109,21065,6,3,13936,4A,516879,SRCE,4,Mixed-Humid,,South +Fayette,KY,109,21067,6,3,320154,4A,516880,SRCE,4,Mixed-Humid,,South +Fleming,KY,109,21069,6,3,15442,4A,516881,SRCE,4,Mixed-Humid,,South +Floyd,KY,110,21071,6,3,34423,4A,516882,SRCE,4,Mixed-Humid,,South +Franklin,KY,109,21073,6,3,51644,4A,516883,SRCE,4,Mixed-Humid,,South +Fulton,KY,93,21075,6,3,6338,4A,516884,SRCE,4,Mixed-Humid,,South +Gallatin,KY,109,21077,6,3,8792,4A,516885,SRCE,4,Mixed-Humid,,South +Garrard,KY,109,21079,6,3,17829,4A,516886,SRCE,4,Mixed-Humid,,South +Grant,KY,109,21081,6,3,25619,4A,516887,SRCE,4,Mixed-Humid,,South +Graves,KY,93,21083,6,3,36461,4A,516888,SRCE,4,Mixed-Humid,,South +Grayson,KY,108,21085,6,3,26825,4A,516889,SRCE,4,Mixed-Humid,,South +Green,KY,109,21087,6,3,11468,4A,516890,SRCE,4,Mixed-Humid,,South +Greenup,KY,109,21089,6,3,35221,4A,516891,SRCE,4,Mixed-Humid,,South +Hancock,KY,108,21091,6,3,8920,4A,516892,SRCE,4,Mixed-Humid,,South +Hardin,KY,109,21093,6,3,112273,4A,516893,SRCE,4,Mixed-Humid,,South +Harlan,KY,109,21095,6,3,25324,4A,516894,SRCE,4,Mixed-Humid,,South +Harrison,KY,109,21097,6,3,19415,4A,516895,SRCE,4,Mixed-Humid,,South +Hart,KY,109,21099,6,3,19724,4A,516896,SRCE,4,Mixed-Humid,,South +Henderson,KY,108,21101,6,3,44119,4A,516897,SRCE,4,Mixed-Humid,,South +Henry,KY,109,21103,6,3,15973,4A,516898,SRCE,4,Mixed-Humid,,South +Hickman,KY,93,21105,6,3,4447,4A,516899,SRCE,4,Mixed-Humid,,South +Hopkins,KY,108,21107,6,3,44929,4A,516900,SRCE,4,Mixed-Humid,,South +Jackson,KY,109,21109,6,3,13104,4A,516901,SRCE,4,Mixed-Humid,,South +Jefferson,KY,109,21111,6,3,772144,4A,516902,SRCE,4,Mixed-Humid,,South +Jessamine,KY,109,21113,6,3,55017,4A,516903,SRCE,4,Mixed-Humid,,South +Johnson,KY,109,21115,6,3,22116,4A,516904,PJMW,4,Mixed-Humid,,South +Kenton,KY,109,21117,6,3,171321,4A,516905,PJMW,4,Mixed-Humid,,South +Knott,KY,110,21119,6,3,13659,4A,516906,PJMW,4,Mixed-Humid,,South +Knox,KY,109,21121,6,3,29794,4A,516907,SRCE,4,Mixed-Humid,,South +Larue,KY,109,21123,6,3,15303,4A,516908,SRCE,4,Mixed-Humid,,South +Laurel,KY,109,21125,6,3,63296,4A,516909,SRCE,4,Mixed-Humid,,South +Lawrence,KY,110,21127,6,3,16000,4A,516910,PJMW,4,Mixed-Humid,,South +Lee,KY,109,21129,6,3,7293,4A,516911,SRCE,4,Mixed-Humid,,South +Leslie,KY,110,21131,6,3,9864,4A,516912,SRCE,4,Mixed-Humid,,South +Letcher,KY,110,21133,6,3,20423,4A,516913,SRCE,4,Mixed-Humid,,South +Lewis,KY,109,21135,6,3,12973,4A,516914,SRCE,4,Mixed-Humid,,South +Lincoln,KY,109,21137,6,3,24776,4A,516915,SRCE,4,Mixed-Humid,,South +Livingston,KY,93,21139,6,3,8892,4A,516916,SRCE,4,Mixed-Humid,,South +Logan,KY,93,21141,6,3,28283,4A,516917,SRCE,4,Mixed-Humid,,South +Lyon,KY,93,21143,6,3,9187,4A,516918,SRCE,4,Mixed-Humid,,South +McCracken,KY,93,21145,6,3,67428,4A,516925,SRCE,4,Mixed-Humid,,South +McCreary,KY,93,21147,6,3,17050,4A,516926,SRCE,4,Mixed-Humid,,South +McLean,KY,108,21149,6,3,9054,4A,516927,SRCE,4,Mixed-Humid,,South +Madison,KY,109,21151,6,3,96735,4A,516919,SRCE,4,Mixed-Humid,,South +Magoffin,KY,109,21153,6,3,11228,4A,516920,SRCE,4,Mixed-Humid,,South +Marion,KY,109,21155,6,3,19834,4A,516921,SRCE,4,Mixed-Humid,,South +Marshall,KY,93,21157,6,3,31744,4A,516922,SRCE,4,Mixed-Humid,,South +Martin,KY,110,21159,6,3,10928,4A,516923,PJMW,4,Mixed-Humid,,South +Mason,KY,109,21161,6,3,16841,4A,516924,SRCE,4,Mixed-Humid,,South +Meade,KY,109,21163,6,3,30131,4A,516928,SRCE,4,Mixed-Humid,,South +Menifee,KY,109,21165,6,3,6286,4A,516929,SRCE,4,Mixed-Humid,,South +Mercer,KY,109,21167,6,3,23097,4A,516930,SRCE,4,Mixed-Humid,,South +Metcalfe,KY,93,21169,6,3,10482,4A,516931,SRCE,4,Mixed-Humid,,South +Monroe,KY,93,21171,6,3,11306,4A,516932,SRCE,4,Mixed-Humid,,South +Montgomery,KY,109,21173,6,3,28527,4A,516933,SRCE,4,Mixed-Humid,,South +Morgan,KY,109,21175,6,3,14283,4A,516934,SRCE,4,Mixed-Humid,,South +Muhlenberg,KY,108,21177,6,3,30568,4A,516935,SRCE,4,Mixed-Humid,,South +Nelson,KY,109,21179,6,3,47730,4A,516936,SRCE,4,Mixed-Humid,,South +Nicholas,KY,109,21181,6,3,7686,4A,516937,SRCE,4,Mixed-Humid,,South +Ohio,KY,108,21183,6,3,23626,4A,516938,SRCE,4,Mixed-Humid,,South +Oldham,KY,109,21185,6,3,70183,4A,516939,SRCE,4,Mixed-Humid,,South +Owen,KY,109,21187,6,3,11313,4A,516940,SRCE,4,Mixed-Humid,,South +Owsley,KY,109,21189,6,3,4001,4A,516941,SRCE,4,Mixed-Humid,,South +Pendleton,KY,109,21191,6,3,14810,4A,516942,SRCE,4,Mixed-Humid,,South +Perry,KY,110,21193,6,3,27133,4A,516943,SRCE,4,Mixed-Humid,,South +Pike,KY,110,21195,6,3,55973,4A,516944,PJMW,4,Mixed-Humid,,South +Powell,KY,109,21197,6,3,12972,4A,516945,SRCE,4,Mixed-Humid,,South +Pulaski,KY,93,21199,6,3,66191,4A,516946,SRCE,4,Mixed-Humid,,South +Robertson,KY,109,21201,6,3,2313,4A,516947,SRCE,4,Mixed-Humid,,South +Rockcastle,KY,109,21203,6,3,16190,4A,516948,SRCE,4,Mixed-Humid,,South +Rowan,KY,109,21205,6,3,24409,4A,516949,SRCE,4,Mixed-Humid,,South +Russell,KY,93,21207,6,3,18279,4A,516950,SRCE,4,Mixed-Humid,,South +Scott,KY,109,21209,6,3,60168,4A,516951,SRCE,4,Mixed-Humid,,South +Shelby,KY,109,21211,6,3,49515,4A,516952,SRCE,4,Mixed-Humid,,South +Simpson,KY,93,21213,6,3,20195,4A,516953,SRCE,4,Mixed-Humid,,South +Spencer,KY,109,21215,6,3,20531,4A,516954,SRCE,4,Mixed-Humid,,South +Taylor,KY,109,21217,6,3,26443,4A,516955,SRCE,4,Mixed-Humid,,South +Todd,KY,93,21219,6,3,12494,4A,516956,SRCE,4,Mixed-Humid,,South +Trigg,KY,93,21221,6,3,14369,4A,516957,SRCE,4,Mixed-Humid,,South +Trimble,KY,109,21223,6,3,8607,4A,516958,SRCE,4,Mixed-Humid,,South +Union,KY,108,21225,6,3,13106,4A,516959,SRCE,4,Mixed-Humid,,South +Warren,KY,93,21227,6,3,142229,4A,516960,SRCE,4,Mixed-Humid,,South +Washington,KY,109,21229,6,3,12267,4A,516961,SRCE,4,Mixed-Humid,,South +Wayne,KY,93,21231,6,3,19580,4A,516962,SRCE,4,Mixed-Humid,,South +Webster,KY,108,21233,6,3,12726,4A,516963,SRCE,4,Mixed-Humid,,South +Whitley,KY,109,21235,6,3,36825,4A,516964,SRCE,4,Mixed-Humid,,South +Wolfe,KY,109,21237,6,3,6282,4A,516965,SRCE,4,Mixed-Humid,,South +Woodford,KY,109,21239,6,3,27268,4A,516966,SRCE,4,Mixed-Humid,,South +Acadia,LA,58,22001,7,5,56489,2A,558389,MISS,2,Hot-Humid,,South +Allen,LA,58,22003,7,5,22112,2A,558397,SPPS,2,Hot-Humid,,South +Ascension,LA,58,22005,7,5,131632,2A,558403,MISS,2,Hot-Humid,,South +Assumption,LA,58,22007,7,5,20160,2A,558414,MISS,2,Hot-Humid,,South +Avoyelles,LA,58,22009,7,5,38408,2A,558424,SPPS,2,Hot-Humid,,South +Beauregard,LA,58,22011,7,5,36827,2A,558436,SPPS,2,Hot-Humid,,South +Bienville,LA,58,22013,7,5,12366,3A,558445,SPPS,3,Hot-Humid,,South +Bossier,LA,58,22015,7,5,129795,3A,558453,SPPS,3,Hot-Humid,,South +Caddo,LA,58,22017,7,5,226386,3A,558458,SPPS,3,Hot-Humid,,South +Calcasieu,LA,58,22019,7,5,203761,2A,558468,MISS,2,Hot-Humid,,South +Caldwell,LA,58,22021,7,5,9389,3A,558477,MISS,3,Hot-Humid,,South +Cameron,LA,58,22023,7,5,4768,2A,558488,MISS,2,Hot-Humid,,South +Catahoula,LA,58,22025,7,5,8414,3A,558495,MISS,3,Hot-Humid,,South +Claiborne,LA,86,22027,7,4,13670,3A,558505,MISS,3,Hot-Humid,,South +Concordia,LA,58,22029,7,5,17688,3A,558515,MISS,3,Hot-Humid,,South +De Soto,LA,58,22031,7,5,27114,3A,558521,SPPS,3,Hot-Humid,,South +East Baton Rouge,LA,58,22033,7,5,448467,2A,558530,MISS,2,Hot-Humid,,South +East Carroll,LA,86,22035,7,5,6829,3A,558534,MISS,3,Mixed-Humid,,South +East Feliciana,LA,58,22037,7,5,19229,2A,558542,MISS,2,Hot-Humid,,South +Evangeline,LA,58,22039,7,5,31754,2A,558551,SPPS,2,Hot-Humid,,South +Franklin,LA,86,22041,7,5,19285,3A,558557,MISS,3,Hot-Humid,,South +Grant,LA,58,22043,7,5,21911,3A,558567,SPPS,3,Hot-Humid,,South +Iberia,LA,58,22045,7,5,67659,2A,558576,MISS,2,Hot-Humid,,South +Iberville,LA,58,22047,7,5,29617,2A,558582,MISS,2,Hot-Humid,,South +Jackson,LA,58,22049,7,5,14746,3A,558592,SPPS,3,Hot-Humid,,South +Jefferson,LA,58,22051,7,5,421777,2A,558027,MISS,2,Hot-Humid,,South +Jefferson Davis,LA,58,22053,7,5,31553,2A,558039,MISS,2,Hot-Humid,,South +Lafayette,LA,58,22055,7,5,249750,2A,558059,MISS,2,Hot-Humid,,South +Lafourche,LA,58,22057,7,5,95056,2A,558065,MISS,2,Hot-Humid,,South +LaSalle,LA,58,22059,7,5,14800,3A,558049,SPPS,3,Hot-Humid,,South +Lincoln,LA,86,22061,7,5,47962,3A,558077,MISS,3,Hot-Humid,,South +Livingston,LA,58,22063,7,5,150145,2A,558083,MISS,2,Hot-Humid,,South +Madison,LA,86,22065,7,5,9246,3A,558088,MISS,3,Hot-Humid,,South +Morehouse,LA,86,22067,7,5,23955,3A,558097,MISS,3,Mixed-Humid,,South +Natchitoches,LA,58,22069,7,5,36291,3A,558108,SPPS,3,Hot-Humid,,South +Orleans,LA,58,22071,7,5,364136,2A,558113,MISS,2,Hot-Humid,,South +Ouachita,LA,86,22073,7,5,157568,3A,558114,MISS,3,Hot-Humid,,South +Plaquemines,LA,58,22075,7,5,22386,2A,558125,MISS,2,Hot-Humid,,South +Pointe Coupee,LA,58,22077,7,5,20000,2A,559449,MISS,2,Hot-Humid,,South +Rapides,LA,58,22079,7,5,126260,2A,559460,SPPS,2,Hot-Humid,,South +Red River,LA,58,22081,7,5,7356,3A,559472,SPPS,3,Hot-Humid,,South +Richland,LA,86,22083,7,5,19712,3A,559481,MISS,3,Hot-Humid,,South +Sabine,LA,58,22085,7,5,21906,3A,559489,SPPS,3,Hot-Humid,,South +St. Bernard,LA,58,22087,7,5,44463,2A,1629542,MISS,2,Hot-Humid,,South +St. Charles,LA,58,22089,7,5,50620,2A,1629449,MISS,2,Hot-Humid,,South +St. Helena,LA,58,22091,7,5,10774,2A,1629457,MISS,2,Hot-Humid,,South +St. James,LA,58,22093,7,5,19191,2A,1629464,MISS,2,Hot-Humid,,South +St. John the Baptist,LA,58,22095,7,5,39592,2A,1629472,MISS,2,Hot-Humid,,South +St. Landry,LA,58,22097,7,5,81464,2A,1629479,MISS,2,Hot-Humid,,South +St. Martin,LA,58,22099,7,5,51057,2A,1629486,MISS,2,Hot-Humid,,South +St. Mary,LA,58,22101,7,5,47055,2A,1629492,MISS,2,Hot-Humid,,South +St. Tammany,LA,58,22103,7,5,275583,2A,1629503,MISS,2,Hot-Humid,,South +Tangipahoa,LA,58,22105,7,5,138064,2A,559500,MISS,2,Hot-Humid,,South +Tensas,LA,86,22107,7,5,3764,3A,559509,MISS,3,Hot-Humid,,South +Terrebonne,LA,58,22109,7,5,103616,2A,559517,MISS,2,Hot-Humid,,South +Union,LA,86,22111,7,5,20650,3A,559528,MISS,3,Hot-Humid,,South +Vermilion,LA,58,22113,7,5,56992,2A,559538,MISS,2,Hot-Humid,,South +Vernon,LA,58,22115,7,5,46250,3A,559548,SPPS,3,Hot-Humid,,South +Washington,LA,58,22117,7,5,44865,2A,559557,MISS,2,Hot-Humid,,South +Webster,LA,58,22119,7,5,35238,3A,559567,SPPS,3,Hot-Humid,,South +West Baton Rouge,LA,58,22121,7,5,28266,2A,559570,MISS,2,Hot-Humid,,South +West Carroll,LA,86,22123,7,5,9323,3A,559578,MISS,3,Mixed-Humid,,South +West Feliciana,LA,58,22125,7,5,15371,2A,559584,MISS,2,Hot-Humid,,South +Winn,LA,58,22127,7,5,13216,3A,559594,SPPS,3,Hot-Humid,,South +Androscoggin,ME,134,23001,1,1,113765,6A,581286,ISNE,6,Cold,,Northeast +Aroostook,ME,134,23003,1,1,67351,7,581287,ISNE,7,Very Cold,,Northeast +Cumberland,ME,134,23005,1,1,310230,6A,581288,ISNE,6,Cold,,Northeast +Franklin,ME,134,23007,1,1,30828,6A,581289,ISNE,6,Cold,,Northeast +Hancock,ME,134,23009,1,1,56526,6A,581290,ISNE,6,Cold,,Northeast +Kennebec,ME,134,23011,1,1,127259,6A,581291,ISNE,6,Cold,,Northeast +Knox,ME,134,23013,1,1,40977,6A,581292,ISNE,6,Cold,,Northeast +Lincoln,ME,134,23015,1,1,36507,6A,581293,ISNE,6,Cold,,Northeast +Oxford,ME,134,23017,1,1,59905,6A,581294,ISNE,6,Cold,,Northeast +Penobscot,ME,134,23019,1,1,155312,6A,581295,ISNE,6,Cold,,Northeast +Piscataquis,ME,134,23021,1,1,17486,6A,581296,ISNE,6,Cold,,Northeast +Sagadahoc,ME,134,23023,1,1,37513,6A,581297,ISNE,6,Cold,,Northeast +Somerset,ME,134,23025,1,1,51302,6A,581298,ISNE,6,Cold,,Northeast +Waldo,ME,134,23027,1,1,40620,6A,581299,ISNE,6,Cold,,Northeast +Washington,ME,134,23029,1,1,31555,6A,581300,ISNE,6,Cold,,Northeast +York,ME,134,23031,1,1,218586,6A,581301,ISNE,6,Cold,,Northeast +Allegany,MD,121,24001,5,2,67273,4A,1713506,PJMW,4,Mixed-Humid,,South +Anne Arundel,MD,123,24003,5,3,594582,4A,1710958,PJME,4,Mixed-Humid,,South +Baltimore,MD,123,24005,5,3,844703,4A,1695314,PJME,4,Mixed-Humid,,South +Calvert,MD,123,24009,5,3,94728,4A,1676636,PJME,4,Mixed-Humid,,South +Caroline,MD,123,24011,5,3,33593,4A,595737,PJME,4,Mixed-Humid,,South +Carroll,MD,123,24013,5,3,176639,4A,1696228,PJME,4,Mixed-Humid,,South +Cecil,MD,123,24015,5,3,105672,4A,596115,PJME,4,Mixed-Humid,,South +Charles,MD,123,24017,5,3,171973,4A,1676992,PJME,4,Mixed-Humid,,South +Dorchester,MD,123,24019,5,3,32879,4A,596495,PJME,4,Mixed-Humid,,South +Frederick,MD,121,24021,5,3,293391,4A,1711211,PJMW,4,Mixed-Humid,,South +Garrett,MD,121,24023,5,2,28423,5A,1711058,PJMW,5,Cold,,South +Harford,MD,123,24025,5,3,264644,4A,1698178,PJME,4,Mixed-Humid,,South +Howard,MD,123,24027,5,3,336001,4A,1709077,PJME,4,Mixed-Humid,,South +Kent,MD,123,24029,5,3,19303,4A,593907,PJME,4,Mixed-Humid,,South +Montgomery,MD,123,24031,5,3,1058474,4A,1712500,PJMW,4,Mixed-Humid,,South +Prince George's,MD,123,24033,5,3,947430,4A,1714670,PJME,4,Mixed-Humid,,South +Queen Anne's,MD,123,24035,5,3,52508,4A,596089,PJME,4,Mixed-Humid,,South +St. Mary's,MD,123,24037,5,3,115281,4A,1697853,PJME,4,Mixed-Humid,,South +Somerset,MD,123,24039,5,3,24910,4A,596907,PJME,4,Mixed-Humid,,South +Talbot,MD,123,24041,5,3,37823,4A,592947,PJME,4,Mixed-Humid,,South +Washington,MD,121,24043,5,3,155813,4A,1714220,PJMW,4,Mixed-Humid,,South +Wicomico,MD,123,24045,5,3,104800,4A,1668606,PJME,4,Mixed-Humid,,South +Worcester,MD,123,24047,5,3,54171,4A,1668802,PJME,4,Mixed-Humid,,South +Baltimore City,MD,123,24510,5,3,565239,4A,1702381,PJME,4,Mixed-Humid,,South +Barnstable,MA,131,25001,1,2,231735,5A,606927,ISNE,5,Cold,,Northeast +Berkshire,MA,131,25003,1,2,126818,5A,606928,ISNE,5,Cold,,Northeast +Bristol,MA,131,25005,1,2,581841,5A,606929,ISNE,5,Cold,,Northeast +Dukes,MA,131,25007,1,2,20819,5A,606930,ISNE,5,Cold,,Northeast +Essex,MA,131,25009,1,2,810089,5A,606931,ISNE,5,Cold,,Northeast +Franklin,MA,131,25011,1,2,70836,5A,606932,ISNE,5,Cold,,Northeast +Hampden,MA,131,25013,1,2,460291,5A,606933,ISNE,5,Cold,,Northeast +Hampshire,MA,131,25015,1,2,162502,5A,606934,ISNE,5,Cold,,Northeast +Middlesex,MA,131,25017,1,2,1623952,5A,606935,ISNE,5,Cold,,Northeast +Nantucket,MA,131,25019,1,2,14444,5A,606936,ISNE,5,Cold,,Northeast +Norfolk,MA,131,25021,1,2,727473,5A,606937,ISNE,5,Cold,,Northeast +Plymouth,MA,131,25023,1,2,535308,5A,606938,ISNE,5,Cold,,Northeast +Suffolk,MA,131,25025,1,2,768425,5A,606939,ISNE,5,Cold,,Northeast +Worcester,MA,131,25027,1,2,866866,5A,606940,ISNE,5,Cold,,Northeast +Alcona,MI,103,26001,3,1,10489,6A,1622943,MISE,6,Cold,,Midwest +Alger,MI,74,26003,3,1,8757,6A,1622944,MISW,6,Cold,,Midwest +Allegan,MI,103,26005,3,2,121939,5A,1622945,PJMW,5,Cold,,Midwest +Alpena,MI,103,26007,3,1,28904,6A,1622946,MISE,6,Cold,,Midwest +Antrim,MI,103,26009,3,1,24409,6A,1622947,MISE,6,Cold,,Midwest +Arenac,MI,103,26011,3,1,15145,6A,1622948,MISE,6,Cold,,Midwest +Baraga,MI,74,26013,3,1,8310,7,1622949,MISW,7,Very Cold,,Midwest +Barry,MI,103,26015,3,2,63808,5A,1622950,MISE,5,Cold,,Midwest +Bay,MI,103,26017,3,1,102500,5A,1622951,MISE,5,Cold,,Midwest +Benzie,MI,103,26019,3,1,18441,6A,1622952,MISE,6,Cold,,Midwest +Berrien,MI,104,26021,3,2,152261,5A,1622953,PJMW,5,Cold,,Midwest +Branch,MI,103,26023,3,2,45215,5A,1622954,MISE,5,Cold,,Midwest +Calhoun,MI,103,26025,3,2,133366,5A,1622955,MISE,5,Cold,,Midwest +Cass,MI,104,26027,3,2,51642,5A,1622956,PJMW,5,Cold,,Midwest +Charlevoix,MI,103,26029,3,1,26159,6A,1622957,MISE,6,Cold,,Midwest +Cheboygan,MI,103,26031,3,1,26048,6A,1622958,MISE,6,Cold,,Midwest +Chippewa,MI,103,26033,3,1,36264,7,1622959,MISW,7,Very Cold,,Midwest +Clare,MI,103,26035,3,1,31316,6A,1622960,MISE,6,Cold,,Midwest +Clinton,MI,103,26037,3,2,79720,5A,1622961,MISE,5,Cold,,Midwest +Crawford,MI,103,26039,3,1,13538,6A,1622962,MISE,6,Cold,,Midwest +Delta,MI,74,26041,3,1,36790,6A,1622963,MISW,6,Cold,,Midwest +Dickinson,MI,74,26043,3,1,25982,6A,1622964,MISW,6,Cold,,Midwest +Eaton,MI,103,26045,3,2,108820,5A,1622965,MISE,5,Cold,,Midwest +Emmet,MI,103,26047,3,1,34123,6A,1622966,MISE,6,Cold,,Midwest +Genesee,MI,103,26049,3,2,401522,5A,1622967,MISE,5,Cold,,Midwest +Gladwin,MI,103,26051,3,1,25853,6A,1622968,MISE,6,Cold,,Midwest +Gogebic,MI,74,26053,3,1,14224,7,1622969,MISW,7,Very Cold,,Midwest +Grand Traverse,MI,103,26055,3,1,96421,6A,1622970,MISE,6,Cold,,Midwest +Gratiot,MI,103,26057,3,2,41368,5A,1622971,MISE,5,Cold,,Midwest +Hillsdale,MI,103,26059,3,2,45587,5A,1622972,MISE,5,Cold,,Midwest +Houghton,MI,74,26061,3,1,37599,7,1622973,MISW,7,Very Cold,,Midwest +Huron,MI,103,26063,3,2,30927,6A,1622974,MISE,6,Cold,,Midwest +Ingham,MI,103,26065,3,2,284637,5A,1622975,MISE,5,Cold,,Midwest +Ionia,MI,103,26067,3,2,66262,5A,1622976,MISE,5,Cold,,Midwest +Iosco,MI,103,26069,3,1,25373,6A,1622977,MISE,6,Cold,,Midwest +Iron,MI,74,26071,3,1,11740,7,1622978,MISW,7,Very Cold,,Midwest +Isabella,MI,103,26073,3,1,64118,6A,1622979,MISE,6,Cold,,Midwest +Jackson,MI,103,26075,3,2,159424,5A,1622980,MISE,5,Cold,,Midwest +Kalamazoo,MI,104,26077,3,2,262215,5A,1622981,PJMW,5,Cold,,Midwest +Kalkaska,MI,103,26079,3,1,18490,6A,1622982,MISE,6,Cold,,Midwest +Kent,MI,103,26081,3,2,661354,5A,1622983,MISE,5,Cold,,Midwest +Keweenaw,MI,74,26083,3,1,2172,7,1622984,MISW,7,Very Cold,,Midwest +Lake,MI,103,26085,3,1,12734,6A,1622985,MISE,6,Cold,,Midwest +Lapeer,MI,103,26087,3,2,88977,5A,1622986,MISE,5,Cold,,Midwest +Leelanau,MI,103,26089,3,1,23019,6A,1622987,MISE,6,Cold,,Midwest +Lenawee,MI,103,26091,3,2,97520,5A,1622988,MISE,5,Cold,,Midwest +Livingston,MI,103,26093,3,2,196757,5A,1622989,MISE,5,Cold,,Midwest +Luce,MI,103,26095,3,1,6435,7,1622990,MISW,7,Very Cold,,Midwest +Mackinac,MI,103,26097,3,1,10851,7,1622991,MISW,7,Very Cold,,Midwest +Macomb,MI,103,26099,3,2,875101,5A,1622992,MISE,5,Cold,,Midwest +Manistee,MI,103,26101,3,1,25562,6A,1622993,MISE,6,Cold,,Midwest +Marquette,MI,74,26103,3,1,66999,6A,1622994,MISW,6,Cold,,Midwest +Mason,MI,103,26105,3,1,29159,6A,1622995,MISE,6,Cold,,Midwest +Mecosta,MI,103,26107,3,1,41099,6A,1622996,MISE,6,Cold,,Midwest +Menominee,MI,74,26109,3,1,22945,6A,1622997,MISW,6,Cold,,Midwest +Midland,MI,103,26111,3,1,84039,5A,1622998,MISE,5,Cold,,Midwest +Missaukee,MI,103,26113,3,1,15311,6A,1622999,MISE,6,Cold,,Midwest +Monroe,MI,103,26115,3,2,155045,5A,1623000,MISE,5,Cold,,Midwest +Montcalm,MI,103,26117,3,2,68154,5A,1623001,MISE,5,Cold,,Midwest +Montmorency,MI,103,26119,3,1,9678,6A,1623002,MISE,6,Cold,,Midwest +Muskegon,MI,103,26121,3,2,176564,5A,1623003,MISE,5,Cold,,Midwest +Newaygo,MI,103,26123,3,1,51108,6A,1623004,MISE,6,Cold,,Midwest +Oakland,MI,103,26125,3,2,1270426,5A,1623005,MISE,5,Cold,,Midwest +Oceana,MI,103,26127,3,1,26981,6A,1623006,MISE,6,Cold,,Midwest +Ogemaw,MI,103,26129,3,1,20990,6A,1623007,MISE,6,Cold,,Midwest +Ontonagon,MI,74,26131,3,1,5906,7,1623008,MISW,7,Very Cold,,Midwest +Osceola,MI,103,26133,3,1,23330,6A,1623009,MISE,6,Cold,,Midwest +Oscoda,MI,103,26135,3,1,8545,6A,1623010,MISE,6,Cold,,Midwest +Otsego,MI,103,26137,3,1,25747,6A,1623011,MISE,6,Cold,,Midwest +Ottawa,MI,103,26139,3,2,303372,5A,1623012,MISE,5,Cold,,Midwest +Presque Isle,MI,103,26141,3,1,13285,6A,1623013,MISE,6,Cold,,Midwest +Roscommon,MI,103,26143,3,1,23863,6A,1623014,MISE,6,Cold,,Midwest +Saginaw,MI,103,26145,3,2,187782,5A,1623015,MISE,5,Cold,,Midwest +St. Clair,MI,103,26147,3,2,159874,5A,1625033,MISE,5,Cold,,Midwest +St. Joseph,MI,104,26149,3,2,60878,5A,1625034,PJMW,5,Cold,,Midwest +Sanilac,MI,103,26151,3,2,40368,6A,1623016,MISE,6,Cold,,Midwest +Schoolcraft,MI,103,26153,3,1,8149,7,1623017,MISW,7,Very Cold,,Midwest +Shiawassee,MI,103,26155,3,2,68025,5A,1623018,MISE,5,Cold,,Midwest +Tuscola,MI,103,26157,3,2,52826,5A,1623019,MISE,5,Cold,,Midwest +Van Buren,MI,104,26159,3,2,75798,5A,1623020,PJMW,5,Cold,,Midwest +Washtenaw,MI,103,26161,3,2,365536,5A,1623021,MISE,5,Cold,,Midwest +Wayne,MI,103,26163,3,2,1751169,5A,1623022,MISE,5,Cold,,Midwest +Wexford,MI,103,26165,3,1,34122,6A,1623023,MISE,6,Cold,,Midwest +Aitkin,MN,43,27001,4,1,16102,7,663198,MISW,7,Very Cold,,Midwest +Anoka,MN,43,27003,4,1,372441,6A,659447,MISW,6,Cold,,Midwest +Becker,MN,42,27005,4,1,35283,7,659448,MISW,7,Very Cold,,Midwest +Beltrami,MN,42,27007,4,1,46718,7,659449,MISW,7,Very Cold,,Midwest +Benton,MN,43,27009,4,1,41600,6A,659450,MISW,6,Cold,,Midwest +Big Stone,MN,43,27011,4,1,5105,6A,659451,MISW,6,Cold,,Midwest +Blue Earth,MN,68,27013,4,1,70006,6A,659452,MISW,6,Cold,,Midwest +Brown,MN,68,27015,4,1,25628,6A,659453,MISW,6,Cold,,Midwest +Carlton,MN,43,27017,4,1,36825,7,659454,MISW,7,Very Cold,,Midwest +Carver,MN,43,27019,4,1,111057,6A,659455,MISW,6,Cold,,Midwest +Cass,MN,43,27021,4,1,31446,7,659456,MISW,7,Very Cold,,Midwest +Chippewa,MN,44,27023,4,1,12172,6A,659457,SPPN,6,Cold,,Midwest +Chisago,MN,43,27025,4,1,58535,6A,659458,MISW,6,Cold,,Midwest +Clay,MN,42,27027,4,1,66258,7,659459,SPPN,7,Very Cold,,Midwest +Clearwater,MN,42,27029,4,1,8644,7,659460,MISW,7,Very Cold,,Midwest +Cook,MN,43,27031,4,1,5639,7,659461,MISW,7,Very Cold,,Midwest +Cottonwood,MN,68,27033,4,1,11319,6A,659462,MISW,6,Cold,,Midwest +Crow Wing,MN,43,27035,4,1,68304,7,659463,MISW,7,Very Cold,,Midwest +Dakota,MN,43,27037,4,1,447440,6A,659464,MISW,6,Cold,,Midwest +Dodge,MN,43,27039,4,1,21088,6A,659465,MISW,6,Cold,,Midwest +Douglas,MN,43,27041,4,1,39953,6A,659466,MISW,6,Cold,,Midwest +Faribault,MN,68,27043,4,1,13873,6A,659467,MISW,6,Cold,,Midwest +Fillmore,MN,68,27045,4,1,21522,6A,659468,MISW,6,Cold,,Midwest +Freeborn,MN,68,27047,4,1,30515,6A,659469,MISW,6,Cold,,Midwest +Goodhue,MN,43,27049,4,1,48035,6A,659470,MISW,6,Cold,,Midwest +Grant,MN,43,27051,4,1,6139,7,659471,SPPN,7,Very Cold,,Midwest +Hennepin,MN,43,27053,4,1,1258713,6A,659472,MISW,6,Cold,,Midwest +Houston,MN,68,27055,4,1,18582,6A,659473,MISW,6,Cold,,Midwest +Hubbard,MN,43,27057,4,1,22132,7,659474,MISW,7,Very Cold,,Midwest +Isanti,MN,43,27059,4,1,43182,6A,659475,MISW,6,Cold,,Midwest +Itasca,MN,43,27061,4,1,45365,7,659476,MISW,7,Very Cold,,Midwest +Jackson,MN,68,27063,4,1,9919,6A,659477,MISW,6,Cold,,Midwest +Kanabec,MN,43,27065,4,1,16602,7,659478,MISW,7,Very Cold,,Midwest +Kandiyohi,MN,43,27067,4,1,43813,6A,659479,MISW,6,Cold,,Midwest +Kittson,MN,42,27069,4,1,4060,7,659480,MISW,7,Very Cold,,Midwest +Koochiching,MN,42,27071,4,1,11751,7,659481,MISW,7,Very Cold,,Midwest +Lac qui Parle,MN,44,27073,4,1,6630,6A,659482,MISW,6,Cold,,Midwest +Lake,MN,43,27075,4,1,10855,7,659484,MISW,7,Very Cold,,Midwest +Lake of the Woods,MN,42,27077,4,1,3778,7,659483,MISW,7,Very Cold,,Midwest +Le Sueur,MN,43,27079,4,1,29255,6A,659485,MISW,6,Cold,,Midwest +Lincoln,MN,44,27081,4,1,5521,6A,659486,SPPN,6,Cold,,Midwest +Lyon,MN,44,27083,4,1,25427,6A,659487,SPPN,6,Cold,,Midwest +McLeod,MN,43,27085,4,1,36785,6A,659491,MISW,6,Cold,,Midwest +Mahnomen,MN,42,27087,4,1,5280,7,659488,MISW,7,Very Cold,,Midwest +Marshall,MN,42,27089,4,1,8810,7,659489,MISW,7,Very Cold,,Midwest +Martin,MN,68,27091,4,1,19657,6A,659490,MISW,6,Cold,,Midwest +Meeker,MN,43,27093,4,1,23490,6A,659492,MISW,6,Cold,,Midwest +Mille Lacs,MN,43,27095,4,1,27427,7,659493,MISW,7,Very Cold,,Midwest +Morrison,MN,43,27097,4,1,34250,6A,659494,MISW,6,Cold,,Midwest +Mower,MN,68,27099,4,1,40058,6A,659495,MISW,6,Cold,,Midwest +Murray,MN,44,27101,4,1,8049,6A,659496,SPPN,6,Cold,,Midwest +Nicollet,MN,68,27103,4,1,34242,6A,659497,MISW,6,Cold,,Midwest +Nobles,MN,44,27105,4,1,21727,6A,659498,MISW,6,Cold,,Midwest +Norman,MN,42,27107,4,1,6329,7,659499,MISW,7,Very Cold,,Midwest +Olmsted,MN,43,27109,4,1,164784,6A,659500,MISW,6,Cold,,Midwest +Otter Tail,MN,43,27111,4,1,60626,7,659501,SPPN,7,Very Cold,,Midwest +Pennington,MN,42,27113,4,1,13714,7,659502,MISW,7,Very Cold,,Midwest +Pine,MN,43,27115,4,1,30197,7,659503,MISW,7,Very Cold,,Midwest +Pipestone,MN,44,27117,4,1,9245,6A,659504,SPPN,6,Cold,,Midwest +Polk,MN,42,27119,4,1,30412,7,659505,SPPN,7,Very Cold,,Midwest +Pope,MN,43,27121,4,1,11400,6A,659506,MISW,6,Cold,,Midwest +Ramsey,MN,43,27123,4,1,536075,6A,659507,MISW,6,Cold,,Midwest +Red Lake,MN,42,27125,4,1,3911,7,659508,MISW,7,Very Cold,,Midwest +Redwood,MN,44,27127,4,1,15288,6A,659509,MISW,6,Cold,,Midwest +Renville,MN,44,27129,4,1,14348,6A,659510,MISW,6,Cold,,Midwest +Rice,MN,43,27131,4,1,67948,6A,659511,MISW,6,Cold,,Midwest +Rock,MN,44,27133,4,1,9551,6A,659512,MISW,6,Cold,,Midwest +Roseau,MN,42,27135,4,1,15252,7,659513,MISW,7,Very Cold,,Midwest +St. Louis,MN,43,27137,4,1,200514,7,662850,MISW,7,Very Cold,,Midwest +Scott,MN,43,27139,4,1,155814,6A,659514,MISW,6,Cold,,Midwest +Sherburne,MN,43,27141,4,1,102206,6A,659515,MISW,6,Cold,,Midwest +Sibley,MN,43,27143,4,1,15084,6A,659516,MISW,6,Cold,,Midwest +Stearns,MN,43,27145,4,1,160977,6A,659517,MISW,6,Cold,,Midwest +Steele,MN,43,27147,4,1,37421,6A,659518,MISW,6,Cold,,Midwest +Stevens,MN,43,27149,4,1,9728,6A,659519,SPPN,6,Cold,,Midwest +Swift,MN,43,27151,4,1,9719,6A,659520,SPPN,6,Cold,,Midwest +Todd,MN,43,27153,4,1,25667,6A,659521,MISW,6,Cold,,Midwest +Traverse,MN,43,27155,4,1,3136,6A,659522,SPPN,6,Cold,,Midwest +Wabasha,MN,43,27157,4,1,21683,6A,659523,MISW,6,Cold,,Midwest +Wadena,MN,43,27159,4,1,14241,7,659524,MISW,7,Very Cold,,Midwest +Waseca,MN,68,27161,4,1,18981,6A,659525,MISW,6,Cold,,Midwest +Washington,MN,43,27163,4,1,278936,6A,659526,MISW,6,Cold,,Midwest +Watonwan,MN,68,27165,4,1,11077,6A,659527,MISW,6,Cold,,Midwest +Wilkin,MN,43,27167,4,1,6306,7,659528,SPPN,7,Very Cold,,Midwest +Winona,MN,43,27169,4,1,49721,6A,659529,MISW,6,Cold,,Midwest +Wright,MN,43,27171,4,1,151150,6A,659530,MISW,6,Cold,,Midwest +Yellow Medicine,MN,44,27173,4,1,9467,6A,659531,SPPN,6,Cold,,Midwest +Adams,MS,87,28001,6,5,28746,3A,695726,MISS,3,Hot-Humid,,South +Alcorn,MS,88,28003,6,4,34135,3A,711755,SRCE,3,Mixed-Humid,,South +Amite,MS,87,28005,6,5,12442,3A,695727,MISS,3,Hot-Humid,,South +Attala,MS,87,28007,6,4,17359,3A,695728,MISS,3,Mixed-Humid,,South +Benton,MS,88,28009,6,4,7438,3A,695729,SRCE,3,Mixed-Humid,,South +Bolivar,MS,87,28011,6,5,28968,3A,695730,MISS,3,Mixed-Humid,,South +Calhoun,MS,88,28013,6,4,12685,3A,695731,MISS,3,Mixed-Humid,,South +Carroll,MS,87,28015,6,4,9535,3A,695732,MISS,3,Mixed-Humid,,South +Chickasaw,MS,88,28017,6,4,16866,3A,695733,SRCE,3,Mixed-Humid,,South +Choctaw,MS,88,28019,6,4,8088,3A,695734,SRCE,3,Mixed-Humid,,South +Claiborne,MS,87,28021,6,4,8617,3A,695735,MISS,3,Hot-Humid,,South +Clarke,MS,87,28023,6,4,15228,3A,695736,SRSE,3,Mixed-Humid,,South +Clay,MS,88,28025,6,4,18206,3A,695737,SRCE,3,Mixed-Humid,,South +Coahoma,MS,87,28027,6,5,20077,3A,695738,MISS,3,Mixed-Humid,,South +Copiah,MS,87,28029,6,5,27664,3A,695739,MISS,3,Hot-Humid,,South +Covington,MS,87,28031,6,5,18059,3A,695740,SRSE,3,Hot-Humid,,South +DeSoto,MS,87,28033,6,5,193247,3A,695741,MISS,3,Mixed-Humid,,South +Forrest,MS,87,28035,6,5,78208,3A,695742,SRSE,3,Hot-Humid,,South +Franklin,MS,87,28037,6,5,7610,3A,695743,MISS,3,Hot-Humid,,South +George,MS,87,28039,6,5,25619,3A,695744,SRSE,3,Hot-Humid,,South +Greene,MS,87,28041,6,5,13601,3A,695745,SRSE,3,Hot-Humid,,South +Grenada,MS,87,28043,6,4,21065,3A,695746,MISS,3,Mixed-Humid,,South +Hancock,MS,87,28045,6,5,46159,2A,711756,SRSE,2,Hot-Humid,,South +Harrison,MS,87,28047,6,5,210612,2A,695747,SRSE,2,Hot-Humid,,South +Hinds,MS,87,28049,6,5,214870,3A,695748,MISS,3,Hot-Humid,,South +Holmes,MS,87,28051,6,4,15777,3A,695749,MISS,3,Mixed-Humid,,South +Humphreys,MS,87,28053,6,5,7216,3A,695750,MISS,3,Mixed-Humid,,South +Issaquena,MS,87,28055,6,5,1256,3A,695751,MISS,3,Mixed-Humid,,South +Itawamba,MS,88,28057,6,4,24093,3A,695752,SRCE,3,Mixed-Humid,,South +Jackson,MS,87,28059,6,5,146389,2A,695753,SRSE,2,Hot-Humid,,South +Jasper,MS,87,28061,6,5,16013,3A,695754,SRSE,3,Mixed-Humid,,South +Jefferson,MS,87,28063,6,4,6941,3A,695755,MISS,3,Hot-Humid,,South +Jefferson Davis,MS,87,28065,6,5,10969,3A,695756,MISS,3,Hot-Humid,,South +Jones,MS,87,28067,6,5,66250,3A,695757,SRSE,3,Hot-Humid,,South +Kemper,MS,88,28069,6,4,8584,3A,695758,SRSE,3,Mixed-Humid,,South +Lafayette,MS,88,28071,6,4,58467,3A,695759,SRCE,3,Mixed-Humid,,South +Lamar,MS,87,28073,6,5,66217,3A,695760,SRSE,3,Hot-Humid,,South +Lauderdale,MS,87,28075,6,5,70527,3A,695761,SRSE,3,Mixed-Humid,,South +Lawrence,MS,87,28077,6,5,11741,3A,695762,MISS,3,Hot-Humid,,South +Leake,MS,87,28079,6,4,21258,3A,695763,MISS,3,Mixed-Humid,,South +Lee,MS,88,28081,6,4,82799,3A,695764,SRCE,3,Mixed-Humid,,South +Leflore,MS,87,28083,6,5,26378,3A,695765,MISS,3,Mixed-Humid,,South +Lincoln,MS,87,28085,6,5,34702,3A,695766,MISS,3,Hot-Humid,,South +Lowndes,MS,88,28087,6,4,57283,3A,695767,SRCE,3,Mixed-Humid,,South +Madison,MS,87,28089,6,5,112511,3A,695768,MISS,3,Mixed-Humid,,South +Marion,MS,87,28091,6,5,24224,3A,695769,MISS,3,Hot-Humid,,South +Marshall,MS,88,28093,6,4,34123,3A,695770,MISS,3,Mixed-Humid,,South +Monroe,MS,88,28095,6,4,33609,3A,695771,SRCE,3,Mixed-Humid,,South +Montgomery,MS,87,28097,6,4,9600,3A,711757,MISS,3,Mixed-Humid,,South +Neshoba,MS,88,28099,6,4,28789,3A,695772,SRSE,3,Mixed-Humid,,South +Newton,MS,87,28101,6,4,21019,3A,695773,SRSE,3,Mixed-Humid,,South +Noxubee,MS,88,28103,6,4,9914,3A,695774,SRCE,3,Mixed-Humid,,South +Oktibbeha,MS,88,28105,6,4,51203,3A,695775,SRCE,3,Mixed-Humid,,South +Panola,MS,87,28107,6,4,32669,3A,695776,MISS,3,Mixed-Humid,,South +Pearl River,MS,87,28109,6,5,57978,2A,695777,SRSE,2,Hot-Humid,,South +Perry,MS,87,28111,6,5,11315,3A,695778,SRSE,3,Hot-Humid,,South +Pike,MS,87,28113,6,5,39394,3A,711758,MISS,3,Hot-Humid,,South +Pontotoc,MS,88,28115,6,4,31535,3A,695803,SRCE,3,Mixed-Humid,,South +Prentiss,MS,88,28117,6,4,25135,3A,695779,SRCE,3,Mixed-Humid,,South +Quitman,MS,87,28119,6,4,5546,3A,695780,MISS,3,Mixed-Humid,,South +Rankin,MS,87,28121,6,5,160417,3A,695781,MISS,3,Hot-Humid,,South +Scott,MS,87,28123,6,5,27507,3A,695782,MISS,3,Mixed-Humid,,South +Sharkey,MS,87,28125,6,5,3336,3A,695783,MISS,3,Mixed-Humid,,South +Simpson,MS,87,28127,6,4,25715,3A,695784,MISS,3,Hot-Humid,,South +Smith,MS,87,28129,6,5,14099,3A,695785,SRSE,3,Hot-Humid,,South +Stone,MS,87,28131,6,5,18756,2A,695786,SRSE,2,Hot-Humid,,South +Sunflower,MS,87,28133,6,5,24468,3A,695787,MISS,3,Mixed-Humid,,South +Tallahatchie,MS,87,28135,6,4,11837,3A,695788,MISS,3,Mixed-Humid,,South +Tate,MS,87,28137,6,4,28261,3A,695789,MISS,3,Mixed-Humid,,South +Tippah,MS,88,28139,6,4,21287,3A,695790,SRCE,3,Mixed-Humid,,South +Tishomingo,MS,88,28141,6,4,18507,3A,695791,SRCE,3,Mixed-Humid,,South +Tunica,MS,87,28143,6,4,9234,3A,695792,MISS,3,Mixed-Humid,,South +Union,MS,88,28145,6,4,28284,3A,695793,SRCE,3,Mixed-Humid,,South +Walthall,MS,87,28147,6,5,13863,3A,695794,MISS,3,Hot-Humid,,South +Warren,MS,87,28149,6,5,42298,3A,695795,MISS,3,Hot-Humid,,South +Washington,MS,87,28151,6,5,41946,3A,695796,MISS,3,Mixed-Humid,,South +Wayne,MS,87,28153,6,5,19703,3A,695797,SRSE,3,Hot-Humid,,South +Webster,MS,88,28155,6,4,9988,3A,695798,MISS,3,Mixed-Humid,,South +Wilkinson,MS,87,28157,6,5,8058,3A,695799,MISS,3,Hot-Humid,,South +Winston,MS,88,28159,6,4,17416,3A,695800,SRCE,3,Mixed-Humid,,South +Yalobusha,MS,88,28161,6,4,12386,3A,695801,MISS,3,Mixed-Humid,,South +Yazoo,MS,87,28163,6,5,25796,3A,695802,MISS,3,Mixed-Humid,,South +Adair,MO,71,29001,4,2,25122,5A,765805,MISC,5,Cold,,Midwest +Andrew,MO,54,29003,4,2,18127,5A,758456,SPPC,5,Cold,,Midwest +Atchison,MO,54,29005,4,2,5107,5A,758457,SPPC,5,Cold,,Midwest +Audrain,MO,72,29007,4,2,24394,4A,758458,MISC,4,Mixed-Humid,,Midwest +Barry,MO,55,29009,4,3,35265,4A,758459,SPPC,4,Mixed-Humid,,Midwest +Barton,MO,55,29011,4,3,11731,4A,758460,SPPC,4,Mixed-Humid,,Midwest +Bates,MO,55,29013,4,3,16242,4A,758461,SPPC,4,Mixed-Humid,,Midwest +Benton,MO,55,29015,4,3,20552,4A,758462,SPPC,4,Mixed-Humid,,Midwest +Bollinger,MO,73,29017,4,3,10544,4A,758463,MISC,4,Mixed-Humid,,Midwest +Boone,MO,72,29019,4,3,189463,4A,758464,MISC,4,Mixed-Humid,,Midwest +Buchanan,MO,54,29021,4,2,82956,5A,758465,SPPC,5,Cold,,Midwest +Butler,MO,84,29023,4,3,41948,4A,758466,MISC,4,Mixed-Humid,,Midwest +Caldwell,MO,54,29025,4,2,8955,5A,758467,SPPC,5,Cold,,Midwest +Callaway,MO,72,29027,4,3,44731,4A,758468,MISC,4,Mixed-Humid,,Midwest +Camden,MO,84,29029,4,3,44044,4A,758469,MISC,4,Mixed-Humid,,Midwest +Cape Girardeau,MO,72,29031,4,3,82984,4A,758470,MISC,4,Mixed-Humid,,Midwest +Carroll,MO,54,29033,4,2,8391,4A,758471,SPPC,4,Mixed-Humid,,Midwest +Carter,MO,84,29035,4,3,5303,4A,758472,MISC,4,Mixed-Humid,,Midwest +Cass,MO,54,29037,4,3,111732,4A,758473,SPPC,4,Mixed-Humid,,Midwest +Cedar,MO,55,29039,4,3,14672,4A,758474,SPPC,4,Mixed-Humid,,Midwest +Chariton,MO,54,29041,4,2,7399,5A,758475,MISC,5,Cold,,Midwest +Christian,MO,55,29043,4,3,94422,4A,758476,SPPC,4,Mixed-Humid,,Midwest +Clark,MO,71,29045,4,2,6641,5A,758477,MISC,5,Cold,,Midwest +Clay,MO,54,29047,4,3,259772,4A,758478,SPPC,4,Mixed-Humid,,Midwest +Clinton,MO,54,29049,4,2,21548,5A,758479,SPPC,5,Cold,,Midwest +Cole,MO,72,29051,4,3,77278,4A,758480,MISC,4,Mixed-Humid,,Midwest +Cooper,MO,72,29053,4,3,16947,4A,758481,MISC,4,Mixed-Humid,,Midwest +Crawford,MO,73,29055,4,3,22719,4A,758482,MISC,4,Mixed-Humid,,Midwest +Dade,MO,55,29057,4,3,7716,4A,758483,SPPC,4,Mixed-Humid,,Midwest +Dallas,MO,84,29059,4,3,17768,4A,758484,SPPC,4,Mixed-Humid,,Midwest +Daviess,MO,54,29061,4,2,8551,5A,758485,SPPC,5,Cold,,Midwest +DeKalb,MO,54,29063,4,2,9899,5A,758486,SPPC,5,Cold,,Midwest +Dent,MO,84,29065,4,3,14647,4A,758487,MISC,4,Mixed-Humid,,Midwest +Douglas,MO,55,29067,4,3,12228,4A,758488,SPPC,4,Mixed-Humid,,Midwest +Dunklin,MO,84,29069,4,3,27032,4A,758489,MISC,4,Mixed-Humid,,Midwest +Franklin,MO,72,29071,4,3,106404,4A,758490,MISC,4,Mixed-Humid,,Midwest +Gasconade,MO,72,29073,4,3,14705,4A,758491,MISC,4,Mixed-Humid,,Midwest +Gentry,MO,54,29075,4,2,6287,5A,758492,SPPC,5,Cold,,Midwest +Greene,MO,55,29077,4,3,304611,4A,758493,SPPC,4,Mixed-Humid,,Midwest +Grundy,MO,54,29079,4,2,9815,5A,758494,SPPC,5,Cold,,Midwest +Harrison,MO,54,29081,4,2,8220,5A,758495,SPPC,5,Cold,,Midwest +Henry,MO,55,29083,4,3,22485,4A,758496,SPPC,4,Mixed-Humid,,Midwest +Hickory,MO,55,29085,4,3,8718,4A,758497,SPPC,4,Mixed-Humid,,Midwest +Holt,MO,54,29087,4,2,4248,5A,758498,SPPC,5,Cold,,Midwest +Howard,MO,72,29089,4,3,10101,4A,758499,MISC,4,Mixed-Humid,,Midwest +Howell,MO,84,29091,4,3,40735,4A,758500,MISC,4,Mixed-Humid,,Midwest +Iron,MO,73,29093,4,3,9440,4A,758501,MISC,4,Mixed-Humid,,Midwest +Jackson,MO,54,29095,4,3,718560,4A,758502,SPPC,4,Mixed-Humid,,Midwest +Jasper,MO,55,29097,4,3,125056,4A,758503,SPPC,4,Mixed-Humid,,Midwest +Jefferson,MO,72,29099,4,3,231230,4A,758504,MISC,4,Mixed-Humid,,Midwest +Johnson,MO,54,29101,4,3,54962,4A,758505,SPPC,4,Mixed-Humid,,Midwest +Knox,MO,71,29103,4,2,3723,5A,758506,MISC,5,Cold,,Midwest +Laclede,MO,84,29105,4,3,36680,4A,758507,MISC,4,Mixed-Humid,,Midwest +Lafayette,MO,54,29107,4,3,33196,4A,758508,SPPC,4,Mixed-Humid,,Midwest +Lawrence,MO,55,29109,4,3,38872,4A,758509,SPPC,4,Mixed-Humid,,Midwest +Lewis,MO,71,29111,4,2,9818,5A,758510,MISC,5,Cold,,Midwest +Lincoln,MO,72,29113,4,3,64699,4A,758511,MISC,4,Mixed-Humid,,Midwest +Linn,MO,54,29115,4,2,11791,5A,758512,MISC,5,Cold,,Midwest +Livingston,MO,54,29117,4,2,14557,5A,758513,SPPC,5,Cold,,Midwest +McDonald,MO,55,29119,4,3,23903,4A,758518,SPPC,4,Mixed-Humid,,Midwest +Macon,MO,71,29121,4,2,15161,5A,758514,MISC,5,Cold,,Midwest +Madison,MO,73,29123,4,3,12698,4A,758515,MISC,4,Mixed-Humid,,Midwest +Maries,MO,72,29125,4,3,8430,4A,758516,MISC,4,Mixed-Humid,,Midwest +Marion,MO,71,29127,4,2,28336,5A,758517,MISC,5,Cold,,Midwest +Mercer,MO,54,29129,4,2,3469,5A,758519,SPPC,5,Cold,,Midwest +Miller,MO,72,29131,4,3,25590,4A,758520,MISC,4,Mixed-Humid,,Midwest +Mississippi,MO,72,29133,4,3,11822,4A,758521,MISC,4,Mixed-Humid,,Midwest +Moniteau,MO,72,29135,4,3,15256,4A,758522,MISC,4,Mixed-Humid,,Midwest +Monroe,MO,71,29137,4,2,8698,4A,758523,MISC,4,Mixed-Humid,,Midwest +Montgomery,MO,72,29139,4,3,11459,4A,758524,MISC,4,Mixed-Humid,,Midwest +Morgan,MO,72,29141,4,3,21970,4A,758525,MISC,4,Mixed-Humid,,Midwest +New Madrid,MO,84,29143,4,3,15424,4A,758526,MISC,4,Mixed-Humid,,Midwest +Newton,MO,55,29145,4,3,60677,4A,758527,SPPC,4,Mixed-Humid,,Midwest +Nodaway,MO,54,29147,4,2,20695,5A,758528,SPPC,5,Cold,,Midwest +Oregon,MO,84,29149,4,3,8720,4A,758529,MISC,4,Mixed-Humid,,Midwest +Osage,MO,72,29151,4,3,13468,4A,758530,MISC,4,Mixed-Humid,,Midwest +Ozark,MO,55,29153,4,3,8970,4A,758531,SPPC,4,Mixed-Humid,,Midwest +Pemiscot,MO,84,29155,4,3,14613,4A,758532,MISC,4,Mixed-Humid,,Midwest +Perry,MO,72,29157,4,3,18950,4A,758533,MISC,4,Mixed-Humid,,Midwest +Pettis,MO,54,29159,4,3,43530,4A,758534,SPPC,4,Mixed-Humid,,Midwest +Phelps,MO,73,29161,4,3,45284,4A,758535,MISC,4,Mixed-Humid,,Midwest +Pike,MO,72,29163,4,2,17935,5A,758536,MISC,5,Cold,,Midwest +Platte,MO,54,29165,4,3,111940,4A,758537,SPPC,4,Mixed-Humid,,Midwest +Polk,MO,55,29167,4,3,32780,4A,758538,SPPC,4,Mixed-Humid,,Midwest +Pulaski,MO,73,29169,4,3,53812,4A,758539,MISC,4,Mixed-Humid,,Midwest +Putnam,MO,54,29171,4,2,4638,5A,758540,MISC,5,Cold,,Midwest +Ralls,MO,71,29173,4,2,10489,5A,758541,MISC,5,Cold,,Midwest +Randolph,MO,72,29175,4,2,24109,4A,758542,MISC,4,Mixed-Humid,,Midwest +Ray,MO,54,29177,4,3,23182,4A,758543,SPPC,4,Mixed-Humid,,Midwest +Reynolds,MO,73,29179,4,3,5950,4A,758544,MISC,4,Mixed-Humid,,Midwest +Ripley,MO,84,29181,4,3,10806,4A,758545,MISC,4,Mixed-Humid,,Midwest +St. Charles,MO,72,29183,4,3,416659,4A,758546,MISC,4,Mixed-Humid,,Midwest +St. Clair,MO,55,29185,4,3,9752,4A,758547,SPPC,4,Mixed-Humid,,Midwest +Ste. Genevieve,MO,72,29186,4,3,18642,4A,765806,MISC,4,Mixed-Humid,,Midwest +St. Francois,MO,72,29187,4,3,67058,4A,758548,MISC,4,Mixed-Humid,,Midwest +St. Louis,MO,72,29189,4,3,987059,4A,758549,MISC,4,Mixed-Humid,,Midwest +Saline,MO,54,29195,4,3,23049,4A,758550,SPPC,4,Mixed-Humid,,Midwest +Schuyler,MO,71,29197,4,2,4053,5A,758551,MISC,5,Cold,,Midwest +Scotland,MO,71,29199,4,2,4676,5A,758552,MISC,5,Cold,,Midwest +Scott,MO,72,29201,4,3,37889,4A,758553,MISC,4,Mixed-Humid,,Midwest +Shannon,MO,84,29203,4,3,7238,4A,758554,MISC,4,Mixed-Humid,,Midwest +Shelby,MO,71,29205,4,2,5931,5A,758555,MISC,5,Cold,,Midwest +Stoddard,MO,84,29207,4,3,28397,4A,758556,MISC,4,Mixed-Humid,,Midwest +Stone,MO,55,29209,4,3,32658,4A,758557,SPPC,4,Mixed-Humid,,Midwest +Sullivan,MO,54,29211,4,2,5797,5A,758558,MISC,5,Cold,,Midwest +Taney,MO,55,29213,4,3,56775,4A,758559,SPPC,4,Mixed-Humid,,Midwest +Texas,MO,84,29215,4,3,25619,4A,758560,MISC,4,Mixed-Humid,,Midwest +Vernon,MO,55,29217,4,3,19710,4A,758561,SPPC,4,Mixed-Humid,,Midwest +Warren,MO,72,29219,4,3,37806,4A,758562,MISC,4,Mixed-Humid,,Midwest +Washington,MO,73,29221,4,3,23534,4A,758563,MISC,4,Mixed-Humid,,Midwest +Wayne,MO,84,29223,4,3,10811,4A,758564,MISC,4,Mixed-Humid,,Midwest +Webster,MO,55,29225,4,3,41472,4A,758565,SPPC,4,Mixed-Humid,,Midwest +Worth,MO,54,29227,4,2,1907,5A,758566,SPPC,5,Cold,,Midwest +Wright,MO,84,29229,4,3,19403,4A,758567,MISC,4,Mixed-Humid,,Midwest +St. Louis City,MO,72,29510,4,3,281754,4A,767557,MISC,4,Mixed-Humid,,Midwest +Beaverhead,MT,17,30001,8,1,9885,6B,1719627,NWPP,6,Cold,,West +Big Horn,MT,18,30003,8,1,12751,6B,1716521,NWPP,6,Cold,,West +Blaine,MT,18,30005,8,1,6899,6B,1722470,NWPP,6,Cold,,West +Broadwater,MT,17,30007,8,1,8032,6B,1719625,NWPP,6,Cold,,West +Carbon,MT,18,30009,8,1,11419,6B,1720111,NWPP,6,Cold,,West +Carter,MT,35,30011,8,1,1418,6B,1688746,NWPP,6,Cold,,West +Cascade,MT,18,30013,8,1,84900,6B,1719622,NWPP,6,Cold,,West +Chouteau,MT,18,30015,8,1,5847,6B,1719619,NWPP,6,Cold,,West +Custer,MT,35,30017,8,1,11985,6B,1720109,NWPP,6,Cold,,West +Daniels,MT,35,30019,8,1,1633,6B,1637566,MISW,6,Cold,,West +Dawson,MT,35,30021,8,1,8810,6B,1715632,SPPN,6,Cold,,West +Deer Lodge,MT,17,30023,8,1,9673,6B,1719617,NWPP,6,Cold,,West +Fallon,MT,35,30025,8,1,2994,6B,1688745,SPPN,6,Cold,,West +Fergus,MT,20,30027,8,1,11772,6B,1719614,NWPP,6,Cold,,West +Flathead,MT,17,30029,8,1,113679,6B,1719611,NWPP,6,Cold,,West +Gallatin,MT,18,30031,8,1,126409,6B,1720053,NWPP,6,Cold,,West +Garfield,MT,19,30033,8,1,1211,6B,1716058,NWPP,6,Cold,,West +Glacier,MT,18,30035,8,1,13609,6B,1719607,NWPP,6,Cold,,West +Golden Valley,MT,20,30037,8,1,835,6B,1723078,NWPP,6,Cold,,West +Granite,MT,17,30039,8,1,3595,6B,1719605,NWPP,6,Cold,,West +Hill,MT,18,30041,8,1,16276,6B,1720048,NWPP,6,Cold,,West +Jefferson,MT,17,30043,8,1,13048,6B,1720045,NWPP,6,Cold,,West +Judith BASN,MT,20,30045,8,1,2093,6B,1719602,NWPP,6,Cold,,West +Lake,MT,17,30047,8,1,33338,6B,1796943,NWPP,6,Cold,,West +Lewis and Clark,MT,18,30049,8,1,75011,6B,793926,NWPP,6,Cold,,West +Liberty,MT,18,30051,8,1,1974,6B,1720036,NWPP,6,Cold,,West +Lincoln,MT,17,30053,8,1,21895,6B,1720038,NWPP,6,Cold,,West +McCone,MT,35,30055,8,1,1676,6B,1716270,MISW,6,Cold,,West +Madison,MT,17,30057,8,1,9521,6B,1720033,NWPP,6,Cold,,West +Meagher,MT,18,30059,8,1,2071,6B,1719600,NWPP,6,Cold,,West +Mineral,MT,17,30061,8,1,5090,6B,1720030,NWPP,6,Cold,,West +Missoula,MT,17,30063,8,1,121849,6B,1719596,NWPP,6,Cold,,West +Musselshell,MT,20,30065,8,1,5308,6B,1719593,NWPP,6,Cold,,West +Park,MT,18,30067,8,1,17903,6B,1720027,NWPP,6,Cold,,West +Petroleum,MT,20,30069,8,1,554,6B,1719590,NWPP,6,Cold,,West +Phillips,MT,18,30071,8,1,4249,6B,1720023,NWPP,6,Cold,,West +Pondera,MT,18,30073,8,1,6125,6B,1719587,NWPP,6,Cold,,West +Powder River,MT,20,30075,8,1,1743,6B,1719584,NWPP,6,Cold,,West +Powell,MT,17,30077,8,1,7133,6B,1720021,NWPP,6,Cold,,West +Prairie,MT,35,30079,8,1,1112,6B,1715847,SPPN,6,Cold,,West +Ravalli,MT,17,30081,8,1,47738,6B,1719582,NWPP,6,Cold,,West +Richland,MT,35,30083,8,1,11173,6B,1715338,SPPN,6,Cold,,West +Roosevelt,MT,35,30085,8,1,10319,6B,1669428,SPPN,6,Cold,,West +Rosebud,MT,20,30087,8,1,8160,6B,1716795,NWPP,6,Cold,,West +Sanders,MT,17,30089,8,1,13684,6B,1719578,NWPP,6,Cold,,West +Sheridan,MT,35,30091,8,1,3498,6B,1677577,MISW,6,Cold,,West +Silver Bow,MT,17,30093,8,1,36360,6B,1719575,NWPP,6,Cold,,West +Stillwater,MT,18,30095,8,1,9173,6B,1719572,NWPP,6,Cold,,West +Sweet Grass,MT,18,30097,8,1,3763,6B,1719569,NWPP,6,Cold,,West +Teton,MT,18,30099,8,1,6430,6B,1720018,NWPP,6,Cold,,West +Toole,MT,18,30101,8,1,5133,6B,1719566,NWPP,6,Cold,,West +Treasure,MT,20,30103,8,1,772,6B,1719563,NWPP,6,Cold,,West +Valley,MT,19,30105,8,1,7474,6B,1678923,NWPP,6,Cold,,West +Wheatland,MT,20,30107,8,1,2057,6B,1719560,NWPP,6,Cold,,West +Wibaux,MT,35,30109,8,1,910,6B,1696629,SPPN,6,Cold,,West +Yellowstone,MT,20,30111,8,1,170843,6B,1719558,NWPP,6,Cold,,West +Adams,NE,40,31001,4,2,30899,5A,835823,SPPN,5,Cold,,Midwest +Antelope,NE,40,31003,4,2,6302,5A,835824,SPPN,5,Cold,,Midwest +Arthur,NE,39,31005,4,2,412,5A,835825,SPPN,5,Cold,,Midwest +Banner,NE,39,31007,4,2,674,5A,835826,RMRG,5,Cold,,Midwest +Blaine,NE,40,31009,4,2,436,5A,835827,SPPN,5,Cold,,Midwest +Boone,NE,40,31011,4,2,5310,5A,835828,SPPN,5,Cold,,Midwest +Box Butte,NE,39,31013,4,1,10692,5A,835991,SPPN,5,Cold,,Midwest +Boyd,NE,40,31015,4,2,1725,5A,835829,SPPN,5,Cold,,Midwest +Brown,NE,40,31017,4,2,2853,5A,835830,SPPN,5,Cold,,Midwest +Buffalo,NE,40,31019,4,2,50697,5A,835831,SPPN,5,Cold,,Midwest +Burt,NE,41,31021,4,2,6727,5A,835832,SPPN,5,Cold,,Midwest +Butler,NE,40,31023,4,2,8459,5A,835833,SPPN,5,Cold,,Midwest +Cass,NE,41,31025,4,2,27446,5A,835834,SPPN,5,Cold,,Midwest +Cedar,NE,40,31027,4,2,8262,5A,835835,SPPN,5,Cold,,Midwest +Chase,NE,39,31029,4,2,3724,5A,835836,SPPN,5,Cold,,Midwest +Cherry,NE,40,31031,4,2,5492,5A,835837,SPPN,5,Cold,,Midwest +Cheyenne,NE,39,31033,4,2,9541,5A,835838,RMRG,5,Cold,,Midwest +Clay,NE,40,31035,4,2,6116,5A,835839,SPPN,5,Cold,,Midwest +Colfax,NE,41,31037,4,2,10566,5A,835840,SPPN,5,Cold,,Midwest +Cuming,NE,40,31039,4,2,8918,5A,835841,SPPN,5,Cold,,Midwest +Custer,NE,40,31041,4,2,10581,5A,835842,SPPN,5,Cold,,Midwest +Dakota,NE,40,31043,4,2,21268,5A,835843,SPPN,5,Cold,,Midwest +Dawes,NE,39,31045,4,1,8133,5A,835844,RMRG,5,Cold,,Midwest +Dawson,NE,40,31047,4,2,24085,5A,835845,SPPN,5,Cold,,Midwest +Deuel,NE,39,31049,4,2,1871,5A,835846,SPPN,5,Cold,,Midwest +Dixon,NE,40,31051,4,2,5491,5A,835847,SPPN,5,Cold,,Midwest +Dodge,NE,41,31053,4,2,37187,5A,835848,SPPN,5,Cold,,Midwest +Douglas,NE,41,31055,4,2,589540,5A,835849,SPPN,5,Cold,,Midwest +Dundy,NE,39,31057,4,2,1561,5A,835850,SPPN,5,Cold,,Midwest +Fillmore,NE,40,31059,4,2,5548,5A,835851,SPPN,5,Cold,,Midwest +Franklin,NE,40,31061,4,2,2825,5A,835852,SPPN,5,Cold,,Midwest +Frontier,NE,40,31063,4,2,2585,5A,835853,SPPN,5,Cold,,Midwest +Furnas,NE,40,31065,4,2,4556,5A,835854,SPPN,5,Cold,,Midwest +Gage,NE,40,31067,4,2,21634,5A,835855,SPPN,5,Cold,,Midwest +Garden,NE,39,31069,4,2,1794,5A,835856,SPPN,5,Cold,,Midwest +Garfield,NE,40,31071,4,2,1763,5A,835857,SPPN,5,Cold,,Midwest +Gosper,NE,40,31073,4,2,1847,5A,835858,SPPN,5,Cold,,Midwest +Grant,NE,39,31075,4,2,565,5A,835859,SPPN,5,Cold,,Midwest +Greeley,NE,40,31077,4,2,2219,5A,835860,SPPN,5,Cold,,Midwest +Hall,NE,40,31079,4,2,62197,5A,835861,SPPN,5,Cold,,Midwest +Hamilton,NE,40,31081,4,2,9537,5A,835862,SPPN,5,Cold,,Midwest +Harlan,NE,40,31083,4,2,3045,5A,835863,SPPN,5,Cold,,Midwest +Hayes,NE,40,31085,4,2,846,5A,835864,SPPN,5,Cold,,Midwest +Hitchcock,NE,40,31087,4,2,2552,5A,835865,SPPN,5,Cold,,Midwest +Holt,NE,40,31089,4,2,10093,5A,835866,SPPN,5,Cold,,Midwest +Hooker,NE,40,31091,4,2,679,5A,835867,SPPN,5,Cold,,Midwest +Howard,NE,40,31093,4,2,6527,5A,835868,SPPN,5,Cold,,Midwest +Jefferson,NE,40,31095,4,2,7054,5A,835869,SPPN,5,Cold,,Midwest +Johnson,NE,41,31097,4,2,5198,5A,835870,SPPN,5,Cold,,Midwest +Kearney,NE,40,31099,4,2,6770,5A,835871,SPPN,5,Cold,,Midwest +Keith,NE,39,31101,4,2,8113,5A,835872,SPPN,5,Cold,,Midwest +Keya Paha,NE,40,31103,4,2,805,5A,835873,SPPN,5,Cold,,Midwest +Kimball,NE,39,31105,4,2,3289,5A,835874,RMRG,5,Cold,,Midwest +Knox,NE,40,31107,4,2,8298,5A,835875,SPPN,5,Cold,,Midwest +Lancaster,NE,41,31109,4,2,326716,5A,835876,SPPN,5,Cold,,Midwest +Lincoln,NE,40,31111,4,2,33365,5A,835877,SPPN,5,Cold,,Midwest +Logan,NE,40,31113,4,2,655,5A,835878,SPPN,5,Cold,,Midwest +Loup,NE,40,31115,4,2,592,5A,835879,SPPN,5,Cold,,Midwest +McPherson,NE,40,31117,4,2,383,5A,835881,SPPN,5,Cold,,Midwest +Madison,NE,40,31119,4,2,35627,5A,835880,SPPN,5,Cold,,Midwest +Merrick,NE,40,31121,4,2,7755,5A,835882,SPPN,5,Cold,,Midwest +Morrill,NE,39,31123,4,2,4504,5A,835883,SPPN,5,Cold,,Midwest +Nance,NE,40,31125,4,2,3274,5A,835884,SPPN,5,Cold,,Midwest +Nemaha,NE,41,31127,4,2,7076,5A,835885,SPPN,5,Cold,,Midwest +Nuckolls,NE,40,31129,4,2,4095,5A,835886,SPPN,5,Cold,,Midwest +Otoe,NE,41,31131,4,2,16335,5A,835887,SPPN,5,Cold,,Midwest +Pawnee,NE,41,31133,4,2,2512,5A,835888,SPPN,5,Cold,,Midwest +Perkins,NE,39,31135,4,2,2795,5A,835889,SPPN,5,Cold,,Midwest +Phelps,NE,40,31137,4,2,9057,5A,835890,SPPN,5,Cold,,Midwest +Pierce,NE,40,31139,4,2,7299,5A,835891,SPPN,5,Cold,,Midwest +Platte,NE,40,31141,4,2,34609,5A,835892,SPPN,5,Cold,,Midwest +Polk,NE,40,31143,4,2,5228,5A,835893,SPPN,5,Cold,,Midwest +Red Willow,NE,40,31145,4,2,10457,5A,835894,SPPN,5,Cold,,Midwest +Richardson,NE,41,31147,4,2,7689,5A,835895,SPPN,5,Cold,,Midwest +Rock,NE,40,31149,4,2,1271,5A,835896,SPPN,5,Cold,,Midwest +Saline,NE,40,31151,4,2,14555,5A,835897,SPPN,5,Cold,,Midwest +Sarpy,NE,41,31153,4,2,199886,5A,835898,SPPN,5,Cold,,Midwest +Saunders,NE,41,31155,4,2,23463,5A,835899,SPPN,5,Cold,,Midwest +Scotts Bluff,NE,39,31157,4,2,35699,5A,835900,SPPN,5,Cold,,Midwest +Seward,NE,40,31159,4,2,17671,5A,835901,SPPN,5,Cold,,Midwest +Sheridan,NE,39,31161,4,1,4928,5A,835902,SPPN,5,Cold,,Midwest +Sherman,NE,40,31163,4,2,2983,5A,835903,SPPN,5,Cold,,Midwest +Sioux,NE,39,31165,4,1,1154,5A,835904,RMRG,5,Cold,,Midwest +Stanton,NE,40,31167,4,2,5856,5A,835905,SPPN,5,Cold,,Midwest +Thayer,NE,40,31169,4,2,4829,5A,835906,SPPN,5,Cold,,Midwest +Thomas,NE,40,31171,4,2,677,5A,835907,SPPN,5,Cold,,Midwest +Thurston,NE,40,31173,4,2,6557,5A,835908,SPPN,5,Cold,,Midwest +Valley,NE,40,31175,4,2,4012,5A,835909,SPPN,5,Cold,,Midwest +Washington,NE,41,31177,4,2,21152,5A,835910,SPPN,5,Cold,,Midwest +Wayne,NE,40,31179,4,2,9874,5A,835911,SPPN,5,Cold,,Midwest +Webster,NE,40,31181,4,2,3351,5A,835912,SPPN,5,Cold,,Midwest +Wheeler,NE,40,31183,4,2,775,5A,835913,SPPN,5,Cold,,Midwest +York,NE,40,31185,4,2,14356,5A,835914,SPPN,5,Cold,,Midwest +Churchill,NV,12,32001,8,2,25803,5B,858638,BASN,5,Cold,,West +Clark,NV,13,32003,8,5,2336573,3B,863600,BASN,3,Hot-Dry,,West +Douglas,NV,12,32005,8,2,49545,5B,858643,BASN,5,Cold,,West +Elko,NV,12,32007,8,1,54293,5B,857664,BASN,5,Cold,,West +Esmeralda,NV,12,32009,8,2,736,5B,858641,BASN,5,Cold,,West +Eureka,NV,12,32011,8,1,1917,5B,858640,BASN,5,Cold,,West +Humboldt,NV,12,32013,8,2,17136,5B,863310,BASN,5,Cold,,West +Lander,NV,12,32015,8,2,5769,5B,863368,BASN,5,Cold,,West +Lincoln,NV,12,32017,8,2,4452,5B,863992,BASN,5,Cold,,West +Lyon,NV,12,32019,8,2,62583,5B,858645,BASN,5,Cold,,West +Mineral,NV,12,32021,8,2,4528,5B,858644,BASN,5,Cold,,West +Nye,NV,12,32023,8,5,55720,5B,863599,BASN,5,Cold,,West +Pershing,NV,12,32027,8,2,6364,5B,858646,BASN,5,Cold,,West +Storey,NV,12,32029,8,2,4177,5B,858642,BASN,5,Cold,,West +Washoe,NV,12,32031,8,2,498022,5B,858608,BASN,5,Cold,,West +White Pine,NV,12,32033,8,1,8522,5B,858615,BASN,5,Cold,,West +Carson City,NV,12,32510,8,2,58036,5B,863219,BASN,5,Cold,,West +Belknap,NH,130,33001,1,1,65027,6A,873174,ISNE,6,Cold,,Northeast +Carroll,NH,130,33003,1,1,52448,6A,873175,ISNE,6,Cold,,Northeast +Cheshire,NH,130,33005,1,1,77703,5A,873176,ISNE,5,Cold,,Northeast +Coos,NH,130,33007,1,1,31372,6A,873177,ISNE,6,Cold,,Northeast +Grafton,NH,130,33009,1,1,93146,6A,873178,ISNE,6,Cold,,Northeast +Hillsborough,NH,130,33011,1,1,427354,5A,873179,ISNE,5,Cold,,Northeast +Merrimack,NH,130,33013,1,1,157103,6A,873180,ISNE,6,Cold,,Northeast +Rockingham,NH,130,33015,1,1,320689,5A,873181,ISNE,5,Cold,,Northeast +Strafford,NH,130,33017,1,1,133243,5A,873182,ISNE,5,Cold,,Northeast +Sullivan,NH,130,33019,1,1,43969,6A,873183,ISNE,6,Cold,,Northeast +Atlantic,NJ,126,34001,2,3,275213,4A,882270,PJME,4,Mixed-Humid,,Northeast +Bergen,NJ,126,34003,2,2,957736,5A,882271,PJME,5,Cold,,Northeast +Burlington,NJ,126,34005,2,3,469167,4A,882272,PJME,4,Mixed-Humid,,Northeast +Camden,NJ,126,34007,2,3,527196,4A,882273,PJME,4,Mixed-Humid,,Northeast +Cape May,NJ,126,34009,2,3,94610,4A,882274,PJME,4,Mixed-Humid,,Northeast +Cumberland,NJ,126,34011,2,3,152326,4A,882275,PJME,4,Mixed-Humid,,Northeast +Essex,NJ,126,34013,2,3,851117,4A,882276,PJME,4,Mixed-Humid,,Northeast +Gloucester,NJ,126,34015,2,3,308423,4A,882277,PJME,4,Mixed-Humid,,Northeast +Hudson,NJ,126,34017,2,3,705472,4A,882278,PJME,4,Mixed-Humid,,Northeast +Hunterdon,NJ,126,34019,2,2,130183,5A,882228,PJME,5,Cold,,Northeast +Mercer,NJ,126,34021,2,3,381671,5A,882229,PJME,5,Cold,,Northeast +Middlesex,NJ,126,34023,2,3,863623,4A,882230,PJME,4,Mixed-Humid,,Northeast +Monmouth,NJ,126,34025,2,3,642799,4A,882910,PJME,4,Mixed-Humid,,Northeast +Morris,NJ,126,34027,2,2,514423,5A,882231,PJME,5,Cold,,Northeast +Ocean,NJ,126,34029,2,3,659197,4A,882279,PJME,4,Mixed-Humid,,Northeast +Passaic,NJ,126,34031,2,2,513395,5A,882232,PJME,5,Cold,,Northeast +Salem,NJ,126,34033,2,3,65338,4A,882233,PJME,4,Mixed-Humid,,Northeast +Somerset,NJ,126,34035,2,2,348842,5A,882234,PJME,5,Cold,,Northeast +Sussex,NJ,126,34037,2,2,146132,5A,882236,PJME,5,Cold,,Northeast +Union,NJ,126,34039,2,3,572726,4A,882235,PJME,4,Mixed-Humid,,Northeast +Warren,NJ,126,34041,2,2,111252,5A,882237,PJME,5,Cold,,Northeast +Bernalillo,NM,31,35001,8,3,671586,4B,1702363,SRSG,4,Mixed-Dry,,West +Catron,NM,31,35003,8,3,3825,5B,929108,SRSG,5,Cold,,West +Chaves,NM,47,35005,8,4,63561,3B,1702364,SPPS,3,Hot-Dry,,West +Cibola,NM,31,35006,8,2,26780,4B,933051,SRSG,4,Cold,,West +Colfax,NM,31,35007,8,2,12255,5B,929117,SRSG,5,Cold,,West +Curry,NM,47,35009,8,3,47222,4B,933053,SPPS,4,Mixed-Dry,,West +De Baca,NM,31,35011,8,3,1657,4B,933054,SRSG,4,Mixed-Dry,,West +Doca Ana,NM,31,35013,8,4,225210,3B,929109,SRSG,3,Hot-Dry,,West +Eddy,NM,47,35015,8,4,60275,3B,936829,SPPS,3,Hot-Dry,,West +Grant,NM,31,35017,8,3,27472,4B,915980,SRSG,4,Mixed-Dry,,West +Guadalupe,NM,31,35019,8,3,4292,4B,929111,SRSG,4,Mixed-Dry,,West +Harding,NM,31,35021,8,3,624,5B,933055,SRSG,5,Cold,,West +Hidalgo,NM,31,35023,8,4,3965,3B,929106,SRSG,3,Hot-Dry,,West +Lea,NM,47,35025,8,4,72101,3B,1702365,SPPS,3,Hot-Dry,,West +Lincoln,NM,31,35027,8,3,20029,4B,929116,SRSG,4,Mixed-Dry,,West +Los Alamos,NM,31,35028,8,2,19444,5B,1702366,SRSG,5,Cold,,West +Luna,NM,31,35029,8,4,25316,3B,933057,SRSG,3,Hot-Dry,,West +McKinley,NM,31,35031,8,2,68797,5B,929107,SRSG,5,Cold,,West +Mora,NM,31,35033,8,1,4123,5B,1702367,SRSG,5,Cold,,West +Otero,NM,31,35035,8,4,68835,3B,929104,SRSG,3,Hot-Dry,,West +Quay,NM,47,35037,8,4,8510,4B,929110,SPPS,4,Mixed-Dry,,West +Rio Arriba,NM,31,35039,8,2,39876,5B,1702368,SRSG,5,Cold,,West +Roosevelt,NM,47,35041,8,4,18787,4B,1702369,SPPS,4,Mixed-Dry,,West +Sandoval,NM,31,35043,8,2,155936,5B,929113,SRSG,5,Cold,,West +San Juan,NM,31,35045,8,2,120675,5B,936844,RMRG,5,Cold,,West +San Miguel,NM,31,35047,8,2,26668,5B,929114,SRSG,5,Cold,,West +Santa Fe,NM,31,35049,8,2,155956,5B,933322,SRSG,5,Cold,,West +Sierra,NM,31,35051,8,4,11488,4B,1702370,SRSG,4,Mixed-Dry,,West +Socorro,NM,31,35053,8,3,15963,4B,1702371,SRSG,4,Mixed-Dry,,West +Taos,NM,31,35055,8,1,34405,5B,933056,SRSG,5,Cold,,West +Torrance,NM,31,35057,8,3,15633,5B,929112,SRSG,5,Cold,,West +Union,NM,31,35059,8,3,3964,4B,929115,SRSG,4,Mixed-Dry,,West +Valencia,NM,31,35061,8,3,79141,4B,933052,SRSG,4,Mixed-Dry,,West +Albany,NY,127,36001,2,2,316659,5A,974099,NYUP,5,Cold,,Northeast +Allegany,NY,127,36003,2,1,46651,6A,974100,NYUP,6,Cold,,Northeast +Bronx,NY,127,36005,2,3,1356476,4A,974101,NYCW,4,Mixed-Humid,,Northeast +Broome,NY,127,36007,2,1,196077,6A,974102,NYUP,6,Cold,,Northeast +Cattaraugus,NY,127,36009,2,1,75600,6A,974103,NYUP,6,Cold,,Northeast +Cayuga,NY,127,36011,2,2,74485,5A,974104,NYUP,5,Cold,,Northeast +Chautauqua,NY,127,36013,2,2,124891,5A,974105,NYUP,5,Cold,,Northeast +Chemung,NY,127,36015,2,2,81325,5A,974106,NYUP,5,Cold,,Northeast +Chenango,NY,127,36017,2,1,45920,6A,974107,NYUP,6,Cold,,Northeast +Clinton,NY,127,36019,2,1,78115,6A,974108,NYUP,6,Cold,,Northeast +Columbia,NY,127,36021,2,2,60470,5A,974109,NYUP,5,Cold,,Northeast +Cortland,NY,127,36023,2,1,45752,5A,974110,NYUP,5,Cold,,Northeast +Delaware,NY,127,36025,2,1,44410,6A,974111,NYUP,6,Cold,,Northeast +Dutchess,NY,127,36027,2,2,297150,5A,974112,NYUP,5,Cold,,Northeast +Erie,NY,127,36029,2,2,946147,5A,974113,NYUP,5,Cold,,Northeast +Essex,NY,127,36031,2,1,36775,6A,974114,NYUP,6,Cold,,Northeast +Franklin,NY,127,36033,2,1,46502,6A,974115,NYUP,6,Cold,,Northeast +Fulton,NY,127,36035,2,1,52234,6A,974116,NYUP,6,Cold,,Northeast +Genesee,NY,127,36037,2,2,57529,5A,974117,NYUP,5,Cold,,Northeast +Greene,NY,127,36039,2,2,47062,5A,974118,NYUP,5,Cold,,Northeast +Hamilton,NY,127,36041,2,1,5082,6A,974119,NYUP,6,Cold,,Northeast +Herkimer,NY,127,36043,2,2,59484,6A,974120,NYUP,6,Cold,,Northeast +Jefferson,NY,127,36045,2,1,114787,6A,974121,NYUP,6,Cold,,Northeast +Kings,NY,127,36047,2,3,2561225,4A,974122,NYCW,4,Mixed-Humid,,Northeast +Lewis,NY,127,36049,2,1,26548,6A,974123,NYUP,6,Cold,,Northeast +Livingston,NY,127,36051,2,2,61158,5A,974124,NYUP,5,Cold,,Northeast +Madison,NY,127,36053,2,1,66921,6A,974125,NYUP,6,Cold,,Northeast +Monroe,NY,127,36055,2,2,748482,5A,974126,NYUP,5,Cold,,Northeast +Montgomery,NY,127,36057,2,1,49368,6A,974127,NYUP,6,Cold,,Northeast +Nassau,NY,128,36059,2,3,1381715,4A,974128,NYCW,4,Mixed-Humid,,Northeast +New York,NY,127,36061,2,3,1597451,4A,974129,NYCW,4,Mixed-Humid,,Northeast +Niagara,NY,127,36063,2,2,209457,5A,974130,NYUP,5,Cold,,Northeast +Oneida,NY,127,36065,2,1,227555,6A,974131,NYUP,6,Cold,,Northeast +Onondaga,NY,127,36067,2,2,467873,5A,974132,NYUP,5,Cold,,Northeast +Ontario,NY,127,36069,2,2,112494,5A,974133,NYUP,5,Cold,,Northeast +Orange,NY,127,36071,2,2,407470,5A,974134,NYUP,5,Cold,,Northeast +Orleans,NY,127,36073,2,2,39124,5A,974135,NYUP,5,Cold,,Northeast +Oswego,NY,127,36075,2,2,118162,5A,974136,NYUP,5,Cold,,Northeast +Otsego,NY,127,36077,2,1,60126,6A,974137,NYUP,6,Cold,,Northeast +Putnam,NY,127,36079,2,2,98060,5A,974138,NYUP,5,Cold,,Northeast +Queens,NY,127,36081,2,3,2252196,4A,974139,NYCW,4,Mixed-Humid,,Northeast +Rensselaer,NY,127,36083,2,2,159305,5A,974140,NYUP,5,Cold,,Northeast +Richmond,NY,127,36085,2,3,490687,4A,974141,PJME,4,Mixed-Humid,,Northeast +Rockland,NY,127,36087,2,2,340807,5A,974142,NYUP,5,Cold,,Northeast +St. Lawrence,NY,127,36089,2,1,106940,6A,977309,NYUP,6,Cold,,Northeast +Saratoga,NY,127,36091,2,1,238711,5A,974143,NYUP,5,Cold,,Northeast +Schenectady,NY,127,36093,2,2,159902,5A,974144,NYUP,5,Cold,,Northeast +Schoharie,NY,127,36095,2,1,30105,6A,974145,NYUP,6,Cold,,Northeast +Schuyler,NY,127,36097,2,1,17507,6A,974146,NYUP,6,Cold,,Northeast +Seneca,NY,127,36099,2,2,32349,5A,974147,NYUP,5,Cold,,Northeast +Steuben,NY,127,36101,2,1,92162,6A,974148,NYUP,6,Cold,,Northeast +Suffolk,NY,128,36103,2,2,1523170,4A,974149,NYCW,4,Mixed-Humid,,Northeast +Sullivan,NY,127,36105,2,1,79920,6A,974150,NYUP,6,Cold,,Northeast +Tioga,NY,127,36107,2,1,47715,5A,974151,NYUP,5,Cold,,Northeast +Tompkins,NY,127,36109,2,1,103558,6A,974152,NYUP,6,Cold,,Northeast +Ulster,NY,127,36111,2,2,182333,6A,974153,NYUP,6,Cold,,Northeast +Warren,NY,127,36113,2,1,65380,6A,974154,NYUP,6,Cold,,Northeast +Washington,NY,127,36115,2,1,60047,5A,974155,NYUP,5,Cold,,Northeast +Wayne,NY,127,36117,2,2,90829,5A,974156,NYUP,5,Cold,,Northeast +Westchester,NY,127,36119,2,3,990817,4A,974157,NYCW,4,Mixed-Humid,,Northeast +Wyoming,NY,127,36121,2,1,39532,6A,974158,NYUP,6,Cold,,Northeast +Yates,NY,127,36123,2,2,24472,5A,974159,NYUP,5,Cold,,Northeast +Alamance,NC,98,37001,5,4,179165,4A,1008531,SRCA,4,Mixed-Humid,,South +Alexander,NC,97,37003,5,4,36473,4A,1008532,SRCA,4,Mixed-Humid,,South +Alleghany,NC,97,37005,5,3,11342,5A,1008533,SRCA,5,Cold,,South +Anson,NC,97,37007,5,4,21897,3A,1008534,SRCA,3,Mixed-Humid,,South +Ashe,NC,97,37009,5,3,27063,5A,1008535,SRCA,5,Cold,,South +Avery,NC,97,37011,5,3,17561,5A,1008536,SRCA,5,Cold,,South +Beaufort,NC,98,37013,5,4,44481,3A,1026333,PJMD,3,Mixed-Humid,,South +Bertie,NC,98,37015,5,4,16922,4A,1026334,PJMD,4,Mixed-Humid,,South +Bladen,NC,98,37017,5,4,29484,3A,1026336,SRCA,3,Mixed-Humid,,South +Brunswick,NC,98,37019,5,4,159964,3A,1026340,SRCA,3,Hot-Humid,,South +Buncombe,NC,97,37021,5,3,275901,4A,1008538,SRCA,4,Mixed-Humid,,South +Burke,NC,97,37023,5,4,88338,4A,1008539,SRCA,4,Mixed-Humid,,South +Cabarrus,NC,97,37025,5,4,240016,3A,1008540,SRCA,3,Mixed-Humid,,South +Caldwell,NC,97,37027,5,4,80574,4A,1008541,SRCA,4,Mixed-Humid,,South +Camden,NC,98,37029,5,4,11137,3A,1026335,PJMD,3,Mixed-Humid,,South +Carteret,NC,98,37031,5,4,69615,3A,1026337,SRCA,3,Hot-Humid,,South +Caswell,NC,98,37033,5,4,22807,4A,1008542,SRCA,4,Mixed-Humid,,South +Catawba,NC,97,37035,5,4,164645,4A,1008543,SRCA,4,Mixed-Humid,,South +Chatham,NC,98,37037,5,4,81624,4A,1008544,SRCA,4,Mixed-Humid,,South +Cherokee,NC,97,37039,5,3,29959,4A,1008545,SRCA,4,Mixed-Humid,,South +Chowan,NC,98,37041,5,4,13891,3A,1025822,PJMD,3,Mixed-Humid,,South +Clay,NC,97,37043,5,3,11864,4A,1008546,SRCA,4,Mixed-Humid,,South +Cleveland,NC,97,37045,5,4,101378,4A,1008547,SRCA,4,Mixed-Humid,,South +Columbus,NC,98,37047,5,4,50121,3A,1026339,SRCA,3,Hot-Humid,,South +Craven,NC,98,37049,5,4,102391,3A,1026123,SRCA,3,Mixed-Humid,,South +Cumberland,NC,98,37051,5,4,337890,3A,1026124,SRCA,3,Mixed-Humid,,South +Currituck,NC,98,37053,5,4,31593,3A,1026125,PJMD,3,Mixed-Humid,,South +Dare,NC,98,37055,5,4,38110,3A,1026133,PJMD,3,Mixed-Humid,,South +Davidson,NC,97,37057,5,4,174804,3A,1008548,SRCA,3,Mixed-Humid,,South +Davie,NC,97,37059,5,4,44599,4A,1008549,SRCA,4,Mixed-Humid,,South +Duplin,NC,98,37061,5,4,49520,3A,1026132,SRCA,3,Mixed-Humid,,South +Durham,NC,98,37063,5,4,336892,4A,1008550,SRCA,4,Mixed-Humid,,South +Edgecombe,NC,98,37065,5,4,48832,3A,1008551,PJMD,3,Mixed-Humid,,South +Forsyth,NC,97,37067,5,4,392921,4A,1008552,SRCA,4,Mixed-Humid,,South +Franklin,NC,98,37069,5,4,77001,4A,1008553,SRCA,4,Mixed-Humid,,South +Gaston,NC,97,37071,5,4,237242,3A,1008554,SRCA,3,Mixed-Humid,,South +Gates,NC,98,37073,5,4,10343,4A,1026126,PJMD,4,Mixed-Humid,,South +Graham,NC,97,37075,5,3,8052,4A,1008555,SRCA,4,Mixed-Humid,,South +Granville,NC,98,37077,5,4,62192,4A,1008556,PJMD,4,Mixed-Humid,,South +Greene,NC,98,37079,5,4,20530,3A,1008557,SRCA,3,Mixed-Humid,,South +Guilford,NC,97,37081,5,4,549866,4A,1008558,SRCA,4,Mixed-Humid,,South +Halifax,NC,98,37083,5,4,47298,4A,1008559,PJMD,4,Mixed-Humid,,South +Harnett,NC,98,37085,5,4,141477,4A,1008560,SRCA,4,Mixed-Humid,,South +Haywood,NC,97,37087,5,3,62969,4A,1008561,SRCA,4,Mixed-Humid,,South +Henderson,NC,97,37089,5,3,119230,4A,1008562,SRCA,4,Mixed-Humid,,South +Hertford,NC,98,37091,5,4,19453,4A,1026127,PJMD,4,Mixed-Humid,,South +Hoke,NC,98,37093,5,4,54446,3A,1008563,SRCA,3,Mixed-Humid,,South +Hyde,NC,98,37095,5,4,4607,3A,1008564,PJMD,3,Mixed-Humid,,South +Iredell,NC,97,37097,5,4,199710,4A,1008565,SRCA,4,Mixed-Humid,,South +Jackson,NC,97,37099,5,3,44574,4A,1008566,SRCA,4,Mixed-Humid,,South +Johnston,NC,98,37101,5,4,241955,3A,1026327,SRCA,3,Mixed-Humid,,South +Jones,NC,98,37103,5,4,9401,3A,1026338,SRCA,3,Mixed-Humid,,South +Lee,NC,98,37105,5,4,67059,4A,1008567,SRCA,4,Mixed-Humid,,South +Lenoir,NC,98,37107,5,4,54895,3A,1008568,SRCA,3,Mixed-Humid,,South +Lincoln,NC,97,37109,5,4,95675,4A,1008569,SRCA,4,Mixed-Humid,,South +McDowell,NC,97,37111,5,4,44893,4A,1025836,SRCA,4,Mixed-Humid,,South +Macon,NC,97,37113,5,3,38412,4A,1025833,SRCA,4,Mixed-Humid,,South +Madison,NC,97,37115,5,3,22071,4A,1025834,SRCA,4,Mixed-Humid,,South +Martin,NC,98,37117,5,4,21447,3A,1026328,PJMD,3,Mixed-Humid,,South +Mecklenburg,NC,97,37119,5,4,1163701,3A,1008570,SRCA,3,Mixed-Humid,,South +Mitchell,NC,97,37121,5,3,14999,5A,1008571,SRCA,5,Cold,,South +Montgomery,NC,98,37123,5,4,26085,3A,1008572,SRCA,3,Mixed-Humid,,South +Moore,NC,98,37125,5,4,106898,3A,1008573,SRCA,3,Mixed-Humid,,South +Nash,NC,98,37127,5,4,96551,4A,1008574,PJMD,4,Mixed-Humid,,South +New Hanover,NC,98,37129,5,4,238852,3A,1026329,SRCA,3,Hot-Humid,,South +Northampton,NC,98,37131,5,4,16715,4A,1008575,PJMD,4,Mixed-Humid,,South +Onslow,NC,98,37133,5,4,213676,3A,1026341,SRCA,3,Hot-Humid,,South +Orange,NC,98,37135,5,4,150626,4A,1008576,SRCA,4,Mixed-Humid,,South +Pamlico,NC,98,37137,5,4,12423,3A,1023355,SRCA,3,Mixed-Humid,,South +Pasquotank,NC,98,37139,5,4,41444,3A,1026330,PJMD,3,Mixed-Humid,,South +Pender,NC,98,37141,5,4,68521,3A,1026129,SRCA,3,Hot-Humid,,South +Perquimans,NC,98,37143,5,4,13377,3A,1025841,PJMD,3,Mixed-Humid,,South +Person,NC,98,37145,5,4,39737,4A,1008577,PJMD,4,Mixed-Humid,,South +Pitt,NC,98,37147,5,4,175119,3A,1008578,PJMD,3,Mixed-Humid,,South +Polk,NC,97,37149,5,4,20060,4A,1008579,SRCA,4,Mixed-Humid,,South +Randolph,NC,97,37151,5,4,147458,3A,1008580,SRCA,3,Mixed-Humid,,South +Richmond,NC,98,37153,5,4,42324,3A,1008581,SRCA,3,Mixed-Humid,,South +Robeson,NC,98,37155,5,4,117365,3A,1026130,SRCA,3,Mixed-Humid,,South +Rockingham,NC,97,37157,5,4,92518,4A,1008582,SRCA,4,Mixed-Humid,,South +Rowan,NC,97,37159,5,4,151661,3A,1008583,SRCA,3,Mixed-Humid,,South +Rutherford,NC,97,37161,5,4,65507,4A,1008584,SRCA,4,Mixed-Humid,,South +Sampson,NC,98,37163,5,4,59601,3A,1026131,SRCA,3,Mixed-Humid,,South +Scotland,NC,98,37165,5,4,34376,3A,1008585,SRCA,3,Mixed-Humid,,South +Stanly,NC,97,37167,5,4,65699,3A,1025844,SRCA,3,Mixed-Humid,,South +Stokes,NC,97,37169,5,3,45532,4A,1008586,SRCA,4,Mixed-Humid,,South +Surry,NC,97,37171,5,3,71462,4A,1008587,SRCA,4,Mixed-Humid,,South +Swain,NC,97,37173,5,3,13916,4A,1008588,SRCA,4,Mixed-Humid,,South +Transylvania,NC,97,37175,5,3,33549,4A,1008589,SRCA,4,Mixed-Humid,,South +Tyrrell,NC,98,37177,5,4,3461,3A,1026332,PJMD,3,Mixed-Humid,,South +Union,NC,97,37179,5,4,256452,3A,1008590,SRCA,3,Mixed-Humid,,South +Vance,NC,98,37181,5,4,42301,4A,1008591,SRCA,4,Mixed-Humid,,South +Wake,NC,98,37183,5,4,1190275,4A,1008592,SRCA,4,Mixed-Humid,,South +Warren,NC,98,37185,5,4,18836,4A,1008593,PJMD,4,Mixed-Humid,,South +Washington,NC,98,37187,5,4,10713,3A,1026331,PJMD,3,Mixed-Humid,,South +Watauga,NC,97,37189,5,3,54748,5A,1008594,SRCA,5,Cold,,South +Wayne,NC,98,37191,5,4,118686,3A,1026128,SRCA,3,Mixed-Humid,,South +Wilkes,NC,97,37193,5,3,66013,4A,1008595,SRCA,4,Mixed-Humid,,South +Wilson,NC,98,37195,5,4,78970,3A,1008596,SRCA,3,Mixed-Humid,,South +Yadkin,NC,97,37197,5,4,37774,4A,1008597,SRCA,4,Mixed-Humid,,South +Yancey,NC,97,37199,5,3,18938,5A,1008598,SRCA,5,Cold,,South +Adams,ND,36,38001,4,1,2163,6A,1034210,SPPN,6,Cold,,Midwest +Barnes,ND,37,38003,4,1,10726,7,1034225,SPPN,7,Very Cold,,Midwest +Benson,ND,37,38005,4,1,5745,7,1034216,SPPN,7,Very Cold,,Midwest +Billings,ND,36,38007,4,1,1034,6A,1035616,SPPN,6,Cold,,Midwest +Bottineau,ND,37,38009,4,1,6349,7,1034227,SPPN,7,Very Cold,,Midwest +Bowman,ND,36,38011,4,1,2867,6A,1035619,SPPN,6,Cold,,Midwest +Burke,ND,36,38013,4,1,2134,7,1034235,SPPN,7,Very Cold,,Midwest +Burleigh,ND,36,38015,4,1,100012,6A,1035614,SPPN,6,Cold,,Midwest +Cass,ND,37,38017,4,1,196362,7,1034226,SPPN,7,Very Cold,,Midwest +Cavalier,ND,37,38019,4,1,3596,7,1035304,MISW,7,Very Cold,,Midwest +Dickey,ND,36,38021,4,1,4900,6A,1035622,SPPN,6,Cold,,Midwest +Divide,ND,36,38023,4,1,2135,7,1034234,SPPN,7,Very Cold,,Midwest +Dunn,ND,36,38025,4,1,4019,6A,1035623,SPPN,6,Cold,,Midwest +Eddy,ND,37,38027,4,1,2263,7,1034222,SPPN,7,Very Cold,,Midwest +Emmons,ND,36,38029,4,1,3224,6A,1035615,SPPN,6,Cold,,Midwest +Foster,ND,37,38031,4,1,3309,7,1034223,SPPN,7,Very Cold,,Midwest +Golden Valley,ND,36,38033,4,1,1743,6A,1035617,SPPN,6,Cold,,Midwest +Grand Forks,ND,37,38035,4,1,72708,7,1034218,SPPN,7,Very Cold,,Midwest +Grant,ND,36,38037,4,1,2215,6A,1035300,SPPN,6,Cold,,Midwest +Griggs,ND,37,38039,4,1,2248,7,1034219,SPPN,7,Very Cold,,Midwest +Hettinger,ND,36,38041,4,1,2415,6A,1034209,SPPN,6,Cold,,Midwest +Kidder,ND,37,38043,4,1,2342,7,1034206,SPPN,7,Very Cold,,Midwest +LaMoure,ND,37,38045,4,1,4096,6A,1035621,SPPN,6,Cold,,Midwest +Logan,ND,36,38047,4,1,1869,6A,1035620,SPPN,6,Cold,,Midwest +McHenry,ND,37,38049,4,1,5131,7,1035305,SPPN,7,Very Cold,,Midwest +McIntosh,ND,36,38051,4,1,2488,6A,1034211,SPPN,6,Cold,,Midwest +McKenzie,ND,36,38053,4,1,14252,6A,1035299,SPPN,6,Cold,,Midwest +McLean,ND,37,38055,4,1,9832,7,1034232,SPPN,7,Very Cold,,Midwest +Mercer,ND,36,38057,4,1,8309,6A,1034233,SPPN,6,Cold,,Midwest +Morton,ND,36,38059,4,1,33895,6A,1034207,SPPN,6,Cold,,Midwest +Mountrail,ND,36,38061,4,1,9383,7,1035307,SPPN,7,Very Cold,,Midwest +Nelson,ND,37,38063,4,1,2991,7,1034217,SPPN,7,Very Cold,,Midwest +Oliver,ND,36,38065,4,1,1879,6A,1034205,SPPN,6,Cold,,Midwest +Pembina,ND,37,38067,4,1,6661,7,1034212,MISW,7,Very Cold,,Midwest +Pierce,ND,37,38069,4,1,3902,7,1034230,SPPN,7,Very Cold,,Midwest +Ramsey,ND,37,38071,4,1,11463,7,1034215,SPPN,7,Very Cold,,Midwest +Ransom,ND,37,38073,4,1,5603,6A,1035301,SPPN,6,Cold,,Midwest +Renville,ND,36,38075,4,1,2279,7,1034229,SPPN,7,Very Cold,,Midwest +Richland,ND,37,38077,4,1,16558,6A,1035302,SPPN,6,Cold,,Midwest +Rolette,ND,37,38079,4,1,11728,7,1034228,MISW,7,Very Cold,,Midwest +Sargent,ND,37,38081,4,1,3776,6A,1035303,SPPN,6,Cold,,Midwest +Sheridan,ND,37,38083,4,1,1266,7,1034203,SPPN,7,Very Cold,,Midwest +Sioux,ND,36,38085,4,1,3643,6A,1034208,SPPN,6,Cold,,Midwest +Slope,ND,36,38087,4,1,674,6A,1035896,SPPN,6,Cold,,Midwest +Stark,ND,36,38089,4,1,33001,6A,1035618,SPPN,6,Cold,,Midwest +Steele,ND,37,38091,4,1,1782,7,1034220,SPPN,7,Very Cold,,Midwest +Stutsman,ND,37,38093,4,1,21392,7,1034224,SPPN,7,Very Cold,,Midwest +Towner,ND,37,38095,4,1,2030,7,1034213,SPPN,7,Very Cold,,Midwest +Traill,ND,37,38097,4,1,7908,7,1034221,SPPN,7,Very Cold,,Midwest +Walsh,ND,37,38099,4,1,10305,7,1034214,MISW,7,Very Cold,,Midwest +Ward,ND,37,38101,4,1,68332,7,1034231,SPPN,7,Very Cold,,Midwest +Wells,ND,37,38103,4,1,3876,7,1034204,SPPN,7,Very Cold,,Midwest +Williams,ND,36,38105,4,1,39113,7,1035306,MISW,7,Very Cold,,Midwest +Adams,OH,112,39001,3,3,27521,4A,1074014,PJMW,4,Mixed-Humid,,Midwest +Allen,OH,112,39003,3,2,100838,5A,1074015,PJMW,5,Cold,,Midwest +Ashland,OH,112,39005,3,2,52190,5A,1074016,PJMW,5,Cold,,Midwest +Ashtabula,OH,111,39007,3,2,96845,5A,1074017,PJMW,5,Cold,,Midwest +Athens,OH,112,39009,3,3,62706,5A,1074018,PJMW,5,Cold,,Midwest +Auglaize,OH,112,39011,3,2,46050,5A,1074019,PJMW,5,Cold,,Midwest +Belmont,OH,112,39013,3,2,64918,5A,1065575,PJMW,5,Cold,,Midwest +Brown,OH,114,39015,3,3,43777,4A,1074020,PJMW,4,Mixed-Humid,,Midwest +Butler,OH,114,39017,3,2,393043,5A,1074021,PJMW,5,Cold,,Midwest +Carroll,OH,112,39019,3,2,26758,5A,1074022,PJMW,5,Cold,,Midwest +Champaign,OH,112,39021,3,2,38845,5A,1074023,PJMW,5,Cold,,Midwest +Clark,OH,113,39023,3,2,134610,5A,1074024,PJMW,5,Cold,,Midwest +Clermont,OH,114,39025,3,3,211972,4A,1074025,PJMW,4,Mixed-Humid,,Midwest +Clinton,OH,113,39027,3,2,41938,5A,1074026,PJMW,5,Cold,,Midwest +Columbiana,OH,111,39029,3,2,100182,5A,1074027,PJMW,5,Cold,,Midwest +Coshocton,OH,112,39031,3,2,36869,5A,1074028,PJMW,5,Cold,,Midwest +Crawford,OH,112,39033,3,2,41529,5A,1074029,PJMW,5,Cold,,Midwest +Cuyahoga,OH,111,39035,3,2,1233088,5A,1074030,PJMW,5,Cold,,Midwest +Darke,OH,112,39037,3,2,51415,5A,1074031,PJMW,5,Cold,,Midwest +Defiance,OH,112,39039,3,2,38315,5A,1074032,PJMW,5,Cold,,Midwest +Delaware,OH,112,39041,3,2,231636,5A,1074033,PJMW,5,Cold,,Midwest +Erie,OH,111,39043,3,2,74035,5A,1074034,PJMW,5,Cold,,Midwest +Fairfield,OH,112,39045,3,2,165360,5A,1074035,PJMW,5,Cold,,Midwest +Fayette,OH,113,39047,3,2,28817,5A,1074036,PJMW,5,Cold,,Midwest +Franklin,OH,112,39049,3,2,1326063,5A,1074037,PJMW,5,Cold,,Midwest +Fulton,OH,111,39051,3,2,42007,5A,1074038,PJMW,5,Cold,,Midwest +Gallia,OH,112,39053,3,3,28986,4A,1074039,PJMW,4,Mixed-Humid,,Midwest +Geauga,OH,111,39055,3,2,95407,5A,1074040,PJMW,5,Cold,,Midwest +Greene,OH,113,39057,3,2,169691,5A,1074041,PJMW,5,Cold,,Midwest +Guernsey,OH,112,39059,3,2,38089,5A,1074042,PJMW,5,Cold,,Midwest +Hamilton,OH,114,39061,3,3,827058,4A,1074043,PJMW,4,Mixed-Humid,,Midwest +Hancock,OH,112,39063,3,2,74704,5A,1074044,PJMW,5,Cold,,Midwest +Hardin,OH,112,39065,3,2,30368,5A,1074045,PJMW,5,Cold,,Midwest +Harrison,OH,112,39067,3,2,14159,5A,1074046,PJMW,5,Cold,,Midwest +Henry,OH,112,39069,3,2,27520,5A,1074047,PJMW,5,Cold,,Midwest +Highland,OH,112,39071,3,3,43614,5A,1074048,PJMW,5,Cold,,Midwest +Hocking,OH,112,39073,3,2,27540,5A,1074049,PJMW,5,Cold,,Midwest +Holmes,OH,112,39075,3,2,44386,5A,1074050,PJMW,5,Cold,,Midwest +Huron,OH,112,39077,3,2,58199,5A,1074051,PJMW,5,Cold,,Midwest +Jackson,OH,112,39079,3,3,32606,5A,1074052,PJMW,5,Cold,,Midwest +Jefferson,OH,112,39081,3,2,64026,5A,1074053,PJMW,5,Cold,,Midwest +Knox,OH,112,39083,3,2,63320,5A,1074054,PJMW,5,Cold,,Midwest +Lake,OH,111,39085,3,2,231640,5A,1074055,PJMW,5,Cold,,Midwest +Lawrence,OH,112,39087,3,3,56118,4A,1074056,PJMW,4,Mixed-Humid,,Midwest +Licking,OH,112,39089,3,2,183201,5A,1074057,PJMW,5,Cold,,Midwest +Logan,OH,112,39091,3,2,46057,5A,1074058,PJMW,5,Cold,,Midwest +Lorain,OH,111,39093,3,2,317910,5A,1074059,PJMW,5,Cold,,Midwest +Lucas,OH,111,39095,3,2,425484,5A,1074060,PJMW,5,Cold,,Midwest +Madison,OH,113,39097,3,2,44602,5A,1074061,PJMW,5,Cold,,Midwest +Mahoning,OH,111,39099,3,2,225596,5A,1074062,PJMW,5,Cold,,Midwest +Marion,OH,112,39101,3,2,64851,5A,1074063,PJMW,5,Cold,,Midwest +Medina,OH,111,39103,3,2,184042,5A,1074064,PJMW,5,Cold,,Midwest +Meigs,OH,112,39105,3,3,21767,5A,1074065,PJMW,5,Cold,,Midwest +Mercer,OH,112,39107,3,2,42439,5A,1074066,PJMW,5,Cold,,Midwest +Miami,OH,113,39109,3,2,110876,5A,1074067,PJMW,5,Cold,,Midwest +Monroe,OH,112,39111,3,2,13153,5A,1074068,PJMW,5,Cold,,Midwest +Montgomery,OH,113,39113,3,2,533796,5A,1074069,PJMW,5,Cold,,Midwest +Morgan,OH,112,39115,3,2,13646,5A,1074070,PJMW,5,Cold,,Midwest +Morrow,OH,112,39117,3,2,35595,5A,1074071,PJMW,5,Cold,,Midwest +Muskingum,OH,112,39119,3,2,86305,5A,1074072,PJMW,5,Cold,,Midwest +Noble,OH,112,39121,3,2,14311,5A,1074073,PJMW,5,Cold,,Midwest +Ottawa,OH,111,39123,3,2,39803,5A,1074074,PJMW,5,Cold,,Midwest +Paulding,OH,112,39125,3,2,18706,5A,1074075,PJMW,5,Cold,,Midwest +Perry,OH,112,39127,3,2,35551,5A,1074076,PJMW,5,Cold,,Midwest +Pickaway,OH,112,39129,3,2,61086,5A,1074077,PJMW,5,Cold,,Midwest +Pike,OH,112,39131,3,3,27001,4A,1074078,PJMW,4,Mixed-Humid,,Midwest +Portage,OH,111,39133,3,2,162665,5A,1074079,PJMW,5,Cold,,Midwest +Preble,OH,113,39135,3,2,40556,5A,1074080,PJMW,5,Cold,,Midwest +Putnam,OH,112,39137,3,2,34199,5A,1074081,PJMW,5,Cold,,Midwest +Richland,OH,112,39139,3,2,125064,5A,1074082,PJMW,5,Cold,,Midwest +Ross,OH,112,39141,3,2,76501,5A,1074083,PJMW,5,Cold,,Midwest +Sandusky,OH,111,39143,3,2,58709,5A,1074084,PJMW,5,Cold,,Midwest +Scioto,OH,112,39145,3,3,71969,4A,1074085,PJMW,4,Mixed-Humid,,Midwest +Seneca,OH,112,39147,3,2,54527,5A,1074086,PJMW,5,Cold,,Midwest +Shelby,OH,112,39149,3,2,47765,5A,1074087,PJMW,5,Cold,,Midwest +Stark,OH,111,39151,3,2,372716,5A,1065576,PJMW,5,Cold,,Midwest +Summit,OH,111,39153,3,2,535733,5A,1074088,PJMW,5,Cold,,Midwest +Trumbull,OH,111,39155,3,2,200373,5A,1074089,PJMW,5,Cold,,Midwest +Tuscarawas,OH,112,39157,3,2,91874,5A,1074090,PJMW,5,Cold,,Midwest +Union,OH,112,39159,3,2,69637,5A,1074091,PJMW,5,Cold,,Midwest +Van Wert,OH,112,39161,3,2,28704,5A,1074092,PJMW,5,Cold,,Midwest +Vinton,OH,112,39163,3,3,12474,5A,1074093,PJMW,5,Cold,,Midwest +Warren,OH,114,39165,3,2,252148,5A,1074094,PJMW,5,Cold,,Midwest +Washington,OH,112,39167,3,3,58577,4A,1074095,PJMW,4,Mixed-Humid,,Midwest +Wayne,OH,112,39169,3,2,116510,5A,1074096,PJMW,5,Cold,,Midwest +Williams,OH,112,39171,3,2,36591,5A,1074097,PJMW,5,Cold,,Midwest +Wood,OH,111,39173,3,2,132650,5A,1074098,PJMW,5,Cold,,Midwest +Wyandot,OH,112,39175,3,2,21457,5A,1074099,PJMW,5,Cold,,Midwest +Adair,OK,51,40001,7,4,19627,3A,1101788,SPPS,3,Mixed-Humid,,South +Alfalfa,OK,50,40003,7,3,5673,3A,1101789,SPPS,3,Mixed-Humid,,South +Atoka,OK,50,40005,7,5,14525,3A,1101790,SPPS,3,Mixed-Humid,,South +Beaver,OK,49,40007,7,3,5018,4B,1101791,SPPS,4,Mixed-Dry,,South +Beckham,OK,50,40009,7,4,22042,3A,1101792,SPPS,3,Mixed-Humid,,South +Blaine,OK,50,40011,7,4,8539,3A,1101793,SPPS,3,Mixed-Humid,,South +Bryan,OK,50,40013,7,5,48967,3A,1101794,SPPS,3,Mixed-Humid,,South +Caddo,OK,50,40015,7,4,26214,3A,1101795,SPPS,3,Mixed-Humid,,South +Canadian,OK,50,40017,7,4,175829,3A,1101796,SPPS,3,Mixed-Humid,,South +Carter,OK,50,40019,7,5,48596,3A,1101797,SPPS,3,Mixed-Humid,,South +Cherokee,OK,51,40021,7,4,48185,3A,1101798,SPPS,3,Mixed-Humid,,South +Choctaw,OK,50,40023,7,5,14276,3A,1101799,SPPS,3,Mixed-Humid,,South +Cimarron,OK,49,40025,7,3,2191,4B,1101800,SPPS,4,Mixed-Dry,,South +Cleveland,OK,50,40027,7,4,301193,3A,1101801,SPPS,3,Mixed-Humid,,South +Coal,OK,50,40029,7,4,5266,3A,1101802,SPPS,3,Mixed-Humid,,South +Comanche,OK,50,40031,7,5,121574,3A,1101803,SPPS,3,Mixed-Humid,,South +Cotton,OK,50,40033,7,5,5427,3A,1101804,SPPS,3,Mixed-Humid,,South +Craig,OK,51,40035,7,3,14494,3A,1101805,SPPS,3,Mixed-Humid,,South +Creek,OK,51,40037,7,4,73332,3A,1101806,SPPS,3,Mixed-Humid,,South +Custer,OK,50,40039,7,4,28266,3A,1101807,SPPS,3,Mixed-Humid,,South +Delaware,OK,51,40041,7,4,41703,3A,1101808,SPPS,3,Mixed-Humid,,South +Dewey,OK,50,40043,7,3,4286,3A,1101809,SPPS,3,Mixed-Humid,,South +Ellis,OK,50,40045,7,3,3648,3A,1101810,SPPS,3,Mixed-Humid,,South +Garfield,OK,50,40047,7,5,62023,3A,1101811,SPPS,3,Mixed-Humid,,South +Garvin,OK,50,40049,7,5,25865,3A,1101812,SPPS,3,Mixed-Humid,,South +Grady,OK,50,40051,7,5,57375,3A,1101813,SPPS,3,Mixed-Humid,,South +Grant,OK,50,40053,7,3,4083,3A,1101814,SPPS,3,Mixed-Humid,,South +Greer,OK,50,40055,7,5,5466,3A,1101815,SPPS,3,Mixed-Humid,,South +Harmon,OK,50,40057,7,5,2392,3A,1101816,SPPS,3,Mixed-Humid,,South +Harper,OK,50,40059,7,3,3190,3A,1101817,SPPS,3,Mixed-Humid,,South +Haskell,OK,50,40061,7,5,11832,3A,1101818,SPPS,3,Mixed-Humid,,South +Hughes,OK,50,40063,7,4,13436,3A,1101819,SPPS,3,Mixed-Humid,,South +Jackson,OK,50,40065,7,5,24669,3A,1101820,SPPS,3,Mixed-Humid,,South +Jefferson,OK,50,40067,7,5,5347,3A,1101821,SPPS,3,Mixed-Humid,,South +Johnston,OK,50,40069,7,5,10216,3A,1101822,SPPS,3,Mixed-Humid,,South +Kay,OK,50,40071,7,3,43641,3A,1101823,SPPS,3,Mixed-Humid,,South +Kingfisher,OK,50,40073,7,5,15481,3A,1101824,SPPS,3,Mixed-Humid,,South +Kiowa,OK,50,40075,7,5,8398,3A,1101825,SPPS,3,Mixed-Humid,,South +Latimer,OK,50,40077,7,4,9526,3A,1101826,SPPS,3,Mixed-Humid,,South +Le Flore,OK,50,40079,7,4,49596,3A,1101827,SPPS,3,Mixed-Humid,,South +Lincoln,OK,50,40081,7,4,34562,3A,1101828,SPPS,3,Mixed-Humid,,South +Logan,OK,50,40083,7,5,53029,3A,1101829,SPPS,3,Mixed-Humid,,South +Love,OK,50,40085,7,5,10296,3A,1101830,SPPS,3,Mixed-Humid,,South +McClain,OK,50,40087,7,5,47072,3A,1101834,SPPS,3,Mixed-Humid,,South +McCurtain,OK,50,40089,7,4,30660,3A,1101835,SPPS,3,Mixed-Humid,,South +McIntosh,OK,50,40091,7,5,19603,3A,1101836,SPPS,3,Mixed-Humid,,South +Major,OK,50,40093,7,3,7581,3A,1101831,SPPS,3,Mixed-Humid,,South +Marshall,OK,50,40095,7,5,15970,3A,1101832,SPPS,3,Mixed-Humid,,South +Mayes,OK,51,40097,7,4,39889,3A,1101833,SPPS,3,Mixed-Humid,,South +Murray,OK,50,40099,7,4,13754,3A,1101837,SPPS,3,Mixed-Humid,,South +Muskogee,OK,51,40101,7,4,66677,3A,1101838,SPPS,3,Mixed-Humid,,South +Noble,OK,50,40103,7,4,10832,3A,1101839,SPPS,3,Mixed-Humid,,South +Nowata,OK,51,40105,7,3,9438,3A,1101840,SPPS,3,Mixed-Humid,,South +Okfuskee,OK,50,40107,7,4,11300,3A,1101841,SPPS,3,Mixed-Humid,,South +Oklahoma,OK,50,40109,7,4,808866,3A,1101842,SPPS,3,Mixed-Humid,,South +Okmulgee,OK,51,40111,7,4,37035,3A,1101843,SPPS,3,Mixed-Humid,,South +Osage,OK,51,40113,7,4,46130,3A,1101844,SPPS,3,Mixed-Humid,,South +Ottawa,OK,51,40115,7,3,30287,3A,1101845,SPPS,3,Mixed-Humid,,South +Pawnee,OK,50,40117,7,4,15864,3A,1101846,SPPS,3,Mixed-Humid,,South +Payne,OK,50,40119,7,4,83352,3A,1101847,SPPS,3,Mixed-Humid,,South +Pittsburg,OK,50,40121,7,4,43479,3A,1101848,SPPS,3,Mixed-Humid,,South +Pontotoc,OK,50,40123,7,4,38396,3A,1101849,SPPS,3,Mixed-Humid,,South +Pottawatomie,OK,50,40125,7,4,73791,3A,1101850,SPPS,3,Mixed-Humid,,South +Pushmataha,OK,50,40127,7,4,10800,3A,1101851,SPPS,3,Mixed-Humid,,South +Roger Mills,OK,50,40129,7,3,3295,3A,1101852,SPPS,3,Mixed-Humid,,South +Rogers,OK,51,40131,7,3,100248,3A,1101853,SPPS,3,Mixed-Humid,,South +Seminole,OK,50,40133,7,5,23565,3A,1101854,SPPS,3,Mixed-Humid,,South +Sequoyah,OK,50,40135,7,4,40291,3A,1101855,SPPS,3,Mixed-Humid,,South +Stephens,OK,50,40137,7,5,44014,3A,1101856,SPPS,3,Mixed-Humid,,South +Texas,OK,49,40139,7,3,20371,4B,1101857,SPPS,4,Mixed-Dry,,South +Tillman,OK,50,40141,7,5,6869,3A,1101858,SPPS,3,Mixed-Humid,,South +Tulsa,OK,51,40143,7,4,682868,3A,1101859,SPPS,3,Mixed-Humid,,South +Wagoner,OK,51,40145,7,4,89280,3A,1101860,SPPS,3,Mixed-Humid,,South +Washington,OK,51,40147,7,3,53706,3A,1101861,SPPS,3,Mixed-Humid,,South +Washita,OK,50,40149,7,4,10736,3A,1101862,SPPS,3,Mixed-Humid,,South +Woods,OK,50,40151,7,5,8564,3A,1101863,SPPS,3,Mixed-Humid,,South +Woodward,OK,50,40153,7,3,19947,3A,1101864,SPPS,3,Mixed-Humid,,South +Baker,OR,7,41001,9,1,16912,5B,1135845,NWPP,5,Cold,,West +Benton,OR,5,41003,9,3,97713,4C,1155126,NWPP,4,Marine,,West +Clackamas,OR,5,41005,9,3,423173,4C,1155127,NWPP,4,Marine,,West +Clatsop,OR,5,41007,9,3,41102,4C,1135846,NWPP,4,Marine,,West +Columbia,OR,5,41009,9,3,53880,4C,1135847,NWPP,4,Marine,,West +Coos,OR,6,41011,9,3,64212,4C,1135848,NWPP,4,Marine,,West +Crook,OR,5,41013,9,2,26952,5B,1155128,NWPP,5,Cold,,West +Curry,OR,6,41015,9,3,23296,4C,1155129,NWPP,4,Marine,,West +Deschutes,OR,5,41017,9,2,208513,5B,1155130,NWPP,5,Cold,,West +Douglas,OR,6,41019,9,3,112435,4C,1135849,NWPP,4,Marine,,West +Gilliam,OR,5,41021,9,2,2026,5B,1135850,NWPP,5,Cold,,West +Grant,OR,5,41023,9,1,7215,5B,1135851,NWPP,5,Cold,,West +Harney,OR,7,41025,9,1,7440,5B,1135852,NWPP,5,Cold,,West +Hood River,OR,5,41027,9,2,23745,5B,1155131,NWPP,5,Cold,,West +Jackson,OR,6,41029,9,3,220768,4C,1135853,NWPP,4,Marine,,West +Jefferson,OR,5,41031,9,2,25454,5B,1155132,NWPP,5,Cold,,West +Josephine,OR,6,41033,9,3,87821,4C,1155133,NWPP,4,Marine,,West +Klamath,OR,6,41035,9,2,70003,5B,1155134,NWPP,5,Cold,,West +Lake,OR,7,41037,9,1,8293,5B,1135854,NWPP,5,Cold,,West +Lane,OR,5,41039,9,3,381181,4C,1135855,NWPP,4,Marine,,West +Lincoln,OR,5,41041,9,3,50821,4C,1135856,NWPP,4,Marine,,West +Linn,OR,5,41043,9,3,131496,4C,1135857,NWPP,4,Marine,,West +Malheur,OR,7,41045,9,2,32044,5B,1135858,NWPP,5,Cold,,West +Marion,OR,5,41047,9,3,346741,4C,1135859,NWPP,4,Marine,,West +Morrow,OR,5,41049,9,2,12302,5B,1135860,NWPP,5,Cold,,West +Multnomah,OR,5,41051,9,3,789698,4C,1135861,NWPP,4,Marine,,West +Polk,OR,5,41053,9,3,89805,4C,1135862,NWPP,4,Marine,,West +Sherman,OR,5,41055,9,2,1951,5B,1135863,NWPP,5,Cold,,West +Tillamook,OR,5,41057,9,3,27417,4C,1135864,NWPP,4,Marine,,West +Umatilla,OR,5,41059,9,2,80053,5B,1156673,NWPP,5,Cold,,West +Union,OR,5,41061,9,2,25944,5B,1164165,NWPP,5,Cold,,West +Wallowa,OR,5,41063,9,1,7674,5B,1155135,NWPP,5,Cold,,West +Wasco,OR,5,41065,9,2,26333,5B,1155136,NWPP,5,Cold,,West +Washington,OR,5,41067,9,3,598865,4C,1155137,NWPP,4,Marine,,West +Wheeler,OR,5,41069,9,2,1436,5B,1135865,NWPP,5,Cold,,West +Yamhill,OR,5,41071,9,3,108644,4C,1135866,NWPP,4,Marine,,West +Adams,PA,122,42001,2,3,106748,5A,1213656,PJME,5,Cold,,Northeast +Allegheny,PA,115,42003,2,2,1224825,5A,1213657,PJMW,5,Cold,,Northeast +Armstrong,PA,115,42005,2,2,64074,5A,1213658,PJMW,5,Cold,,Northeast +Beaver,PA,115,42007,2,2,165631,5A,1214112,PJMW,5,Cold,,Northeast +Bedford,PA,122,42009,2,2,47350,5A,1209171,PJMW,5,Cold,,Northeast +Berks,PA,122,42011,2,2,432821,5A,1209172,PJME,5,Cold,,Northeast +Blair,PA,122,42013,2,2,120273,5A,1213659,PJME,5,Cold,,Northeast +Bradford,PA,122,42015,2,1,59695,5A,1213660,PJME,5,Cold,,Northeast +Bucks,PA,122,42017,2,3,645984,4A,1209173,PJME,4,Mixed-Humid,,Northeast +Butler,PA,115,42019,2,2,198413,5A,1213661,PJMW,5,Cold,,Northeast +Cambria,PA,122,42021,2,2,130668,5A,1213662,PJME,5,Cold,,Northeast +Cameron,PA,119,42023,2,1,4380,6A,1213663,PJME,6,Cold,,Northeast +Carbon,PA,122,42025,2,2,65458,5A,1213664,PJME,5,Cold,,Northeast +Centre,PA,119,42027,2,2,157795,5A,1214720,PJME,5,Cold,,Northeast +Chester,PA,122,42029,2,3,549784,4A,1209174,PJME,4,Mixed-Humid,,Northeast +Clarion,PA,122,42031,2,2,36970,5A,1210234,PJME,5,Cold,,Northeast +Clearfield,PA,122,42033,2,1,77090,6A,1209175,PJME,6,Cold,,Northeast +Clinton,PA,119,42035,2,2,37607,5A,1214721,PJME,5,Cold,,Northeast +Columbia,PA,122,42037,2,2,65439,5A,1213665,PJME,5,Cold,,Northeast +Crawford,PA,122,42039,2,2,82001,5A,1213666,PJME,5,Cold,,Northeast +Cumberland,PA,122,42041,2,2,270738,5A,1209176,PJME,5,Cold,,Northeast +Dauphin,PA,122,42043,2,2,289234,5A,1213667,PJME,5,Cold,,Northeast +Delaware,PA,122,42045,2,3,576720,4A,1209177,PJME,4,Mixed-Humid,,Northeast +Elk,PA,119,42047,2,1,30198,6A,1213668,PJME,6,Cold,,Northeast +Erie,PA,122,42049,2,2,267571,5A,1209178,PJME,5,Cold,,Northeast +Fayette,PA,115,42051,2,2,123915,5A,1209179,PJMW,5,Cold,,Northeast +Forest,PA,122,42053,2,1,6449,5A,1213669,PJME,5,Cold,,Northeast +Franklin,PA,120,42055,2,3,157854,5A,1213670,PJMW,5,Cold,,Northeast +Fulton,PA,120,42057,2,2,14468,5A,1213671,PJMW,5,Cold,,Northeast +Greene,PA,115,42059,2,2,34357,5A,1214033,PJMW,5,Cold,,Northeast +Huntingdon,PA,122,42061,2,2,43514,5A,1213672,PJME,5,Cold,,Northeast +Indiana,PA,122,42063,2,2,83094,5A,1213673,PJME,5,Cold,,Northeast +Jefferson,PA,122,42065,2,1,43612,5A,1213674,PJME,5,Cold,,Northeast +Juniata,PA,122,42067,2,2,23243,5A,1209180,PJME,5,Cold,,Northeast +Lackawanna,PA,122,42069,2,2,216123,5A,1213675,PJME,5,Cold,,Northeast +Lancaster,PA,122,42071,2,3,558589,5A,1209181,PJME,5,Cold,,Northeast +Lawrence,PA,122,42073,2,2,84472,5A,1213676,PJMW,5,Cold,,Northeast +Lebanon,PA,122,42075,2,2,144252,5A,1214034,PJME,5,Cold,,Northeast +Lehigh,PA,122,42077,2,2,377754,5A,1209182,PJME,5,Cold,,Northeast +Luzerne,PA,122,42079,2,2,327388,5A,1209183,PJME,5,Cold,,Northeast +Lycoming,PA,122,42081,2,2,112724,5A,1213677,PJME,5,Cold,,Northeast +McKean,PA,122,42083,2,1,39519,6A,1210235,PJME,6,Cold,,Northeast +Mercer,PA,122,42085,2,2,108503,5A,1213678,PJMW,5,Cold,,Northeast +Mifflin,PA,122,42087,2,2,45922,5A,1213679,PJME,5,Cold,,Northeast +Monroe,PA,122,42089,2,2,166053,5A,1209184,PJME,5,Cold,,Northeast +Montgomery,PA,122,42091,2,3,868742,4A,1213680,PJME,4,Mixed-Humid,,Northeast +Montour,PA,122,42093,2,2,17860,5A,1213681,PJME,5,Cold,,Northeast +Northampton,PA,122,42095,2,2,319091,5A,1209185,PJME,5,Cold,,Northeast +Northumberland,PA,122,42097,2,2,90120,5A,1209186,PJME,5,Cold,,Northeast +Perry,PA,122,42099,2,2,46083,5A,1213682,PJME,5,Cold,,Northeast +Philadelphia,PA,122,42101,2,3,1550542,4A,1209187,PJME,4,Mixed-Humid,,Northeast +Pike,PA,122,42103,2,2,61247,5A,1213683,PJME,5,Cold,,Northeast +Potter,PA,119,42105,2,1,15999,6A,1213684,PJME,6,Cold,,Northeast +Schuylkill,PA,122,42107,2,2,143786,5A,1213685,PJME,5,Cold,,Northeast +Snyder,PA,122,42109,2,2,39717,5A,1213686,PJME,5,Cold,,Northeast +Somerset,PA,122,42111,2,2,72197,5A,1209188,PJME,5,Cold,,Northeast +Sullivan,PA,122,42113,2,2,5834,5A,1213687,PJME,5,Cold,,Northeast +Susquehanna,PA,122,42115,2,1,38109,6A,1213688,PJME,6,Cold,,Northeast +Tioga,PA,122,42117,2,1,40840,6A,1209189,PJME,6,Cold,,Northeast +Union,PA,122,42119,2,2,42042,5A,1213689,PJME,5,Cold,,Northeast +Venango,PA,122,42121,2,2,49431,5A,1213690,PJME,5,Cold,,Northeast +Warren,PA,122,42123,2,2,37572,5A,1213691,PJME,5,Cold,,Northeast +Washington,PA,115,42125,2,2,210232,5A,1209190,PJMW,5,Cold,,Northeast +Wayne,PA,122,42127,2,1,51262,6A,1213692,PJME,6,Cold,,Northeast +Westmoreland,PA,115,42129,2,2,351163,5A,1209191,PJMW,5,Cold,,Northeast +Wyoming,PA,122,42131,2,2,25902,5A,1209192,PJME,5,Cold,,Northeast +York,PA,122,42133,2,3,464640,4A,1209193,PJME,4,Mixed-Humid,,Northeast +Bristol,RI,133,44001,1,2,50255,5A,1219777,ISNE,5,Cold,,Northeast +Kent,RI,133,44003,1,2,171278,5A,1219778,ISNE,5,Cold,,Northeast +Newport,RI,133,44005,1,2,83832,5A,1219779,ISNE,5,Cold,,Northeast +Providence,RI,133,44007,1,2,660615,5A,1219781,ISNE,5,Cold,,Northeast +Washington,RI,133,44009,1,2,129982,5A,1219782,ISNE,5,Cold,,Northeast +Abbeville,SC,95,45001,5,4,24434,3A,1245666,SRCA,3,Mixed-Humid,,South +Aiken,SC,96,45003,5,4,177130,3A,1247979,SRCA,3,Mixed-Humid,,South +Allendale,SC,96,45005,5,5,7369,3A,1247980,SRCA,3,Hot-Humid,,South +Anderson,SC,95,45007,5,4,213076,3A,1247981,SRCA,3,Mixed-Humid,,South +Bamberg,SC,96,45009,5,5,12974,3A,1247982,SRCA,3,Hot-Humid,,South +Barnwell,SC,96,45011,5,4,20447,3A,1247983,SRCA,3,Hot-Humid,,South +Beaufort,SC,96,45013,5,5,198979,3A,1247984,SRCA,3,Hot-Humid,,South +Berkeley,SC,96,45015,5,5,255217,3A,1247985,SRCA,3,Hot-Humid,,South +Calhoun,SC,96,45017,5,5,14186,3A,1247986,SRCA,3,Mixed-Humid,,South +Charleston,SC,96,45019,5,5,424367,3A,1252740,SRCA,3,Hot-Humid,,South +Cherokee,SC,95,45021,5,4,56714,3A,1247987,SRCA,3,Mixed-Humid,,South +Chester,SC,95,45023,5,4,32226,3A,1247988,SRCA,3,Mixed-Humid,,South +Chesterfield,SC,96,45025,5,4,44031,3A,1247989,SRCA,3,Mixed-Humid,,South +Clarendon,SC,96,45027,5,4,31004,3A,1247990,SRCA,3,Mixed-Humid,,South +Colleton,SC,96,45029,5,5,38874,3A,1247991,SRCA,3,Hot-Humid,,South +Darlington,SC,96,45031,5,4,62416,3A,1247992,SRCA,3,Mixed-Humid,,South +Dillon,SC,96,45033,5,4,27698,3A,1247993,SRCA,3,Mixed-Humid,,South +Dorchester,SC,96,45035,5,4,169833,3A,1247998,SRCA,3,Hot-Humid,,South +Edgefield,SC,96,45037,5,4,27607,3A,1247999,SRCA,3,Mixed-Humid,,South +Fairfield,SC,96,45039,5,4,20422,3A,1248000,SRCA,3,Mixed-Humid,,South +Florence,SC,96,45041,5,4,137214,3A,1248001,SRCA,3,Mixed-Humid,,South +Georgetown,SC,96,45043,5,5,65731,3A,1248002,SRCA,3,Hot-Humid,,South +Greenville,SC,95,45045,5,4,558036,3A,1245489,SRCA,3,Mixed-Humid,,South +Greenwood,SC,95,45047,5,4,69460,3A,1248003,SRCA,3,Mixed-Humid,,South +Hampton,SC,96,45049,5,5,18122,3A,1248004,SRCA,3,Hot-Humid,,South +Horry,SC,96,45051,5,4,397478,3A,1248005,SRCA,3,Hot-Humid,,South +Jasper,SC,96,45053,5,5,33544,3A,1248006,SRCA,3,Hot-Humid,,South +Kershaw,SC,96,45055,5,4,69905,3A,1248007,SRCA,3,Mixed-Humid,,South +Lancaster,SC,95,45057,5,4,108215,3A,1248008,SRCA,3,Mixed-Humid,,South +Laurens,SC,95,45059,5,4,68873,3A,1248009,SRCA,3,Mixed-Humid,,South +Lee,SC,96,45061,5,4,15967,3A,1245652,SRCA,3,Mixed-Humid,,South +Lexington,SC,96,45063,5,4,309528,3A,1244251,SRCA,3,Mixed-Humid,,South +McCormick,SC,96,45065,5,4,9941,3A,1248012,SRCA,3,Mixed-Humid,,South +Marion,SC,96,45067,5,4,28508,3A,1248010,SRCA,3,Mixed-Humid,,South +Marlboro,SC,96,45069,5,4,25704,3A,1248011,SRCA,3,Mixed-Humid,,South +Newberry,SC,96,45071,5,4,38825,3A,1248013,SRCA,3,Mixed-Humid,,South +Oconee,SC,95,45073,5,4,81221,3A,1244832,SRCA,3,Mixed-Humid,,South +Orangeburg,SC,96,45075,5,4,82820,3A,1248014,SRCA,3,Mixed-Humid,,South +Pickens,SC,95,45077,5,4,135495,3A,1248015,SRCA,3,Mixed-Humid,,South +Richland,SC,96,45079,5,5,425138,3A,1249299,SRCA,3,Mixed-Humid,,South +Saluda,SC,96,45081,5,4,19123,3A,1248016,SRCA,3,Mixed-Humid,,South +Spartanburg,SC,95,45083,5,4,356698,3A,1248592,SRCA,3,Mixed-Humid,,South +Sumter,SC,96,45085,5,4,104165,3A,1244717,SRCA,3,Mixed-Humid,,South +Union,SC,95,45087,5,4,26629,3A,1248017,SRCA,3,Mixed-Humid,,South +Williamsburg,SC,96,45089,5,4,29891,3A,1248018,SRCA,3,Mixed-Humid,,South +York,SC,95,45091,5,4,298320,3A,1248019,SRCA,3,Mixed-Humid,,South +Aurora,SD,38,46003,4,1,2782,6A,1266983,SPPN,6,Cold,,Midwest +Beadle,SD,38,46005,4,1,19591,6A,1266986,SPPN,6,Cold,,Midwest +Bennett,SD,38,46007,4,2,3305,5A,1265812,SPPN,5,Cold,,Midwest +Bon Homme,SD,38,46009,4,2,7065,5A,1266997,SPPN,5,Cold,,Midwest +Brookings,SD,38,46011,4,1,35980,6A,1265779,SPPN,6,Cold,,Midwest +Brown,SD,38,46013,4,1,37733,6A,1265785,SPPN,6,Cold,,Midwest +Brule,SD,38,46015,4,1,5311,6A,1265768,SPPN,6,Cold,,Midwest +Buffalo,SD,38,46017,4,1,1884,6A,1265767,SPPN,6,Cold,,Midwest +Butte,SD,32,46019,4,1,10863,6A,1265793,RMRG,6,Cold,,Midwest +Campbell,SD,38,46021,4,1,1340,6A,1266974,SPPN,6,Cold,,Midwest +Charles Mix,SD,38,46023,4,2,9240,5A,1266976,SPPN,5,Cold,,Midwest +Clark,SD,38,46025,4,1,3948,6A,1266985,SPPN,6,Cold,,Midwest +Clay,SD,38,46027,4,2,15431,5A,1265764,SPPN,5,Cold,,Midwest +Codington,SD,38,46029,4,1,28971,6A,1265791,SPPN,6,Cold,,Midwest +Corson,SD,38,46031,4,1,3782,6A,1265811,SPPN,6,Cold,,Midwest +Custer,SD,32,46033,4,1,9117,6A,1265788,RMRG,6,Cold,,Midwest +Davison,SD,38,46035,4,1,19922,6A,1266980,SPPN,6,Cold,,Midwest +Day,SD,38,46037,4,1,5451,6A,1265790,SPPN,6,Cold,,Midwest +Deuel,SD,38,46039,4,1,4354,6A,1265781,SPPN,6,Cold,,Midwest +Dewey,SD,38,46041,4,1,5208,6A,1266994,SPPN,6,Cold,,Midwest +Douglas,SD,38,46043,4,2,2838,5A,1266978,SPPN,5,Cold,,Midwest +Edmunds,SD,38,46045,4,1,4057,6A,1266972,SPPN,6,Cold,,Midwest +Fall River,SD,32,46047,4,1,7393,6A,1265787,RMRG,6,Cold,,Midwest +Faulk,SD,38,46049,4,1,2151,6A,1265760,SPPN,6,Cold,,Midwest +Grant,SD,38,46051,4,1,7553,6A,1265782,SPPN,6,Cold,,Midwest +Gregory,SD,38,46053,4,2,4018,5A,1265765,SPPN,5,Cold,,Midwest +Haakon,SD,38,46055,4,1,1851,6A,1266988,SPPN,6,Cold,,Midwest +Hamlin,SD,38,46057,4,1,6451,6A,1265766,SPPN,6,Cold,,Midwest +Hand,SD,38,46059,4,1,3107,6A,1265783,SPPN,6,Cold,,Midwest +Hanson,SD,38,46061,4,1,3471,6A,1266979,SPPN,6,Cold,,Midwest +Harding,SD,38,46063,4,1,1324,6A,1265792,SPPN,6,Cold,,Midwest +Hughes,SD,38,46065,4,1,17624,6A,1265774,SPPN,6,Cold,,Midwest +Hutchinson,SD,38,46067,4,2,7394,5A,1265771,SPPN,5,Cold,,Midwest +Hyde,SD,38,46069,4,1,1186,6A,1266984,SPPN,6,Cold,,Midwest +Jackson,SD,38,46071,4,2,2776,5A,1265794,SPPN,5,Cold,,Midwest +Jerauld,SD,38,46073,4,1,1660,6A,1265778,SPPN,6,Cold,,Midwest +Jones,SD,38,46075,4,1,855,6A,1266981,SPPN,6,Cold,,Midwest +Kingsbury,SD,38,46077,4,1,5276,6A,1265780,SPPN,6,Cold,,Midwest +Lake,SD,38,46079,4,1,11031,6A,1265776,SPPN,6,Cold,,Midwest +Lawrence,SD,32,46081,4,1,28053,6A,1266996,RMRG,6,Cold,,Midwest +Lincoln,SD,38,46083,4,1,73238,6A,1265769,SPPN,6,Cold,,Midwest +Lyman,SD,38,46085,4,1,3705,6A,1265789,SPPN,6,Cold,,Midwest +McCook,SD,38,46087,4,1,5809,6A,1265773,SPPN,6,Cold,,Midwest +McPherson,SD,38,46089,4,1,2334,6A,1265762,SPPN,6,Cold,,Midwest +Marshall,SD,38,46091,4,1,4390,6A,1265759,SPPN,6,Cold,,Midwest +Meade,SD,38,46093,4,1,30954,6A,1266991,SPPN,6,Cold,,Midwest +Mellette,SD,38,46095,4,2,1851,5A,1267177,SPPN,5,Cold,,Midwest +Miner,SD,38,46097,4,1,2280,6A,1265777,SPPN,6,Cold,,Midwest +Minnehaha,SD,38,46099,4,1,206930,6A,1265772,SPPN,6,Cold,,Midwest +Moody,SD,38,46101,4,1,6450,6A,1265775,SPPN,6,Cold,,Midwest +Oglala Lakota,SD,38,46102,4,1,13434,6A,1266992,SPPN,6,Cold,,Midwest +Pennington,SD,32,46103,4,1,115903,6A,1266995,SPPN,6,Cold,,Midwest +Perkins,SD,38,46105,4,1,2834,6A,1266990,SPPN,6,Cold,,Midwest +Potter,SD,38,46107,4,1,2413,6A,1265761,SPPN,6,Cold,,Midwest +Roberts,SD,38,46109,4,1,10206,6A,1265786,SPPN,6,Cold,,Midwest +Sanborn,SD,38,46111,4,1,2399,6A,1266977,SPPN,6,Cold,,Midwest +Spink,SD,38,46115,4,1,6166,6A,1266987,SPPN,6,Cold,,Midwest +Stanley,SD,38,46117,4,1,3043,6A,1266998,SPPN,6,Cold,,Midwest +Sully,SD,38,46119,4,1,1494,6A,1266982,SPPN,6,Cold,,Midwest +Todd,SD,38,46121,4,2,9199,5A,1266989,SPPN,5,Cold,,Midwest +Tripp,SD,38,46123,4,2,5621,5A,1265784,SPPN,5,Cold,,Midwest +Turner,SD,38,46125,4,1,9027,6A,1265770,SPPN,6,Cold,,Midwest +Union,SD,38,46127,4,2,17183,5A,1265763,SPPN,5,Cold,,Midwest +Walworth,SD,38,46129,4,1,5269,6A,1266973,SPPN,6,Cold,,Midwest +Yankton,SD,38,46135,4,2,23517,5A,1266975,SPPN,5,Cold,,Midwest +Ziebach,SD,38,46137,4,1,2322,6A,1266993,SPPN,6,Cold,,Midwest +Anderson,TN,92,47001,6,3,80234,4A,1639722,SRCE,4,Mixed-Humid,,South +Bedford,TN,92,47003,6,4,53055,4A,1639723,SRCE,4,Mixed-Humid,,South +Benton,TN,92,47005,6,3,16103,4A,1639724,SRCE,4,Mixed-Humid,,South +Bledsoe,TN,92,47007,6,4,15060,4A,1639725,SRCE,4,Mixed-Humid,,South +Blount,TN,92,47009,6,4,141456,4A,1639726,SRCE,4,Mixed-Humid,,South +Bradley,TN,92,47011,6,4,111579,4A,1639727,SRCE,4,Mixed-Humid,,South +Campbell,TN,92,47013,6,3,40223,4A,1639728,SRCE,4,Mixed-Humid,,South +Cannon,TN,92,47015,6,3,15063,4A,1648572,SRCE,4,Mixed-Humid,,South +Carroll,TN,92,47017,6,3,28860,4A,1639729,SRCE,4,Mixed-Humid,,South +Carter,TN,92,47019,6,3,57022,4A,1639730,SRCE,4,Mixed-Humid,,South +Cheatham,TN,92,47021,6,3,42254,4A,1639731,SRCE,4,Mixed-Humid,,South +Chester,TN,92,47023,6,4,17606,3A,1639732,SRCE,3,Mixed-Humid,,South +Claiborne,TN,92,47025,6,3,32654,4A,1639733,SRCE,4,Mixed-Humid,,South +Clay,TN,92,47027,6,3,7714,4A,1648573,SRCE,4,Mixed-Humid,,South +Cocke,TN,92,47029,6,3,37404,4A,1639734,SRCE,4,Mixed-Humid,,South +Coffee,TN,92,47031,6,4,60633,4A,1639735,SRCE,4,Mixed-Humid,,South +Crockett,TN,92,47033,6,4,13982,3A,1648574,SRCE,3,Mixed-Humid,,South +Cumberland,TN,92,47035,6,3,64760,4A,1639736,SRCE,4,Mixed-Humid,,South +Davidson,TN,92,47037,6,4,712334,4A,1639737,SRCE,4,Mixed-Humid,,South +Decatur,TN,92,47039,6,4,11656,4A,1639739,SRCE,4,Mixed-Humid,,South +DeKalb,TN,92,47041,6,3,21225,4A,1639738,SRCE,4,Mixed-Humid,,South +Dickson,TN,92,47043,6,3,56729,4A,1639740,SRCE,4,Mixed-Humid,,South +Dyer,TN,92,47045,6,4,36498,3A,1639741,SRCE,3,Mixed-Humid,,South +Fayette,TN,92,47047,6,4,44175,3A,1639742,SRCE,3,Mixed-Humid,,South +Fentress,TN,92,47049,6,3,19696,4A,1639743,SRCE,4,Mixed-Humid,,South +Franklin,TN,92,47051,6,4,44654,4A,1639744,SRCE,4,Mixed-Humid,,South +Gibson,TN,92,47053,6,3,51045,4A,1639745,SRCE,4,Mixed-Humid,,South +Giles,TN,92,47055,6,4,30721,4A,1639746,SRCE,4,Mixed-Humid,,South +Grainger,TN,92,47057,6,3,24681,4A,1648575,SRCE,4,Mixed-Humid,,South +Greene,TN,92,47059,6,3,72577,4A,1639747,SRCE,4,Mixed-Humid,,South +Grundy,TN,92,47061,6,3,13955,4A,1639748,SRCE,4,Mixed-Humid,,South +Hamblen,TN,92,47063,6,3,66216,4A,1648576,SRCE,4,Mixed-Humid,,South +Hamilton,TN,92,47065,6,4,379864,4A,1639749,SRCE,4,Mixed-Humid,,South +Hancock,TN,92,47067,6,3,6956,4A,1648577,SRCE,4,Mixed-Humid,,South +Hardeman,TN,92,47069,6,4,25567,3A,1639750,SRCE,3,Mixed-Humid,,South +Hardin,TN,92,47071,6,4,27229,3A,1639751,SRCE,3,Mixed-Humid,,South +Hawkins,TN,92,47073,6,3,58600,4A,1639752,SRCE,4,Mixed-Humid,,South +Haywood,TN,92,47075,6,4,17328,3A,1639753,SRCE,3,Mixed-Humid,,South +Henderson,TN,92,47077,6,4,28070,3A,1639754,SRCE,3,Mixed-Humid,,South +Henry,TN,92,47079,6,3,32554,4A,1639755,SRCE,4,Mixed-Humid,,South +Hickman,TN,92,47081,6,3,25826,4A,1639756,SRCE,4,Mixed-Humid,,South +Houston,TN,92,47083,6,3,8393,4A,1648578,SRCE,4,Mixed-Humid,,South +Humphreys,TN,92,47085,6,3,19209,4A,1639757,SRCE,4,Mixed-Humid,,South +Jackson,TN,92,47087,6,3,12363,4A,1639758,SRCE,4,Mixed-Humid,,South +Jefferson,TN,92,47089,6,3,57838,4A,1639759,SRCE,4,Mixed-Humid,,South +Johnson,TN,92,47091,6,3,18375,4A,1639760,SRCE,4,Mixed-Humid,,South +Knox,TN,92,47093,6,4,500669,4A,1639761,SRCE,4,Mixed-Humid,,South +Lake,TN,92,47095,6,3,6347,3A,1639762,SRCE,3,Mixed-Humid,,South +Lauderdale,TN,92,47097,6,4,24610,3A,1639763,SRCE,3,Mixed-Humid,,South +Lawrence,TN,92,47099,6,4,46114,4A,1639764,SRCE,4,Mixed-Humid,,South +Lewis,TN,92,47101,6,4,13066,4A,1639765,SRCE,4,Mixed-Humid,,South +Lincoln,TN,92,47103,6,4,36169,4A,1639766,SRCE,4,Mixed-Humid,,South +Loudon,TN,92,47105,6,4,60591,4A,1639767,SRCE,4,Mixed-Humid,,South +McMinn,TN,92,47107,6,4,55678,4A,1639773,SRCE,4,Mixed-Humid,,South +McNairy,TN,92,47109,6,4,26163,3A,1639774,SRCE,3,Mixed-Humid,,South +Macon,TN,92,47111,6,3,26793,4A,1639768,SRCE,4,Mixed-Humid,,South +Madison,TN,92,47113,6,4,99193,3A,1639769,SRCE,3,Mixed-Humid,,South +Marion,TN,92,47115,6,4,29382,4A,1639770,SRCE,4,Mixed-Humid,,South +Marshall,TN,92,47117,6,4,36961,4A,1639771,SRCE,4,Mixed-Humid,,South +Maury,TN,92,47119,6,3,110760,4A,1639772,SRCE,4,Mixed-Humid,,South +Meigs,TN,92,47121,6,4,13691,4A,1639775,SRCE,4,Mixed-Humid,,South +Monroe,TN,92,47123,6,4,48594,4A,1639776,SRCE,4,Mixed-Humid,,South +Montgomery,TN,92,47125,6,3,239872,4A,1639777,SRCE,4,Mixed-Humid,,South +Moore,TN,92,47127,6,4,6748,4A,1648579,SRCE,4,Mixed-Humid,,South +Morgan,TN,92,47129,6,3,21573,4A,1639778,SRCE,4,Mixed-Humid,,South +Obion,TN,92,47131,6,3,30411,4A,1639779,SRCE,4,Mixed-Humid,,South +Overton,TN,92,47133,6,3,23327,4A,1639780,SRCE,4,Mixed-Humid,,South +Perry,TN,92,47135,6,4,8891,4A,1639781,SRCE,4,Mixed-Humid,,South +Pickett,TN,92,47137,6,3,5128,4A,1648580,SRCE,4,Mixed-Humid,,South +Polk,TN,92,47139,6,4,18033,4A,1639782,SRCE,4,Mixed-Humid,,South +Putnam,TN,92,47141,6,3,83844,4A,1639783,SRCE,4,Mixed-Humid,,South +Rhea,TN,92,47143,6,4,33924,4A,1639784,SRCE,4,Mixed-Humid,,South +Roane,TN,92,47145,6,3,56096,4A,1639785,SRCE,4,Mixed-Humid,,South +Robertson,TN,92,47147,6,3,76776,4A,1639786,SRCE,4,Mixed-Humid,,South +Rutherford,TN,92,47149,6,4,367101,4A,1639787,SRCE,4,Mixed-Humid,,South +Scott,TN,92,47151,6,3,22171,4A,1639788,SRCE,4,Mixed-Humid,,South +Sequatchie,TN,92,47153,6,4,17161,4A,1652643,SRCE,4,Mixed-Humid,,South +Sevier,TN,92,47155,6,3,99415,4A,1639789,SRCE,4,Mixed-Humid,,South +Shelby,TN,92,47157,6,5,910042,3A,1639790,SRCE,3,Mixed-Humid,,South +Smith,TN,92,47159,6,3,20538,4A,1639791,SRCE,4,Mixed-Humid,,South +Stewart,TN,92,47161,6,3,14222,4A,1639792,SRCE,4,Mixed-Humid,,South +Sullivan,TN,92,47163,6,3,162135,4A,1639793,SRCE,4,Mixed-Humid,,South +Sumner,TN,92,47165,6,3,207994,4A,1639794,SRCE,4,Mixed-Humid,,South +Tipton,TN,92,47167,6,4,62015,3A,1639795,SRCE,3,Mixed-Humid,,South +Trousdale,TN,92,47169,6,3,12271,4A,1648581,SRCE,4,Mixed-Humid,,South +Unicoi,TN,92,47171,6,3,17756,4A,1648582,SRCE,4,Mixed-Humid,,South +Union,TN,92,47173,6,3,20741,4A,1648583,SRCE,4,Mixed-Humid,,South +Van Buren,TN,92,47175,6,3,6493,4A,1648584,SRCE,4,Mixed-Humid,,South +Warren,TN,92,47177,6,3,42638,4A,1639796,SRCE,4,Mixed-Humid,,South +Washington,TN,92,47179,6,3,138420,4A,1639797,SRCE,4,Mixed-Humid,,South +Wayne,TN,92,47181,6,4,16066,4A,1639798,SRCE,4,Mixed-Humid,,South +Weakley,TN,92,47183,6,3,33084,4A,1639799,SRCE,4,Mixed-Humid,,South +White,TN,92,47185,6,3,28692,4A,1639800,SRCE,4,Mixed-Humid,,South +Williamson,TN,92,47187,6,4,264460,4A,1639801,SRCE,4,Mixed-Humid,,South +Wilson,TN,92,47189,6,3,163674,4A,1639802,SRCE,4,Mixed-Humid,,South +Anderson,TX,63,48001,7,5,57736,2A,1383786,TRE,2,Hot-Humid,,South +Andrews,TX,62,48003,7,5,18664,3B,1383787,TRE,3,Hot-Dry,,South +Angelina,TX,63,48005,7,5,87319,2A,1383788,TRE,2,Hot-Humid,,South +Aransas,TX,65,48007,7,5,25374,2A,1383789,TRE,2,Hot-Humid,,South +Archer,TX,63,48009,7,5,9029,3A,1383790,TRE,3,Mixed-Humid,,South +Armstrong,TX,48,48011,7,3,1832,4B,1383791,SPPS,4,Mixed-Dry,,South +Atascosa,TX,65,48013,7,5,51784,2A,1383792,TRE,2,Hot-Humid,,South +Austin,TX,64,48015,7,5,31677,2A,1383793,TRE,2,Hot-Humid,,South +Bailey,TX,48,48017,7,3,6672,4B,1383794,SPPS,4,Mixed-Dry,,South +Bandera,TX,64,48019,7,5,22637,2B,1383795,TRE,2,Hot-Humid,,South +Bastrop,TX,64,48021,7,5,110778,2A,1383796,TRE,2,Hot-Humid,,South +Baylor,TX,60,48023,7,5,3463,3B,1383797,TRE,3,Hot-Dry,,South +Bee,TX,65,48025,7,5,30850,2A,1383798,TRE,2,Hot-Humid,,South +Bell,TX,63,48027,7,5,393193,2A,1383799,TRE,2,Hot-Humid,,South +Bexar,TX,65,48029,7,5,2087679,2A,1383800,TRE,2,Hot-Humid,,South +Blanco,TX,64,48031,7,5,13048,3A,1383801,TRE,3,Hot-Humid,,South +Borden,TX,60,48033,7,5,572,3B,1383802,TRE,3,Hot-Dry,,South +Bosque,TX,63,48035,7,5,18996,2A,1383803,TRE,2,Hot-Humid,,South +Bowie,TX,57,48037,7,5,91687,3A,1383804,SPPS,3,Hot-Humid,,South +Brazoria,TX,67,48039,7,5,398938,2A,1383805,TRE,2,Hot-Humid,,South +Brazos,TX,64,48041,7,5,244703,2A,1383806,MISS,2,Hot-Humid,,South +Brewster,TX,61,48043,7,4,9513,3B,1383807,TRE,3,Hot-Dry,,South +Briscoe,TX,60,48045,7,4,1445,4B,1383808,SPPS,4,Mixed-Dry,,South +Brooks,TX,65,48047,7,5,6848,2A,1383809,TRE,2,Hot-Humid,,South +Brown,TX,63,48049,7,5,38709,3A,1383810,TRE,3,Hot-Humid,,South +Burleson,TX,64,48051,7,5,19475,2A,1383811,MISS,2,Hot-Humid,,South +Burnet,TX,64,48053,7,5,53991,3A,1383812,TRE,3,Hot-Humid,,South +Caldwell,TX,64,48055,7,5,49859,2A,1383813,TRE,2,Hot-Humid,,South +Calhoun,TX,65,48057,7,5,19696,2A,1383814,TRE,2,Hot-Humid,,South +Callahan,TX,61,48059,7,5,14374,3B,1383815,TRE,3,Hot-Dry,,South +Cameron,TX,65,48061,7,5,426710,2A,1383816,TRE,2,Hot-Humid,,South +Camp,TX,57,48063,7,5,13000,3A,1383817,SPPS,3,Hot-Humid,,South +Carson,TX,48,48065,7,3,5878,4B,1383818,SPPS,4,Mixed-Dry,,South +Cass,TX,57,48067,7,5,28659,3A,1383819,SPPS,3,Hot-Humid,,South +Castro,TX,48,48069,7,3,7227,4B,1383820,SPPS,4,Mixed-Dry,,South +Chambers,TX,66,48071,7,5,53876,2A,1383821,TRE,2,Hot-Humid,,South +Cherokee,TX,63,48073,7,5,52217,2A,1383822,TRE,2,Hot-Humid,,South +Childress,TX,60,48075,7,5,6788,3B,1383823,TRE,3,Hot-Dry,,South +Clay,TX,63,48077,7,5,10738,3A,1383824,TRE,3,Mixed-Humid,,South +Cochran,TX,48,48079,7,4,2509,4B,1383825,SPPS,4,Mixed-Dry,,South +Coke,TX,61,48081,7,5,3352,3B,1383826,TRE,3,Hot-Dry,,South +Coleman,TX,61,48083,7,5,7842,3B,1383827,TRE,3,Hot-Dry,,South +Collin,TX,63,48085,7,5,1195359,3A,1383828,TRE,3,Hot-Humid,,South +Collingsworth,TX,48,48087,7,5,2563,3B,1383829,TRE,3,Hot-Dry,,South +Colorado,TX,64,48089,7,5,21117,2A,1383830,TRE,2,Hot-Humid,,South +Comal,TX,64,48091,7,5,193928,2A,1383831,TRE,2,Hot-Humid,,South +Comanche,TX,63,48093,7,5,14050,3A,1383832,TRE,3,Hot-Humid,,South +Concho,TX,61,48095,7,5,3297,3B,1383833,TRE,3,Hot-Dry,,South +Cooke,TX,63,48097,7,5,43782,3A,1383834,TRE,3,Mixed-Humid,,South +Coryell,TX,63,48099,7,5,84878,2A,1383835,TRE,2,Hot-Humid,,South +Cottle,TX,60,48101,7,5,1294,3B,1383836,TRE,3,Hot-Dry,,South +Crane,TX,62,48103,7,5,4574,3B,1383837,TRE,3,Hot-Dry,,South +Crockett,TX,61,48105,7,5,2858,3B,1383838,TRE,3,Hot-Dry,,South +Crosby,TX,60,48107,7,4,4917,3B,1383839,SPPS,3,Hot-Dry,,South +Culberson,TX,61,48109,7,4,2196,3B,1383840,TRE,3,Hot-Dry,,South +Dallam,TX,48,48111,7,3,7237,4B,1383841,SPPS,4,Mixed-Dry,,South +Dallas,TX,63,48113,7,5,2606358,3A,1383842,TRE,3,Hot-Humid,,South +Dawson,TX,60,48115,7,4,12004,3B,1383843,TRE,3,Hot-Dry,,South +Deaf Smith,TX,48,48117,7,3,18347,4B,1383845,SPPS,4,Mixed-Dry,,South +Delta,TX,63,48119,7,5,5520,3A,1383846,TRE,3,Hot-Humid,,South +Denton,TX,63,48121,7,5,1007703,3A,1383847,TRE,3,Hot-Humid,,South +DeWitt,TX,64,48123,7,5,19929,2A,1383844,TRE,2,Hot-Humid,,South +Dickens,TX,60,48125,7,5,1711,3B,1383848,TRE,3,Hot-Dry,,South +Dimmit,TX,65,48127,7,5,8257,2B,1383849,TRE,2,Hot-Humid,,South +Donley,TX,48,48129,7,4,3214,4B,1383850,TRE,4,Mixed-Dry,,South +Duval,TX,65,48131,7,5,9604,2A,1383851,TRE,2,Hot-Humid,,South +Eastland,TX,63,48133,7,5,18037,3A,1383852,TRE,3,Mixed-Humid,,South +Ector,TX,62,48135,7,5,164494,3B,1383853,TRE,3,Hot-Dry,,South +Edwards,TX,64,48137,7,5,1393,2B,1383854,TRE,2,Hot-Humid,,South +Ellis,TX,63,48139,7,5,222829,3A,1383856,TRE,3,Hot-Humid,,South +El Paso,TX,59,48141,7,5,869880,3B,1383855,SRSG,3,Hot-Dry,,South +Erath,TX,63,48143,7,5,44195,3A,1383857,TRE,3,Hot-Humid,,South +Falls,TX,63,48145,7,5,17286,2A,1383858,TRE,2,Hot-Humid,,South +Fannin,TX,63,48147,7,5,37571,3A,1383859,TRE,3,Mixed-Humid,,South +Fayette,TX,64,48149,7,5,25474,2A,1383860,TRE,2,Hot-Humid,,South +Fisher,TX,60,48151,7,5,3612,3B,1383861,TRE,3,Hot-Dry,,South +Floyd,TX,48,48153,7,4,5090,4B,1383862,SPPS,4,Mixed-Dry,,South +Foard,TX,60,48155,7,5,1079,3B,1383863,TRE,3,Hot-Dry,,South +Fort Bend,TX,67,48157,7,5,916778,2A,1383864,TRE,2,Hot-Humid,,South +Franklin,TX,63,48159,7,5,10735,3A,1383865,SPPS,3,Hot-Humid,,South +Freestone,TX,63,48161,7,5,20441,2A,1383866,TRE,2,Hot-Humid,,South +Frio,TX,65,48163,7,5,17987,2B,1383867,TRE,2,Hot-Humid,,South +Gaines,TX,48,48165,7,4,22523,3B,1383868,SPPS,3,Hot-Dry,,South +Galveston,TX,67,48167,7,5,361744,2A,1383869,TRE,2,Hot-Humid,,South +Garza,TX,48,48169,7,4,4517,3B,1383870,TRE,3,Hot-Dry,,South +Gillespie,TX,64,48171,7,5,27733,3A,1383871,TRE,3,Hot-Humid,,South +Glasscock,TX,62,48173,7,4,1141,3B,1383872,TRE,3,Hot-Dry,,South +Goliad,TX,65,48175,7,5,7144,2A,1383873,TRE,2,Hot-Humid,,South +Gonzales,TX,64,48177,7,5,19930,2A,1383874,TRE,2,Hot-Humid,,South +Gray,TX,48,48179,7,3,20916,4B,1383875,SPPS,4,Mixed-Dry,,South +Grayson,TX,63,48181,7,5,146907,3A,1383876,TRE,3,Mixed-Humid,,South +Gregg,TX,57,48183,7,5,126243,3A,1383877,SPPS,3,Hot-Humid,,South +Grimes,TX,64,48185,7,5,32384,2A,1383878,MISS,2,Hot-Humid,,South +Guadalupe,TX,64,48187,7,5,188454,2A,1383879,TRE,2,Hot-Humid,,South +Hale,TX,48,48189,7,4,31761,4B,1383880,SPPS,4,Mixed-Dry,,South +Hall,TX,60,48191,7,4,2818,3B,1383881,TRE,3,Hot-Dry,,South +Hamilton,TX,63,48193,7,5,8619,3A,1383882,TRE,3,Hot-Humid,,South +Hansford,TX,48,48195,7,3,5071,4B,1383883,SPPS,4,Mixed-Dry,,South +Hardeman,TX,60,48197,7,5,3490,3B,1383884,TRE,3,Hot-Dry,,South +Hardin,TX,66,48199,7,5,58261,2A,1383885,MISS,2,Hot-Humid,,South +Harris,TX,67,48201,7,5,4835125,2A,1383886,TRE,2,Hot-Humid,,South +Harrison,TX,57,48203,7,5,70895,3A,1383887,SPPS,3,Hot-Humid,,South +Hartley,TX,48,48205,7,3,5145,4B,1383888,SPPS,4,Mixed-Dry,,South +Haskell,TX,60,48207,7,5,5385,3B,1383889,TRE,3,Hot-Dry,,South +Hays,TX,64,48209,7,5,280486,2A,1383890,TRE,2,Hot-Humid,,South +Hemphill,TX,48,48211,7,3,3189,3B,1383891,SPPS,3,Hot-Dry,,South +Henderson,TX,63,48213,7,5,86158,3A,1383892,TRE,3,Hot-Humid,,South +Hidalgo,TX,65,48215,7,5,898471,2A,1383893,TRE,2,Hot-Humid,,South +Hill,TX,63,48217,7,5,38101,2A,1383894,TRE,2,Hot-Humid,,South +Hockley,TX,48,48219,7,4,21460,4B,1383895,SPPS,4,Mixed-Dry,,South +Hood,TX,63,48221,7,5,67774,3A,1383896,TRE,3,Hot-Humid,,South +Hopkins,TX,63,48223,7,5,38172,3A,1383897,TRE,3,Hot-Humid,,South +Houston,TX,63,48225,7,5,22066,2A,1383898,TRE,2,Hot-Humid,,South +Howard,TX,60,48227,7,5,30554,3B,1383899,TRE,3,Hot-Dry,,South +Hudspeth,TX,61,48229,7,5,3451,3B,1383900,SRSG,3,Hot-Dry,,South +Hunt,TX,63,48231,7,5,113347,3A,1383901,TRE,3,Hot-Humid,,South +Hutchinson,TX,48,48233,7,3,20033,4B,1383902,SPPS,4,Mixed-Dry,,South +Irion,TX,61,48235,7,5,1549,3B,1383903,TRE,3,Hot-Dry,,South +Jack,TX,63,48237,7,5,8875,3A,1383904,TRE,3,Mixed-Humid,,South +Jackson,TX,65,48239,7,5,15221,2A,1383905,TRE,2,Hot-Humid,,South +Jasper,TX,66,48241,7,5,32694,2A,1383906,MISS,2,Hot-Humid,,South +Jeff Davis,TX,61,48243,7,4,1856,3B,1383907,TRE,3,Hot-Dry,,South +Jefferson,TX,66,48245,7,5,251496,2A,1383908,MISS,2,Hot-Humid,,South +Jim Hogg,TX,65,48247,7,5,4720,2A,1383909,TRE,2,Hot-Humid,,South +Jim Wells,TX,65,48249,7,5,38662,2A,1383910,TRE,2,Hot-Humid,,South +Johnson,TX,63,48251,7,5,202906,3A,1383911,TRE,3,Hot-Humid,,South +Jones,TX,60,48253,7,5,20381,3B,1383912,TRE,3,Hot-Dry,,South +Karnes,TX,65,48255,7,5,15018,2A,1383913,TRE,2,Hot-Humid,,South +Kaufman,TX,63,48257,7,5,185690,3A,1383914,TRE,3,Hot-Humid,,South +Kendall,TX,64,48259,7,5,50537,3A,1383915,TRE,3,Hot-Humid,,South +Kenedy,TX,65,48261,7,5,343,2A,1383916,TRE,2,Hot-Humid,,South +Kent,TX,60,48263,7,5,734,3B,1383917,TRE,3,Hot-Dry,,South +Kerr,TX,64,48265,7,5,53915,3B,1383918,TRE,3,Hot-Dry,,South +Kimble,TX,64,48267,7,5,4442,3B,1383919,TRE,3,Hot-Dry,,South +King,TX,60,48269,7,5,217,3B,1383920,TRE,3,Hot-Dry,,South +Kinney,TX,61,48271,7,5,3148,2B,1383921,TRE,2,Hot-Humid,,South +Kleberg,TX,65,48273,7,5,30069,2A,1383922,TRE,2,Hot-Humid,,South +Knox,TX,60,48275,7,5,3302,3B,1383923,TRE,3,Hot-Dry,,South +Lamar,TX,63,48277,7,5,51127,3A,1383925,TRE,3,Hot-Humid,,South +Lamb,TX,48,48279,7,4,12711,4B,1383926,SPPS,4,Mixed-Dry,,South +Lampasas,TX,63,48281,7,5,23262,3A,1383927,TRE,3,Hot-Humid,,South +La Salle,TX,65,48283,7,5,6537,2B,1383924,TRE,2,Hot-Humid,,South +Lavaca,TX,64,48285,7,5,20571,2A,1383928,TRE,2,Hot-Humid,,South +Lee,TX,64,48287,7,5,18240,2A,1383929,TRE,2,Hot-Humid,,South +Leon,TX,63,48289,7,5,16538,2A,1383930,TRE,2,Hot-Humid,,South +Liberty,TX,66,48291,7,5,108272,2A,1383931,MISS,2,Hot-Humid,,South +Limestone,TX,63,48293,7,5,22250,2A,1383932,TRE,2,Hot-Humid,,South +Lipscomb,TX,48,48295,7,3,2906,4B,1383933,SPPS,4,Mixed-Dry,,South +Live Oak,TX,65,48297,7,5,11584,2A,1383934,TRE,2,Hot-Humid,,South +Llano,TX,64,48299,7,5,22875,3A,1383935,TRE,3,Hot-Humid,,South +Loving,TX,62,48301,7,5,43,3B,1383936,TRE,3,Hot-Dry,,South +Lubbock,TX,48,48303,7,4,320940,3B,1383937,SPPS,3,Hot-Dry,,South +Lynn,TX,48,48305,7,4,5761,3B,1383938,SPPS,3,Hot-Dry,,South +McCulloch,TX,63,48307,7,5,7452,3B,1383945,TRE,3,Hot-Dry,,South +McLennan,TX,63,48309,7,5,268583,2A,1383946,TRE,2,Hot-Humid,,South +McMullen,TX,65,48311,7,5,568,2A,1383947,TRE,2,Hot-Humid,,South +Madison,TX,63,48313,7,5,13742,2A,1383939,MISS,2,Hot-Humid,,South +Marion,TX,57,48315,7,5,9571,3A,1383940,SPPS,3,Hot-Humid,,South +Martin,TX,62,48317,7,5,5216,3B,1383941,TRE,3,Hot-Dry,,South +Mason,TX,64,48319,7,5,3931,3B,1383942,TRE,3,Hot-Dry,,South +Matagorda,TX,65,48321,7,5,36359,2A,1383943,TRE,2,Hot-Humid,,South +Maverick,TX,65,48323,7,5,57762,2B,1383944,TRE,2,Hot-Humid,,South +Medina,TX,65,48325,7,5,54797,2B,1383948,TRE,2,Hot-Humid,,South +Menard,TX,64,48327,7,5,1958,3B,1383949,TRE,3,Hot-Dry,,South +Midland,TX,62,48329,7,5,177108,3B,1383950,TRE,3,Hot-Dry,,South +Milam,TX,63,48331,7,5,25951,2A,1383951,MISS,2,Hot-Humid,,South +Mills,TX,63,48333,7,5,4548,3A,1383952,TRE,3,Hot-Humid,,South +Mitchell,TX,60,48335,7,5,9075,3B,1383953,TRE,3,Hot-Dry,,South +Montague,TX,63,48337,7,5,21598,3A,1383954,TRE,3,Mixed-Humid,,South +Montgomery,TX,66,48339,7,5,711354,2A,1383955,MISS,2,Hot-Humid,,South +Moore,TX,48,48341,7,3,21190,4B,1383956,SPPS,4,Mixed-Dry,,South +Morris,TX,57,48343,7,5,12066,3A,1383957,SPPS,3,Hot-Humid,,South +Motley,TX,60,48345,7,4,1020,3B,1383958,TRE,3,Hot-Dry,,South +Nacogdoches,TX,66,48347,7,5,65375,3A,1383959,TRE,3,Hot-Humid,,South +Navarro,TX,63,48349,7,5,55635,3A,1383960,TRE,3,Hot-Humid,,South +Newton,TX,66,48351,7,5,12039,2A,1383961,MISS,2,Hot-Humid,,South +Nolan,TX,60,48353,7,5,14306,3B,1383962,TRE,3,Hot-Dry,,South +Nueces,TX,65,48355,7,5,352289,2A,1383963,TRE,2,Hot-Humid,,South +Ochiltree,TX,48,48357,7,3,9704,4B,1383964,SPPS,4,Mixed-Dry,,South +Oldham,TX,48,48359,7,3,1783,4B,1383965,SPPS,4,Mixed-Dry,,South +Orange,TX,66,48361,7,5,85722,2A,1383966,MISS,2,Hot-Humid,,South +Palo Pinto,TX,63,48363,7,5,29747,3A,1383967,TRE,3,Mixed-Humid,,South +Panola,TX,57,48365,7,5,22838,3A,1383968,SPPS,3,Hot-Humid,,South +Parker,TX,63,48367,7,5,173494,3A,1383969,TRE,3,Hot-Humid,,South +Parmer,TX,48,48369,7,3,9617,4B,1383970,SPPS,4,Mixed-Dry,,South +Pecos,TX,61,48371,7,5,14623,3B,1383971,TRE,3,Hot-Dry,,South +Polk,TX,66,48373,7,5,54186,2A,1383972,MISS,2,Hot-Humid,,South +Potter,TX,48,48375,7,3,114647,4B,1383973,SPPS,4,Mixed-Dry,,South +Presidio,TX,61,48377,7,5,5795,3B,1383974,TRE,3,Hot-Dry,,South +Rains,TX,63,48379,7,5,12986,3A,1383975,TRE,3,Hot-Humid,,South +Randall,TX,48,48381,7,3,148255,4B,1383976,SPPS,4,Mixed-Dry,,South +Reagan,TX,62,48383,7,5,3141,3B,1383977,TRE,3,Hot-Dry,,South +Real,TX,64,48385,7,5,2854,2B,1383978,TRE,2,Hot-Humid,,South +Red River,TX,63,48387,7,4,11678,3A,1383979,TRE,3,Hot-Humid,,South +Reeves,TX,61,48389,7,5,11770,3B,1383980,TRE,3,Hot-Dry,,South +Refugio,TX,65,48391,7,5,6666,2A,1383981,TRE,2,Hot-Humid,,South +Roberts,TX,48,48393,7,3,840,4B,1383982,SPPS,4,Mixed-Dry,,South +Robertson,TX,63,48395,7,5,17267,2A,1383983,MISS,2,Hot-Humid,,South +Rockwall,TX,63,48397,7,5,131307,3A,1383984,TRE,3,Hot-Humid,,South +Runnels,TX,61,48399,7,5,9868,3B,1383985,TRE,3,Hot-Dry,,South +Rusk,TX,63,48401,7,5,53079,3A,1383986,SPPS,3,Hot-Humid,,South +Sabine,TX,66,48403,7,5,10106,3A,1383987,TRE,3,Hot-Humid,,South +San Augustine,TX,66,48405,7,5,7833,3A,1383988,TRE,3,Hot-Humid,,South +San Jacinto,TX,66,48407,7,5,28936,2A,1383989,MISS,2,Hot-Humid,,South +San Patricio,TX,65,48409,7,5,70660,2A,1383990,TRE,2,Hot-Humid,,South +San Saba,TX,63,48411,7,5,5845,3A,1383991,TRE,3,Hot-Humid,,South +Schleicher,TX,61,48413,7,5,2391,3B,1383992,TRE,3,Hot-Dry,,South +Scurry,TX,60,48415,7,4,16212,3B,1383993,TRE,3,Hot-Dry,,South +Shackelford,TX,63,48417,7,5,3229,3B,1383994,TRE,3,Hot-Dry,,South +Shelby,TX,66,48419,7,5,24179,3A,1383995,SPPS,3,Hot-Humid,,South +Sherman,TX,48,48421,7,3,2678,4B,1383996,SPPS,4,Mixed-Dry,,South +Smith,TX,63,48423,7,5,245209,3A,1383997,TRE,3,Hot-Humid,,South +Somervell,TX,63,48425,7,5,9888,3A,1383998,TRE,3,Hot-Humid,,South +Starr,TX,65,48427,7,5,65934,2A,1383999,TRE,2,Hot-Humid,,South +Stephens,TX,63,48429,7,5,9343,3A,1384000,TRE,3,Mixed-Humid,,South +Sterling,TX,61,48431,7,5,1397,3B,1384001,TRE,3,Hot-Dry,,South +Stonewall,TX,60,48433,7,5,1218,3B,1384002,TRE,3,Hot-Dry,,South +Sutton,TX,61,48435,7,5,3221,3B,1384003,TRE,3,Hot-Dry,,South +Swisher,TX,48,48437,7,4,6955,4B,1384004,SPPS,4,Mixed-Dry,,South +Tarrant,TX,63,48439,7,5,2182947,3A,1384005,TRE,3,Hot-Humid,,South +Taylor,TX,61,48441,7,5,146836,3B,1384006,TRE,3,Hot-Dry,,South +Terrell,TX,61,48443,7,5,687,3B,1384007,TRE,3,Hot-Dry,,South +Terry,TX,48,48445,7,4,11547,3B,1384008,SPPS,3,Hot-Dry,,South +Throckmorton,TX,63,48447,7,5,1526,3B,1384009,TRE,3,Hot-Dry,,South +Titus,TX,57,48449,7,5,31357,3A,1384010,SPPS,3,Hot-Humid,,South +Tom Green,TX,61,48451,7,5,119057,3B,1384011,TRE,3,Hot-Dry,,South +Travis,TX,64,48453,7,5,1334961,2A,1384012,TRE,2,Hot-Humid,,South +Trinity,TX,66,48455,7,5,14228,2A,1384013,MISS,2,Hot-Humid,,South +Tyler,TX,66,48457,7,5,20382,2A,1384014,MISS,2,Hot-Humid,,South +Upshur,TX,57,48459,7,5,43281,3A,1384015,SPPS,3,Hot-Humid,,South +Upton,TX,62,48461,7,5,3109,3B,1384016,TRE,3,Hot-Dry,,South +Uvalde,TX,65,48463,7,5,24960,2B,1384017,TRE,2,Hot-Humid,,South +Val Verde,TX,61,48465,7,5,47720,2B,1384018,TRE,2,Hot-Humid,,South +Van Zandt,TX,63,48467,7,5,64000,3A,1384019,TRE,3,Hot-Humid,,South +Victoria,TX,65,48469,7,5,91664,2A,1384020,TRE,2,Hot-Humid,,South +Walker,TX,64,48471,7,5,81268,2A,1384021,MISS,2,Hot-Humid,,South +Waller,TX,64,48473,7,5,63553,2A,1384022,TRE,2,Hot-Humid,,South +Ward,TX,62,48475,7,5,10966,3B,1384023,TRE,3,Hot-Dry,,South +Washington,TX,64,48477,7,5,37007,2A,1384024,TRE,2,Hot-Humid,,South +Webb,TX,65,48479,7,5,269148,2B,1384025,TRE,2,Hot-Humid,,South +Wharton,TX,65,48481,7,5,41739,2A,1384026,TRE,2,Hot-Humid,,South +Wheeler,TX,48,48483,7,3,4804,3B,1384027,SPPS,3,Hot-Dry,,South +Wichita,TX,63,48485,7,5,130180,3A,1384028,TRE,3,Mixed-Humid,,South +Wilbarger,TX,60,48487,7,5,12522,3B,1384029,TRE,3,Hot-Dry,,South +Willacy,TX,65,48489,7,5,20037,2A,1384030,TRE,2,Hot-Humid,,South +Williamson,TX,64,48491,7,5,697191,2A,1384031,TRE,2,Hot-Humid,,South +Wilson,TX,65,48493,7,5,54183,2A,1384032,TRE,2,Hot-Humid,,South +Winkler,TX,62,48495,7,5,7414,3B,1384033,TRE,3,Hot-Dry,,South +Wise,TX,63,48497,7,5,78097,3A,1384034,TRE,3,Mixed-Humid,,South +Wood,TX,63,48499,7,5,47921,3A,1384035,SPPS,3,Hot-Humid,,South +Yoakum,TX,48,48501,7,4,7468,4B,1384036,SPPS,4,Mixed-Dry,,South +Young,TX,63,48503,7,5,18124,3A,1384037,TRE,3,Mixed-Humid,,South +Zapata,TX,65,48505,7,5,13736,2B,1384038,TRE,2,Hot-Humid,,South +Zavala,TX,65,48507,7,5,9312,2B,1384039,TRE,2,Hot-Humid,,South +Beaver,UT,25,49001,8,2,7233,5B,1448015,BASN,5,Cold,,West +Box Elder,UT,25,49003,8,2,62684,6B,1455966,BASN,6,Cold,,West +Cache,UT,25,49005,8,1,142393,6B,1448017,BASN,6,Cold,,West +Carbon,UT,25,49007,8,2,20609,6B,1448018,BASN,6,Cold,,West +Daggett,UT,26,49009,8,1,992,6B,1448019,BASN,6,Cold,,West +Davis,UT,25,49011,8,2,373207,5B,1448020,BASN,5,Cold,,West +Duchesne,UT,26,49013,8,1,20477,6B,1448021,BASN,6,Cold,,West +Emery,UT,25,49015,8,2,10144,5B,1448022,BASN,5,Cold,,West +Garfield,UT,25,49017,8,2,5314,5B,1448023,BASN,5,Cold,,West +Grand,UT,25,49019,8,3,9706,5B,1448024,BASN,5,Cold,,West +Iron,UT,25,49021,8,2,64211,5B,1448025,BASN,5,Cold,,West +Juab,UT,25,49023,8,2,13023,5B,1455158,BASN,5,Cold,,West +Kane,UT,25,49025,8,3,8425,5B,1448026,BASN,5,Cold,,West +Millard,UT,25,49027,8,2,13437,5B,1448027,BASN,5,Cold,,West +Morgan,UT,26,49029,8,1,13000,6B,1448028,BASN,6,Cold,,West +Piute,UT,25,49031,8,2,1550,5B,1448029,BASN,5,Cold,,West +Rich,UT,26,49033,8,1,2670,6B,1448030,BASN,6,Cold,,West +Salt Lake,UT,25,49035,8,2,1185813,5B,1448031,BASN,5,Cold,,West +San Juan,UT,25,49037,8,2,14358,5B,1448032,BASN,5,Cold,,West +Sanpete,UT,25,49039,8,2,30277,5B,1448033,BASN,5,Cold,,West +Sevier,UT,25,49041,8,2,22344,5B,1448034,BASN,5,Cold,,West +Summit,UT,26,49043,8,1,42759,6B,1448035,BASN,6,Cold,,West +Tooele,UT,25,49045,8,2,82051,5B,1448036,BASN,5,Cold,,West +Uintah,UT,26,49047,8,1,37747,6B,1448037,BASN,6,Cold,,West +Utah,UT,25,49049,8,2,719174,5B,1448038,BASN,5,Cold,,West +Wasatch,UT,26,49051,8,1,37144,6B,1448039,BASN,6,Cold,,West +Washington,UT,25,49053,8,5,202452,3B,1448040,BASN,3,Hot-Dry,,West +Wayne,UT,25,49055,8,2,2614,5B,1448041,BASN,5,Cold,,West +Weber,UT,25,49057,8,2,271926,5B,1448042,BASN,5,Cold,,West +Addison,VT,129,50001,1,1,37720,6A,1461757,ISNE,6,Cold,,Northeast +Bennington,VT,129,50003,1,1,37183,6A,1461758,ISNE,6,Cold,,Northeast +Caledonia,VT,129,50005,1,1,30610,6A,1461759,ISNE,6,Cold,,Northeast +Chittenden,VT,129,50007,1,1,169481,6A,1461760,ISNE,6,Cold,,Northeast +Essex,VT,129,50009,1,1,6010,6A,1461761,ISNE,6,Cold,,Northeast +Franklin,VT,129,50011,1,1,50994,6A,1461762,ISNE,6,Cold,,Northeast +Grand Isle,VT,129,50013,1,1,7467,6A,1461763,ISNE,6,Cold,,Northeast +Lamoille,VT,129,50015,1,1,26060,6A,1461764,ISNE,6,Cold,,Northeast +Orange,VT,129,50017,1,1,29943,6A,1461765,ISNE,6,Cold,,Northeast +Orleans,VT,129,50019,1,1,27516,6A,1461766,ISNE,6,Cold,,Northeast +Rutland,VT,129,50021,1,1,60271,6A,1461767,ISNE,6,Cold,,Northeast +Washington,VT,129,50023,1,1,60142,6A,1461768,ISNE,6,Cold,,Northeast +Windham,VT,129,50025,1,1,45966,6A,1461769,ISNE,6,Cold,,Northeast +Windsor,VT,129,50027,1,1,58101,6A,1461770,ISNE,6,Cold,,Northeast +Accomack,VA,124,51001,5,4,33239,4A,1480091,PJME,4,Mixed-Humid,,South +Albemarle,VA,99,51003,5,3,115676,4A,1675170,PJMD,4,Mixed-Humid,,South +Alleghany,VA,99,51005,5,3,14595,4A,1673675,PJMD,4,Mixed-Humid,,South +Amelia,VA,99,51007,5,3,13480,4A,1497770,PJMD,4,Mixed-Humid,,South +Amherst,VA,118,51009,5,3,31396,4A,1480095,PJMD,4,Mixed-Humid,,South +Appomattox,VA,99,51011,5,3,16864,4A,1497238,PJMD,4,Mixed-Humid,,South +Arlington,VA,99,51013,5,3,234162,4A,1480097,PJMD,4,Mixed-Humid,,South +Augusta,VA,99,51015,5,3,78247,4A,1480098,PJMD,4,Mixed-Humid,,South +Bath,VA,99,51017,5,3,4051,4A,1673638,PJMD,4,Mixed-Humid,,South +Bedford,VA,118,51019,5,3,81525,4A,1674818,PJMW,4,Mixed-Humid,,South +Bland,VA,118,51021,5,3,6179,4A,1494613,PJMW,4,Mixed-Humid,,South +Botetourt,VA,118,51023,5,3,34125,4A,1674418,PJMD,4,Mixed-Humid,,South +Brunswick,VA,99,51025,5,4,15749,4A,1493961,PJMD,4,Mixed-Humid,,South +Buchanan,VA,118,51027,5,3,19087,4A,1497431,PJMW,4,Mixed-Humid,,South +Buckingham,VA,99,51029,5,3,16978,4A,1501502,PJMD,4,Mixed-Humid,,South +Campbell,VA,99,51031,5,3,55270,4A,1674917,PJMW,4,Mixed-Humid,,South +Caroline,VA,99,51033,5,3,32640,4A,1480107,PJMD,4,Mixed-Humid,,South +Carroll,VA,118,51035,5,3,29239,4A,1480108,PJMW,4,Mixed-Humid,,South +Charles City,VA,99,51036,5,4,6610,4A,1480109,PJMD,4,Mixed-Humid,,South +Charlotte,VA,99,51037,5,3,11336,4A,1492442,PJMD,4,Mixed-Humid,,South +Chesterfield,VA,99,51041,5,4,383876,4A,1480111,PJMD,4,Mixed-Humid,,South +Clarke,VA,100,51043,5,3,15466,4A,1690562,PJMW,4,Mixed-Humid,,South +Craig,VA,118,51045,5,3,4843,4A,1673664,PJMD,4,Mixed-Humid,,South +Culpeper,VA,99,51047,5,3,54973,4A,1497831,PJMW,4,Mixed-Humid,,South +Cumberland,VA,99,51049,5,3,9878,4A,1494109,PJMD,4,Mixed-Humid,,South +Dickenson,VA,118,51051,5,3,13640,4A,1497376,PJMW,4,Mixed-Humid,,South +Dinwiddie,VA,99,51053,5,4,28343,4A,1690739,PJMD,4,Mixed-Humid,,South +Essex,VA,99,51057,5,3,10598,4A,1480118,PJMD,4,Mixed-Humid,,South +Fairfax,VA,99,51059,5,3,1141878,4A,1480119,PJMD,4,Mixed-Humid,,South +Fauquier,VA,99,51061,5,3,75165,4A,1480120,PJMW,4,Mixed-Humid,,South +Floyd,VA,118,51063,5,3,15679,4A,1494354,PJMW,4,Mixed-Humid,,South +Fluvanna,VA,99,51065,5,3,28462,4A,1494061,PJMD,4,Mixed-Humid,,South +Franklin,VA,118,51067,5,3,55549,4A,1494434,PJMW,4,Mixed-Humid,,South +Frederick,VA,100,51069,5,3,95994,4A,1480124,PJMW,4,Mixed-Humid,,South +Giles,VA,118,51071,5,3,16457,4A,1494551,PJMW,4,Mixed-Humid,,South +Gloucester,VA,99,51073,5,4,40057,4A,1480126,PJMD,4,Mixed-Humid,,South +Goochland,VA,99,51075,5,3,27197,4A,1674271,PJMD,4,Mixed-Humid,,South +Grayson,VA,118,51077,5,3,15285,4A,1501196,PJMW,4,Mixed-Humid,,South +Greene,VA,100,51079,5,3,21301,4A,1480129,PJMD,4,Mixed-Humid,,South +Greensville,VA,99,51081,5,4,11133,4A,1501122,PJMD,4,Mixed-Humid,,South +Halifax,VA,99,51083,5,3,33432,4A,1496705,PJMD,4,Mixed-Humid,,South +Hanover,VA,99,51085,5,3,114148,4A,1480132,PJMD,4,Mixed-Humid,,South +Henrico,VA,99,51087,5,4,334760,4A,1480133,PJMD,4,Mixed-Humid,,South +Henry,VA,118,51089,5,3,49702,4A,1502770,PJMW,4,Mixed-Humid,,South +Highland,VA,99,51091,5,3,2339,4A,1673774,PJMD,4,Mixed-Humid,,South +Isle of Wight,VA,99,51093,5,4,40711,4A,1702378,PJMD,4,Mixed-Humid,,South +James City,VA,99,51095,5,4,82654,4A,1480135,PJMD,4,Mixed-Humid,,South +King and Queen,VA,99,51097,5,3,6720,4A,1480136,PJMD,4,Mixed-Humid,,South +King George,VA,99,51099,5,3,28568,4A,1480137,PJMD,4,Mixed-Humid,,South +King William,VA,99,51101,5,3,19030,4A,1480138,PJMD,4,Mixed-Humid,,South +Lancaster,VA,99,51103,5,4,10859,4A,1480139,PJMD,4,Mixed-Humid,,South +Lee,VA,118,51105,5,3,21745,4A,1496538,SRCE,4,Mixed-Humid,,South +Loudoun,VA,99,51107,5,3,436347,4A,1480141,PJMD,4,Mixed-Humid,,South +Louisa,VA,99,51109,5,3,41037,4A,1494707,PJMD,4,Mixed-Humid,,South +Lunenburg,VA,99,51111,5,3,12038,4A,1492239,PJMD,4,Mixed-Humid,,South +Madison,VA,100,51113,5,3,14128,4A,1494590,PJMD,4,Mixed-Humid,,South +Mathews,VA,99,51115,5,4,8514,4A,1480145,PJMD,4,Mixed-Humid,,South +Mecklenburg,VA,99,51117,5,3,30648,4A,1500747,PJMD,4,Mixed-Humid,,South +Middlesex,VA,99,51119,5,4,10924,4A,1480147,PJMD,4,Mixed-Humid,,South +Montgomery,VA,118,51121,5,3,98666,4A,1674630,PJMW,4,Mixed-Humid,,South +Nelson,VA,118,51125,5,3,14705,4A,1500936,PJMD,4,Mixed-Humid,,South +New Kent,VA,99,51127,5,4,26134,4A,1480150,PJMD,4,Mixed-Humid,,South +Northampton,VA,124,51131,5,4,12021,4A,1480151,PJME,4,Mixed-Humid,,South +Northumberland,VA,99,51133,5,4,12391,4A,1480152,PJMD,4,Mixed-Humid,,South +Nottoway,VA,99,51135,5,3,15566,4A,1493928,PJMD,4,Mixed-Humid,,South +Orange,VA,99,51137,5,3,38574,4A,1494761,PJMD,4,Mixed-Humid,,South +Page,VA,100,51139,5,3,23741,4A,1500440,PJMD,4,Mixed-Humid,,South +Patrick,VA,118,51141,5,3,17509,4A,1497999,PJMW,4,Mixed-Humid,,South +Pittsylvania,VA,99,51143,5,3,59571,4A,1480157,PJMD,4,Mixed-Humid,,South +Powhatan,VA,99,51145,5,3,32105,4A,1674225,PJMD,4,Mixed-Humid,,South +Prince Edward,VA,99,51147,5,3,22049,4A,1492359,PJMD,4,Mixed-Humid,,South +Prince George,VA,99,51149,5,4,42871,4A,1480160,PJMD,4,Mixed-Humid,,South +Prince William,VA,99,51153,5,3,489640,4A,1480161,PJMD,4,Mixed-Humid,,South +Pulaski,VA,118,51155,5,3,33655,4A,1501465,PJMW,4,Mixed-Humid,,South +Rappahannock,VA,100,51157,5,3,7414,4A,1673976,PJMW,4,Mixed-Humid,,South +Richmond,VA,99,51159,5,4,9184,4A,1480164,PJMD,4,Mixed-Humid,,South +Roanoke,VA,118,51161,5,3,97026,4A,1480165,PJMW,4,Mixed-Humid,,South +Rockbridge,VA,99,51163,5,3,22358,4A,1480166,PJMD,4,Mixed-Humid,,South +Rockingham,VA,99,51165,5,3,86568,4A,1488970,PJMD,4,Mixed-Humid,,South +Russell,VA,118,51167,5,3,25477,4A,1497573,PJMW,4,Mixed-Humid,,South +Scott,VA,118,51169,5,3,21433,4A,1498172,SRCE,4,Mixed-Humid,,South +Shenandoah,VA,99,51171,5,3,45228,4A,1673918,PJMD,4,Mixed-Humid,,South +Smyth,VA,118,51173,5,3,29216,4A,1500545,PJMW,4,Mixed-Humid,,South +Southampton,VA,99,51175,5,4,17975,4A,1480171,PJMD,4,Mixed-Humid,,South +Spotsylvania,VA,99,51177,5,3,149588,4A,1480172,PJMD,4,Mixed-Humid,,South +Stafford,VA,99,51179,5,3,165428,4A,1480173,PJMD,4,Mixed-Humid,,South +Surry,VA,99,51181,5,4,6593,4A,1480174,PJMD,4,Mixed-Humid,,South +Sussex,VA,99,51183,5,4,10757,4A,1690257,PJMD,4,Mixed-Humid,,South +Tazewell,VA,118,51185,5,3,39120,4A,1497748,PJMW,4,Mixed-Humid,,South +Warren,VA,100,51187,5,3,41843,4A,1674058,PJMW,4,Mixed-Humid,,South +Washington,VA,118,51191,5,3,54050,4A,1498359,PJMW,4,Mixed-Humid,,South +Westmoreland,VA,99,51193,5,4,19013,4A,1480179,PJMD,4,Mixed-Humid,,South +Wise,VA,118,51195,5,3,35174,4A,1496656,SRCE,4,Mixed-Humid,,South +Wythe,VA,118,51197,5,3,28104,4A,1501379,PJMW,4,Mixed-Humid,,South +York,VA,99,51199,5,4,70952,4A,1480182,PJMD,4,Mixed-Humid,,South +Alexandria,VA,99,51510,5,3,155230,4A,1498415,PJMD,4,Mixed-Humid,,South +Bristol,VA,118,51520,5,3,16807,4A,1498416,SRCE,4,Mixed-Humid,,South +Buena Vista,VA,99,51530,5,3,6566,4A,1498417,PJMD,4,Mixed-Humid,,South +Charlottesville,VA,99,51540,5,3,44983,4A,1789068,PJMD,4,Mixed-Humid,,South +Chesapeake,VA,99,51550,5,4,253886,4A,1498558,PJMD,4,Mixed-Humid,,South +Colonial Heights,VA,99,51570,5,4,18393,4A,1498420,PJMD,4,Mixed-Humid,,South +Covington,VA,99,51580,5,3,5545,4A,1789069,PJMD,4,Mixed-Humid,,South +Danville,VA,99,51590,5,3,41837,4A,1498421,PJMD,4,Mixed-Humid,,South +Emporia,VA,99,51595,5,4,5463,4A,1498422,PJMD,4,Mixed-Humid,,South +Fairfax City,VA,99,51600,5,3,25144,4A,1789070,PJMD,4,Mixed-Humid,,South +Falls Church,VA,99,51610,5,3,14685,4A,1498423,PJMD,4,Mixed-Humid,,South +Franklin City,VA,99,51620,5,4,8339,4A,1498424,PJMD,4,Mixed-Humid,,South +Fredericksburg,VA,99,51630,5,3,28928,4A,1498425,PJMD,4,Mixed-Humid,,South +Galax,VA,118,51640,5,3,6717,4A,1498426,PJMW,4,Mixed-Humid,,South +Hampton,VA,99,51650,5,4,137098,4A,1498554,PJMD,4,Mixed-Humid,,South +Harrisonburg,VA,99,51660,5,3,51082,4A,1498563,PJMD,4,Mixed-Humid,,South +Hopewell,VA,99,51670,5,4,22752,4A,1498428,PJMD,4,Mixed-Humid,,South +Lexington,VA,99,51678,5,3,7528,4A,1789071,PJMD,4,Mixed-Humid,,South +Lynchburg,VA,118,51680,5,3,79535,4A,1498429,PJMW,4,Mixed-Humid,,South +Manassas,VA,99,51683,5,3,42696,4A,1498430,PJMD,4,Mixed-Humid,,South +Manassas Park,VA,99,51685,5,3,16361,4A,1498431,PJMD,4,Mixed-Humid,,South +Martinsville,VA,118,51690,5,3,13763,4A,1789072,PJMW,4,Mixed-Humid,,South +Newport News,VA,99,51700,5,4,183118,4A,1498555,PJMD,4,Mixed-Humid,,South +Norfolk,VA,99,51710,5,4,230930,4A,1498557,PJMD,4,Mixed-Humid,,South +Norton,VA,118,51720,5,3,3492,4A,1498434,SRCE,4,Mixed-Humid,,South +Petersburg,VA,99,51730,5,4,33309,4A,1498435,PJMD,4,Mixed-Humid,,South +Poquoson,VA,99,51735,5,4,12635,4A,1498436,PJMD,4,Mixed-Humid,,South +Portsmouth,VA,99,51740,5,4,96793,4A,1498556,PJMD,4,Mixed-Humid,,South +Radford,VA,118,51750,5,3,16971,4A,1498438,PJMW,4,Mixed-Humid,,South +Richmond City,VA,99,51760,5,4,229247,4A,1789073,PJMD,4,Mixed-Humid,,South +Roanoke City,VA,118,51770,5,3,97171,4A,1498439,PJMW,4,Mixed-Humid,,South +Salem,VA,118,51775,5,3,25600,4A,1789074,PJMW,4,Mixed-Humid,,South +Staunton,VA,99,51790,5,3,25915,4A,1789075,PJMD,4,Mixed-Humid,,South +Suffolk,VA,99,51800,5,4,100659,4A,1498560,PJMD,4,Mixed-Humid,,South +Virginia Beach,VA,99,51810,5,4,453649,4A,1498559,PJMD,4,Mixed-Humid,,South +Waynesboro,VA,99,51820,5,3,23182,4A,1498443,PJMD,4,Mixed-Humid,,South +Williamsburg,VA,99,51830,5,4,15847,4A,1789076,PJMD,4,Mixed-Humid,,South +Winchester,VA,100,51840,5,3,27617,4A,1789077,PJMW,4,Mixed-Humid,,South +Adams,WA,3,53001,9,2,20820,5B,1531601,NWPP,5,Cold,,West +Asotin,WA,2,53003,9,2,22549,5B,1533502,NWPP,5,Cold,,West +Benton,WA,2,53005,9,3,215219,5B,1513302,NWPP,5,Cold,,West +Chelan,WA,1,53007,9,2,79997,5B,1531932,NWPP,5,Cold,,West +Clallam,WA,2,53009,9,2,77616,4C,1531341,NWPP,4,Marine,,West +Clark,WA,2,53011,9,3,521150,4C,1531820,NWPP,4,Marine,,West +Columbia,WA,2,53013,9,2,4053,5B,1513273,NWPP,5,Cold,,West +Cowlitz,WA,2,53015,9,3,112864,4C,1529156,NWPP,4,Marine,,West +Douglas,WA,4,53017,9,2,44798,5B,1531818,NWPP,5,Cold,,West +Ferry,WA,3,53019,9,1,7497,6B,1531821,NWPP,6,Cold,,West +Franklin,WA,3,53021,9,3,99034,5B,1531822,NWPP,5,Cold,,West +Garfield,WA,2,53023,9,2,2363,5B,1533500,NWPP,5,Cold,,West +Grant,WA,4,53025,9,2,102678,5B,1531924,NWPP,5,Cold,,West +Grays Harbor,WA,2,53027,9,3,77290,4C,1531823,NWPP,4,Marine,,West +Island,WA,1,53029,9,2,86267,4C,1513272,NWPP,4,Marine,,West +Jefferson,WA,2,53031,9,3,33714,4C,1531936,NWPP,4,Marine,,West +King,WA,1,53033,9,3,2271380,4C,1531933,NWPP,4,Marine,,West +Kitsap,WA,1,53035,9,3,277658,4C,1529223,NWPP,4,Marine,,West +Kittitas,WA,1,53037,9,2,45508,5B,1531926,NWPP,5,Cold,,West +Klickitat,WA,2,53039,9,2,23589,5B,1529219,NWPP,5,Cold,,West +Lewis,WA,2,53041,9,3,86154,4C,1531927,NWPP,4,Marine,,West +Lincoln,WA,3,53043,9,1,11738,5B,1514052,NWPP,5,Cold,,West +Mason,WA,2,53045,9,3,68389,4C,1529221,NWPP,4,Marine,,West +Okanogan,WA,3,53047,9,1,43712,6B,1531928,NWPP,6,Cold,,West +Pacific,WA,2,53049,9,3,24200,4C,1513274,NWPP,4,Marine,,West +Pend Oreille,WA,3,53051,9,1,14361,6B,1529157,NWPP,6,Cold,,West +Pierce,WA,1,53053,9,3,928696,4C,1529159,NWPP,4,Marine,,West +San Juan,WA,1,53055,9,2,18566,4C,1531931,NWPP,4,Marine,,West +Skagit,WA,1,53057,9,3,131417,4C,1531402,NWPP,4,Marine,,West +Skamania,WA,2,53059,9,3,12640,5B,1529220,NWPP,5,Cold,,West +Snohomish,WA,1,53061,9,3,844761,4C,1529222,NWPP,4,Marine,,West +Spokane,WA,3,53063,9,2,551455,5B,1529225,NWPP,5,Cold,,West +Stevens,WA,3,53065,9,1,48837,6B,1531930,NWPP,6,Cold,,West +Thurston,WA,1,53067,9,3,299003,4C,1529226,NWPP,4,Marine,,West +Wahkiakum,WA,2,53069,9,3,4765,4C,1513275,NWPP,4,Marine,,West +Walla Walla,WA,2,53071,9,3,61568,5B,1531819,NWPP,5,Cold,,West +Whatcom,WA,1,53073,9,2,231919,4C,1529224,NWPP,4,Marine,,West +Whitman,WA,3,53075,9,2,48012,5B,1533501,NWPP,5,Cold,,West +Yakima,WA,2,53077,9,2,256643,5C,1531929,NWPP,5,Cold,,West +Barbour,WV,116,54001,5,2,15378,5A,1696996,PJMW,5,Cold,,South +Berkeley,WV,116,54003,5,3,132440,4A,1550008,PJMW,4,Mixed-Humid,,South +Boone,WV,117,54005,5,3,20576,4A,1550009,PJMW,4,Mixed-Humid,,South +Braxton,WV,116,54007,5,3,12162,4A,1550010,PJMW,4,Mixed-Humid,,South +Brooke,WV,116,54009,5,2,21373,5A,1558262,PJMW,5,Cold,,South +Cabell,WV,117,54011,5,3,92082,4A,1550012,PJMW,4,Mixed-Humid,,South +Calhoun,WV,116,54013,5,3,5959,4A,1696945,PJMW,4,Mixed-Humid,,South +Clay,WV,116,54015,5,3,7783,4A,1550014,PJMW,4,Mixed-Humid,,South +Doddridge,WV,116,54017,5,2,7680,5A,1689476,PJMW,5,Cold,,South +Fayette,WV,117,54019,5,2,39072,5A,1560095,PJMW,5,Cold,,South +Gilmer,WV,116,54021,5,3,7254,4A,1689673,PJMW,4,Mixed-Humid,,South +Grant,WV,116,54023,5,2,10921,5A,1697238,PJMW,5,Cold,,South +Greenbrier,WV,116,54025,5,2,32149,5A,1557518,PJMW,5,Cold,,South +Hampshire,WV,116,54027,5,3,23649,5A,1718644,PJMW,5,Cold,,South +Hancock,WV,116,54029,5,2,28145,5A,1560574,PJMW,5,Cold,,South +Hardy,WV,116,54031,5,2,14251,5A,1718557,PJMW,5,Cold,,South +Harrison,WV,116,54033,5,2,64639,5A,1718426,PJMW,5,Cold,,South +Jackson,WV,116,54035,5,3,27593,4A,1559963,PJMW,4,Mixed-Humid,,South +Jefferson,WV,116,54037,5,3,59787,4A,1550025,PJMW,4,Mixed-Humid,,South +Kanawha,WV,117,54039,5,3,174805,4A,1550026,PJMW,4,Mixed-Humid,,South +Lewis,WV,116,54041,5,2,16500,5A,1550027,PJMW,5,Cold,,South +Lincoln,WV,117,54043,5,3,19701,4A,1550028,PJMW,4,Mixed-Humid,,South +Logan,WV,117,54045,5,3,30827,4A,1550029,PJMW,4,Mixed-Humid,,South +McDowell,WV,117,54047,5,3,17439,4A,1689162,PJMW,4,Mixed-Humid,,South +Marion,WV,116,54049,5,2,55807,5A,1718173,PJMW,5,Cold,,South +Marshall,WV,116,54051,5,2,29405,5A,1717539,PJMW,5,Cold,,South +Mason,WV,117,54053,5,3,24765,4A,1560254,PJMW,4,Mixed-Humid,,South +Mercer,WV,117,54055,5,3,58057,4A,1557645,PJMW,4,Mixed-Humid,,South +Mineral,WV,116,54057,5,2,26867,5A,1717890,PJMW,5,Cold,,South +Mingo,WV,117,54059,5,3,22023,4A,1550036,PJMW,4,Mixed-Humid,,South +Monongalia,WV,116,54061,5,2,107718,5A,1550037,PJMW,5,Cold,,South +Monroe,WV,116,54063,5,3,12382,4A,1557702,PJMW,4,Mixed-Humid,,South +Morgan,WV,116,54065,5,3,17649,4A,1557950,PJMW,4,Mixed-Humid,,South +Nicholas,WV,116,54067,5,2,24169,5A,1550040,PJMW,5,Cold,,South +Ohio,WV,116,54069,5,2,41194,5A,1717163,PJMW,5,Cold,,South +Pendleton,WV,116,54071,5,2,6029,5A,1550042,PJMW,5,Cold,,South +Pleasants,WV,116,54073,5,3,7428,4A,1678557,PJMW,4,Mixed-Humid,,South +Pocahontas,WV,116,54075,5,2,7765,5A,1550044,PJMW,5,Cold,,South +Preston,WV,116,54077,5,2,34099,5A,1558642,PJMW,5,Cold,,South +Putnam,WV,117,54079,5,3,56962,4A,1550046,PJMW,4,Mixed-Humid,,South +Raleigh,WV,117,54081,5,2,72356,5A,1550047,PJMW,5,Cold,,South +Randolph,WV,116,54083,5,2,27350,5A,1550048,PJMW,5,Cold,,South +Ritchie,WV,116,54085,5,3,8167,4A,1689049,PJMW,4,Mixed-Humid,,South +Roane,WV,116,54087,5,3,13743,4A,1550050,PJMW,4,Mixed-Humid,,South +Summers,WV,116,54089,5,2,11581,5A,1557805,PJMW,5,Cold,,South +Taylor,WV,116,54091,5,2,16388,5A,1689856,PJMW,5,Cold,,South +Tucker,WV,116,54093,5,2,6604,5A,1689423,PJMW,5,Cold,,South +Tyler,WV,116,54095,5,3,7919,4A,1678706,PJMW,4,Mixed-Humid,,South +Upshur,WV,116,54097,5,2,23529,5A,1696800,PJMW,5,Cold,,South +Wayne,WV,117,54099,5,3,37686,4A,1550056,PJMW,4,Mixed-Humid,,South +Webster,WV,116,54101,5,2,8045,5A,1550057,PJMW,5,Cold,,South +Wetzel,WV,116,54103,5,2,13890,5A,1717836,PJMW,5,Cold,,South +Wirt,WV,116,54105,5,3,5000,4A,1678877,PJMW,4,Mixed-Humid,,South +Wood,WV,116,54107,5,3,83052,4A,1560558,PJMW,4,Mixed-Humid,,South +Wyoming,WV,117,54109,5,3,20277,4A,1550061,PJMW,4,Mixed-Humid,,South +Adams,WI,76,55001,3,1,21449,6A,1581060,MISW,6,Cold,,Midwest +Ashland,WI,46,55003,3,1,16079,7,1581061,MISW,7,Very Cold,,Midwest +Barron,WI,46,55005,3,1,46833,6A,1581062,MISW,6,Cold,,Midwest +Bayfield,WI,46,55007,3,1,16769,7,1581063,MISW,7,Very Cold,,Midwest +Brown,WI,75,55009,3,1,271417,6A,1581064,MISW,6,Cold,,Midwest +Buffalo,WI,46,55011,3,1,13419,6A,1581065,MISW,6,Cold,,Midwest +Burnett,WI,46,55013,3,1,17092,7,1581066,MISW,7,Very Cold,,Midwest +Calumet,WI,76,55015,3,1,53199,6A,1581067,MISW,6,Cold,,Midwest +Chippewa,WI,46,55017,3,1,66970,6A,1581068,MISW,6,Cold,,Midwest +Clark,WI,46,55019,3,1,34774,6A,1581069,MISW,6,Cold,,Midwest +Columbia,WI,76,55021,3,1,58091,6A,1581070,MISW,6,Cold,,Midwest +Crawford,WI,77,55023,3,1,15944,6A,1581071,MISW,6,Cold,,Midwest +Dane,WI,78,55025,3,1,575347,6A,1581072,MISW,6,Cold,,Midwest +Dodge,WI,76,55027,3,1,88231,6A,1581073,MISW,6,Cold,,Midwest +Door,WI,75,55029,3,1,30562,6A,1581074,MISW,6,Cold,,Midwest +Douglas,WI,46,55031,3,1,44264,7,1581075,MISW,7,Very Cold,,Midwest +Dunn,WI,46,55033,3,1,45794,6A,1581076,MISW,6,Cold,,Midwest +Eau Claire,WI,46,55035,3,1,107903,6A,1581077,MISW,6,Cold,,Midwest +Florence,WI,75,55037,3,1,4682,7,1581078,MISW,7,Very Cold,,Midwest +Fond du Lac,WI,76,55039,3,1,103948,6A,1581079,MISW,6,Cold,,Midwest +Forest,WI,75,55041,3,1,9325,7,1581080,MISW,7,Very Cold,,Midwest +Grant,WI,77,55043,3,1,51409,6A,1581081,MISW,6,Cold,,Midwest +Green,WI,78,55045,3,1,36951,6A,1581082,MISW,6,Cold,,Midwest +Green Lake,WI,76,55047,3,1,19344,6A,1581083,MISW,6,Cold,,Midwest +Iowa,WI,77,55049,3,1,23956,6A,1581084,MISW,6,Cold,,Midwest +Iron,WI,46,55051,3,1,6228,7,1581085,MISW,7,Very Cold,,Midwest +Jackson,WI,77,55053,3,1,20855,6A,1581086,MISW,6,Cold,,Midwest +Jefferson,WI,79,55055,3,1,85743,6A,1581087,MISW,6,Cold,,Midwest +Juneau,WI,76,55057,3,1,26594,6A,1581088,MISW,6,Cold,,Midwest +Kenosha,WI,79,55059,3,1,167488,6A,1581089,MISW,6,Cold,,Midwest +Kewaunee,WI,75,55061,3,1,20690,6A,1581090,MISW,6,Cold,,Midwest +La Crosse,WI,46,55063,3,1,120486,6A,1581091,MISW,6,Cold,,Midwest +Lafayette,WI,77,55065,3,1,16945,6A,1581092,MISW,6,Cold,,Midwest +Langlade,WI,75,55067,3,1,19404,7,1581093,MISW,7,Very Cold,,Midwest +Lincoln,WI,75,55069,3,1,28405,7,1581094,MISW,7,Very Cold,,Midwest +Manitowoc,WI,75,55071,3,1,81331,6A,1581095,MISW,6,Cold,,Midwest +Marathon,WI,75,55073,3,1,138612,6A,1581096,MISW,6,Cold,,Midwest +Marinette,WI,75,55075,3,1,42106,6A,1581097,MISW,6,Cold,,Midwest +Marquette,WI,76,55077,3,1,15838,6A,1581098,MISW,6,Cold,,Midwest +Menominee,WI,76,55078,3,1,4226,6A,1581099,MISW,6,Cold,,Midwest +Milwaukee,WI,79,55079,3,1,916205,6A,1581100,MISW,6,Cold,,Midwest +Monroe,WI,77,55081,3,1,46151,6A,1581101,MISW,6,Cold,,Midwest +Oconto,WI,75,55083,3,1,39775,6A,1581102,MISW,6,Cold,,Midwest +Oneida,WI,75,55085,3,1,38226,7,1581103,MISW,7,Very Cold,,Midwest +Outagamie,WI,76,55087,3,1,193234,6A,1581104,MISW,6,Cold,,Midwest +Ozaukee,WI,79,55089,3,1,93460,6A,1581105,MISW,6,Cold,,Midwest +Pepin,WI,46,55091,3,1,7441,6A,1581106,MISW,6,Cold,,Midwest +Pierce,WI,46,55093,3,1,43026,6A,1581107,MISW,6,Cold,,Midwest +Polk,WI,46,55095,3,1,45762,6A,1581108,MISW,6,Cold,,Midwest +Portage,WI,75,55097,3,1,71024,6A,1581109,MISW,6,Cold,,Midwest +Price,WI,46,55099,3,1,14102,7,1581110,MISW,7,Very Cold,,Midwest +Racine,WI,79,55101,3,1,196613,6A,1581111,MISW,6,Cold,,Midwest +Richland,WI,77,55103,3,1,17197,6A,1581112,MISW,6,Cold,,Midwest +Rock,WI,78,55105,3,1,164278,6A,1581113,MISW,6,Cold,,Midwest +Rusk,WI,46,55107,3,1,14143,6A,1581114,MISW,6,Cold,,Midwest +St. Croix,WI,46,55109,3,1,96763,6A,1581833,MISW,6,Cold,,Midwest +Sauk,WI,77,55111,3,1,65920,6A,1581115,MISW,6,Cold,,Midwest +Sawyer,WI,46,55113,3,1,18552,7,1581116,MISW,7,Very Cold,,Midwest +Shawano,WI,76,55115,3,1,41109,6A,1581117,MISW,6,Cold,,Midwest +Sheboygan,WI,79,55117,3,1,117752,6A,1581118,MISW,6,Cold,,Midwest +Taylor,WI,46,55119,3,1,20058,7,1581119,MISW,7,Very Cold,,Midwest +Trempealeau,WI,46,55121,3,1,30899,6A,1581120,MISW,6,Cold,,Midwest +Vernon,WI,77,55123,3,1,31170,6A,1581121,MISW,6,Cold,,Midwest +Vilas,WI,75,55125,3,1,23885,7,1581122,MISW,7,Very Cold,,Midwest +Walworth,WI,79,55127,3,1,105822,6A,1581123,MISW,6,Cold,,Midwest +Washburn,WI,46,55129,3,1,16930,7,1581124,MISW,7,Very Cold,,Midwest +Washington,WI,79,55131,3,1,138168,6A,1581125,MISW,6,Cold,,Midwest +Waukesha,WI,79,55133,3,1,412591,6A,1581126,MISW,6,Cold,,Midwest +Waupaca,WI,76,55135,3,1,51388,6A,1581127,MISW,6,Cold,,Midwest +Waushara,WI,76,55137,3,1,24934,6A,1581128,MISW,6,Cold,,Midwest +Winnebago,WI,76,55139,3,1,171735,6A,1581129,MISW,6,Cold,,Midwest +Wood,WI,76,55141,3,1,73939,6A,1581130,MISW,6,Cold,,Midwest +Albany,WY,24,56001,8,1,38257,6B,1605066,RMRG,6,Cold,,West +Big Horn,WY,21,56003,8,1,12018,6B,1605067,BASN,6,Cold,,West +Campbell,WY,23,56005,8,1,47498,6B,1605068,RMRG,6,Cold,,West +Carbon,WY,24,56007,8,1,14334,6B,1605069,BASN,6,Cold,,West +Converse,WY,24,56009,8,1,13809,6B,1605070,RMRG,6,Cold,,West +Crook,WY,23,56011,8,1,7592,6B,1605071,RMRG,6,Cold,,West +Fremont,WY,21,56013,8,1,39815,6B,1605072,BASN,6,Cold,,West +Goshen,WY,24,56015,8,2,12642,5B,1605073,RMRG,5,Cold,,West +Hot Springs,WY,21,56017,8,1,4661,6B,1605074,BASN,6,Cold,,West +Johnson,WY,22,56019,8,1,8759,6B,1609191,RMRG,6,Cold,,West +Laramie,WY,24,56021,8,1,100984,6B,1605075,RMRG,6,Cold,,West +Lincoln,WY,21,56023,8,1,20880,7,1605076,BASN,7,Very Cold,,West +Natrona,WY,24,56025,8,1,79941,6B,1605077,BASN,6,Cold,,West +Niobrara,WY,24,56027,8,1,2354,6B,1605078,RMRG,6,Cold,,West +Park,WY,21,56029,8,1,30735,6B,1605079,BASN,6,Cold,,West +Platte,WY,24,56031,8,2,8546,5B,1605080,RMRG,5,Cold,,West +Sheridan,WY,22,56033,8,1,32519,6B,1605081,RMRG,6,Cold,,West +Sublette,WY,21,56035,8,1,8969,7,1605082,BASN,7,Very Cold,,West +Sweetwater,WY,21,56037,8,1,41249,6B,1609192,BASN,6,Cold,,West +Teton,WY,21,56039,8,1,23232,7,1605083,BASN,7,Very Cold,,West +Uinta,WY,21,56041,8,1,20745,6B,1605084,BASN,6,Cold,,West +Washakie,WY,21,56043,8,1,7710,6B,1605085,BASN,6,Cold,,West +Weston,WY,23,56045,8,1,6808,6B,1605086,RMRG,6,Cold,,West diff --git a/scout/supporting_data/base_disagg/test01_factors_differences.ipynb b/scout/supporting_data/base_disagg/test01_factors_differences.ipynb new file mode 100644 index 00000000..1ea9c0cd --- /dev/null +++ b/scout/supporting_data/base_disagg/test01_factors_differences.ipynb @@ -0,0 +1,230 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "b5155e57-6bd6-46ed-9eee-d397c387b5e9", + "metadata": {}, + "source": [ + "### FIND DIFFERENCE BETWEEN 2024 and 2023 FACTORS" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cb0bd8b5-53a7-4ddd-b842-c634d8ec666c", + "metadata": {}, + "outputs": [], + "source": [ + "## Absolute difference\n", + "import pandas as pd\n", + "\n", + "filedir = \"./output/\"\n", + "# filename = \"Com_Cdiv_EMM_amy2018.csv\"\n", + "\n", + "\n", + "filenames = [\"Com_Cdiv_State_amy2018.csv\", \"Com_Cdiv_EMM_amy2018.csv\",\n", + " \"Res_Cdiv_EMM_amy2018.csv\", \"Res_Cdiv_State_amy2018.csv\"]\n", + " \n", + "for filename in filenames:\n", + " file1_path = f\"{filedir}2023/{filename}\"\n", + " file2_path = f\"{filedir}2024_end_use/{filename}\"\n", + " df1 = pd.read_csv(file1_path)\n", + " df2 = pd.read_csv(file2_path)\n", + "\n", + " sorted_df1 = df1.sort_values(by=[\"End use\", \"CDIV\"]).reset_index(drop=True)\n", + " sorted_df2 = df2.sort_values(by=[\"End use\", \"CDIV\"]).reset_index(drop=True)\n", + " # if filename ==\"Com_Cdiv_State_amy2018.csv\":\n", + " # print(filename)\n", + " # print(sorted_df1.iloc[0:9])\n", + " # print(sorted_df2.iloc[0:9])\n", + " \n", + " common_columns = sorted_df1.columns.intersection(sorted_df2.columns)\n", + " df1_common = sorted_df1[common_columns]\n", + " df2_common = sorted_df2[common_columns]\n", + " df1_numeric = df1_common.select_dtypes(include='number')\n", + " df2_numeric = df2_common.select_dtypes(include='number')\n", + " absolute_difference_df = df2_numeric.subtract(df1_numeric, fill_value=0)\n", + " absolute_difference_df_from_third_column = absolute_difference_df.iloc[:, 1:]\n", + " # percentage_difference_df = df1_numeric.subtract(df2_numeric, fill_value=0).abs().divide(df1_numeric, fill_value=1)\n", + " # percentage_difference_df_from_third_column = percentage_difference_df.iloc[:, 1:]\n", + "\n", + " shifted_absolute_difference_df = pd.concat([pd.DataFrame(index=df1_common.index, columns=[\"placeholder\"]), absolute_difference_df_from_third_column], axis=1)\n", + " df_with_inserted_columns = pd.concat([df1_common.iloc[:, :2], shifted_absolute_difference_df], axis=1)\n", + "\n", + " df_with_first_two_columns = pd.concat([df1_common.iloc[:, :2], absolute_difference_df_from_third_column], axis=1)\n", + " # df_with_first_two_columns = pd.concat([df1_common.iloc[:, :2], percentage_difference_df_from_third_column], axis=1)\n", + " \n", + " df_with_first_two_columns = df_with_first_two_columns.fillna(0)\n", + " output_path = f\"{filedir}pctdiff/absdiff_{filename}\"\n", + " df_with_first_two_columns.to_csv(output_path, index=False)\n", + " print(\"COMPLETE\")\n", + "\n", + "# tools.display_dataframe_to_user(name=\"Absolute Differences (Starting from Third Column)\", dataframe=absolute_difference_df_from_third_column)\n", + "# # Output path for reference\n", + "# output_path\n", + "\n", + "\n", + "\n", + "#### ResStock, number of homes; ComStock, square footage\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "85c03de3-d185-49ec-b27a-85e4bc62e91d", + "metadata": {}, + "outputs": [], + "source": [ + "## Percent difference\n", + "import pandas as pd\n", + "\n", + "filedir = \"./output/\"\n", + "# filename = \"Com_Cdiv_EMM_amy2018.csv\"\n", + "\n", + "\n", + "filenames = [\"Com_Cdiv_State_amy2018.csv\", \"Com_Cdiv_EMM_amy2018.csv\",\n", + " \"Res_Cdiv_EMM_amy2018.csv\", \"Res_Cdiv_State_amy2018.csv\"]\n", + " \n", + "for filename in filenames:\n", + " file1_path = f\"{filedir}2023/{filename}\"\n", + " file2_path = f\"{filedir}2024_end_use/{filename}\"\n", + " df1 = pd.read_csv(file1_path)\n", + " df2 = pd.read_csv(file2_path)\n", + "\n", + " sorted_df1 = df1.sort_values(by=[\"End use\", \"CDIV\"]).reset_index(drop=True)\n", + " sorted_df2 = df2.sort_values(by=[\"End use\", \"CDIV\"]).reset_index(drop=True)\n", + " # if filename ==\"Com_Cdiv_State_amy2018.csv\":\n", + " # print(filename)\n", + " # print(sorted_df1.iloc[0:9])\n", + " # print(sorted_df2.iloc[0:9])\n", + " \n", + " common_columns = sorted_df1.columns.intersection(sorted_df2.columns)\n", + " df1_common = sorted_df1[common_columns]\n", + " df2_common = sorted_df2[common_columns]\n", + " df1_numeric = df1_common.select_dtypes(include='number')\n", + " df2_numeric = df2_common.select_dtypes(include='number')\n", + " # absolute_difference_df = df1_numeric.subtract(df2_numeric, fill_value=0).abs()\n", + " # absolute_difference_df_from_third_column = absolute_difference_df.iloc[:, 1:]\n", + " percentage_difference_df = df2_numeric.subtract(df1_numeric, fill_value=0).divide(df1_numeric, fill_value=1)\n", + " percentage_difference_df_from_third_column = percentage_difference_df.iloc[:, 1:]\n", + "\n", + " # shifted_absolute_difference_df = pd.concat([pd.DataFrame(index=df1_common.index, columns=[\"placeholder\"]), absolute_difference_df_from_third_column], axis=1)\n", + " # df_with_inserted_columns = pd.concat([df1_common.iloc[:, :2], shifted_absolute_difference_df], axis=1)\n", + "\n", + " # df_with_first_two_columns = pd.concat([df1_common.iloc[:, :2], absolute_difference_df_from_third_column], axis=1)\n", + " df_with_first_two_columns = pd.concat([df1_common.iloc[:, :2], percentage_difference_df_from_third_column], axis=1)\n", + " \n", + " df_with_first_two_columns = df_with_first_two_columns.fillna(0)\n", + " output_path = f\"{filedir}pctdiff/pctdiff_{filename}\"\n", + " df_with_first_two_columns.to_csv(output_path, index=False)\n", + " print(\"COMPLETE\")\n", + "\n", + "# tools.display_dataframe_to_user(name=\"Absolute Differences (Starting from Third Column)\", dataframe=absolute_difference_df_from_third_column)\n", + "# # Output path for reference\n", + "# output_path\n", + "\n", + "\n", + "\n", + "#### ResStock, number of homes; ComStock, square footage\n" + ] + }, + { + "cell_type": "markdown", + "id": "3b3725cd-ba72-459f-a62a-599c7572cbad", + "metadata": {}, + "source": [ + "### End use and Stock" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "79cb7df7-1b26-470f-a32c-fa083fcbedf0", + "metadata": {}, + "outputs": [], + "source": [ + "## Percent difference\n", + "import pandas as pd\n", + "\n", + "filedir = \"./output/\"\n", + "# filename = \"Com_Cdiv_EMM_amy2018.csv\"\n", + "\n", + "\n", + "filenames = [\"Com_Cdiv_State_amy2018.csv\", \"Com_Cdiv_EMM_amy2018.csv\",\n", + " \"Res_Cdiv_EMM_amy2018.csv\", \"Res_Cdiv_State_amy2018.csv\"]\n", + " \n", + "for filename in filenames:\n", + " file_stock = filename.replace(\".csv\", \"_Stock.csv\")\n", + " file1_path = f\"{filedir}2024_end_use/{filename}\"\n", + " file2_path = f\"{filedir}2024_end_use/{file_stock}\"\n", + " df1 = pd.read_csv(file1_path)\n", + " df2 = pd.read_csv(file2_path)\n", + "\n", + " sorted_df1 = df1.sort_values(by=[\"End use\", \"CDIV\"]).reset_index(drop=True)\n", + " sorted_df2 = df2.sort_values(by=[\"End use\", \"CDIV\"]).reset_index(drop=True)\n", + " # if filename ==\"Com_Cdiv_State_amy2018.csv\":\n", + " # print(filename)\n", + " # print(sorted_df1.iloc[0:9])\n", + " # print(sorted_df2.iloc[0:9])\n", + " \n", + " common_columns = sorted_df1.columns.intersection(sorted_df2.columns)\n", + " df1_common = sorted_df1[common_columns]\n", + " df2_common = sorted_df2[common_columns]\n", + " df1_numeric = df1_common.select_dtypes(include='number')\n", + " df2_numeric = df2_common.select_dtypes(include='number')\n", + " # absolute_difference_df = df1_numeric.subtract(df2_numeric, fill_value=0).abs()\n", + " # absolute_difference_df_from_third_column = absolute_difference_df.iloc[:, 1:]\n", + " percentage_difference_df = df2_numeric.subtract(df1_numeric, fill_value=0).divide(df1_numeric, fill_value=1)\n", + " percentage_difference_df_from_third_column = percentage_difference_df.iloc[:, 1:]\n", + "\n", + " # shifted_absolute_difference_df = pd.concat([pd.DataFrame(index=df1_common.index, columns=[\"placeholder\"]), absolute_difference_df_from_third_column], axis=1)\n", + " # df_with_inserted_columns = pd.concat([df1_common.iloc[:, :2], shifted_absolute_difference_df], axis=1)\n", + "\n", + " # df_with_first_two_columns = pd.concat([df1_common.iloc[:, :2], absolute_difference_df_from_third_column], axis=1)\n", + " df_with_first_two_columns = pd.concat([df1_common.iloc[:, :2], percentage_difference_df_from_third_column], axis=1)\n", + " \n", + " df_with_first_two_columns = df_with_first_two_columns.fillna(0)\n", + " output_path = f\"{filedir}pctdiff/pctdiff_stock_{filename}\"\n", + " df_with_first_two_columns.to_csv(output_path, index=False)\n", + " print(\"COMPLETE\")\n", + "\n", + "# tools.display_dataframe_to_user(name=\"Absolute Differences (Starting from Third Column)\", dataframe=absolute_difference_df_from_third_column)\n", + "# # Output path for reference\n", + "# output_path\n", + "\n", + "\n", + "\n", + "#### ResStock, number of homes; ComStock, square footage\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b14d3f76-0dc4-4a9d-be0b-375d8e2e053b", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/scout/supporting_data/base_disagg/test02_Validate_allversions.ipynb b/scout/supporting_data/base_disagg/test02_Validate_allversions.ipynb new file mode 100644 index 00000000..7a40c82f --- /dev/null +++ b/scout/supporting_data/base_disagg/test02_Validate_allversions.ipynb @@ -0,0 +1,903 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "43c1d3c8-c1a3-4ebf-a130-03acabd9dbaf", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "file_dir = \"test_compare_base_disagg\"\n", + "file_path = f\"./{file_dir}/mseg_res_com_state_2024.json\"\n", + "with open(file_path, \"r\") as file:\n", + " dataset = json.load(file)\n", + "\n", + "print(\"RESIDENTIAL\")\n", + "print(dataset ['CA']['single family home']['electricity'].keys())\n", + "print(\"COMMERCIAL\")\n", + "print(dataset ['CA']['large office']['electricity'].keys())" + ] + }, + { + "cell_type": "markdown", + "id": "d537eb70-c479-473a-892a-5946bd836388", + "metadata": {}, + "source": [ + "### 1. Data preparation for Scout output using Stock data (electricity)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "629d7223-9e35-445e-a04e-c8924ae51b79", + "metadata": {}, + "outputs": [], + "source": [ + "def is_valid_stock(stock):\n", + " # If stock is a string and equals \"NA\", it's not valid.\n", + " if isinstance(stock, str):\n", + " if stock == \"NA\":\n", + " return False\n", + " # Otherwise, if it's a non-\"NA\" string, you could choose to accept or reject it.\n", + " return True\n", + "\n", + " # If stock is a dictionary, check its year values.\n", + " elif isinstance(stock, dict):\n", + " # If the dictionary is empty, it isn't valid.\n", + " if not stock:\n", + " return False\n", + " # If all values in the dictionary are 0.0, then it's not valid.\n", + " if all(float(value) == 0.0 for value in stock.values()):\n", + " return False\n", + " # Otherwise, it has at least one non-zero value.\n", + " return True\n", + "\n", + " # Any other type is considered invalid.\n", + " return False\n", + "\n", + "\n", + "######################################\n", + "\n", + "def dataprep_compare_elec(geo, strout, energy_or_stock, dir_2023, dir_new):\n", + " def compute_relative_shares(data_dict):\n", + " \"\"\"Convert absolute values to state-level shares by end-use and year.\"\"\"\n", + " relative_data = {state: {end_use: {} for end_use in end_uses_all} for state in states}\n", + " for end_use in end_uses_all:\n", + " for year in years:\n", + " total = sum(data_dict[state][end_use][year] for state in states)\n", + " for state in states:\n", + " if total > 0:\n", + " share = data_dict[state][end_use][year] / total\n", + " else:\n", + " share = 0\n", + " relative_data[state][end_use][year] = share\n", + " return relative_data\n", + " \n", + " \n", + "\n", + "\n", + " \n", + " if strout == \"Elec_End-Use_EUSS2024_vs_End-Use_EUSS2023\":\n", + " file_paths = [f\"./{dir_new}/mseg_res_com_{geo}_2024_eu_factors.json\", f\"./{dir_2023}/mseg_res_com_{geo}_2023.json\"]\n", + " elif strout == \"Elec_Tech_EUSS2024_vs_End-Use_EUSS2023\": \n", + " file_paths = [f\"./{dir_new}/mseg_res_com_{geo}_2024_tech_factors.json\", f\"./{dir_2023}/mseg_res_com_{geo}_2023.json\"]\n", + " elif strout == \"Elec_Tech_EUSS2024_vs_End-Use_EUSS2024\":\n", + " file_paths = [f\"./{dir_new}/mseg_res_com_{geo}_2024_tech_factors.json\", f\"./{dir_new}/mseg_res_com_{geo}_2024_eu_factors.json\"]\n", + " \n", + " \n", + " datasets = []\n", + " \n", + " for path in file_paths:\n", + " with open(path, \"r\") as file:\n", + " datasets.append(json.load(file))\n", + " \n", + " states = set(datasets[0].keys()).intersection(set(datasets[1].keys()))\n", + " \n", + " end_uses_all = set()\n", + " for state in states:\n", + " for building_type in datasets[0][state]:\n", + " for energy_source in datasets[0][state][building_type]: \n", + " if energy_source == 'electricity':\n", + " end_uses_all.update(datasets[0][state][building_type][energy_source].keys())\n", + " \n", + " res_bldgs = ['single family home', 'multi family home', 'mobile home']\n", + " end_uses_all = list(end_uses_all) \n", + " end_uses_wsupply = [\"heating\", \"cooling\", \"secondary heating\"]\n", + " years = [str(year) for year in range(2016, 2051)]\n", + " \n", + " allbldgs_data = [{state: {end_use: {year: 0 for year in years} for end_use in end_uses_all} for state in states} for _ in range(2)]\n", + " resbldgs_data = [{state: {end_use: {year: 0 for year in years} for end_use in end_uses_all} for state in states} for _ in range(2)]\n", + " combldgs_data = [{state: {end_use: {year: 0 for year in years} for end_use in end_uses_all} for state in states} for _ in range(2)]\n", + " \n", + " \n", + " for dataset_index, dataset in enumerate(datasets):\n", + " for state in states:\n", + " for building_type in dataset [state]:\n", + " for energy_source in dataset [state][building_type]:\n", + " if energy_source == \"electricity\":\n", + " for end_use in dataset [state][building_type][energy_source]:\n", + " if end_use in end_uses_wsupply:\n", + " for subcategory in dataset [state][building_type][energy_source][end_use]['supply']:\n", + " if is_valid_stock(dataset [state][building_type][energy_source][end_use]['supply'][subcategory][energy_or_stock]):\n", + " for year, value in dataset [state][building_type][energy_source][end_use]['supply'][subcategory][energy_or_stock].items():\n", + " if year in allbldgs_data[dataset_index][state][end_use]:\n", + " allbldgs_data[dataset_index][state][end_use][year] += value\n", + " if building_type in res_bldgs:\n", + " if year in resbldgs_data[dataset_index][state][end_use]:\n", + " resbldgs_data[dataset_index][state][end_use][year] += value\n", + " if building_type not in res_bldgs:\n", + " if year in combldgs_data[dataset_index][state][end_use]:\n", + " combldgs_data[dataset_index][state][end_use][year] += value\n", + " if end_use not in end_uses_wsupply:\n", + " for subcategory in dataset [state][building_type][energy_source][end_use]:\n", + " if subcategory != 'energy' and subcategory != 'stock':\n", + " if is_valid_stock(dataset [state][building_type][energy_source][end_use][subcategory][energy_or_stock]):\n", + " for year, value in dataset [state][building_type][energy_source][end_use][subcategory][energy_or_stock].items():\n", + " if year in allbldgs_data[dataset_index][state][end_use]: # Ensure year is valid\n", + " allbldgs_data[dataset_index][state][end_use][year] += value\n", + " if building_type in res_bldgs:\n", + " if year in resbldgs_data[dataset_index][state][end_use]:\n", + " resbldgs_data[dataset_index][state][end_use][year] += value\n", + " if building_type not in res_bldgs:\n", + " if year in combldgs_data[dataset_index][state][end_use]:\n", + " combldgs_data[dataset_index][state][end_use][year] += value\n", + " else:\n", + " if is_valid_stock(dataset [state][building_type][energy_source][end_use][energy_or_stock]):\n", + " for year, value in dataset [state][building_type][energy_source][end_use][energy_or_stock].items():\n", + " if year in allbldgs_data[dataset_index][state][end_use]: # Ensure year is valid\n", + " allbldgs_data[dataset_index][state][end_use][year] += value\n", + " if building_type in res_bldgs:\n", + " if year in resbldgs_data[dataset_index][state][end_use]:\n", + " resbldgs_data[dataset_index][state][end_use][year] += value\n", + " if building_type not in res_bldgs:\n", + " if year in combldgs_data[dataset_index][state][end_use]:\n", + " combldgs_data[dataset_index][state][end_use][year] += value\n", + " \n", + " # Convert absolute values to shares (% of total within each end use across states)\n", + " allbldgs_data = [compute_relative_shares(d) for d in allbldgs_data]\n", + " resbldgs_data = [compute_relative_shares(d) for d in resbldgs_data]\n", + " combldgs_data = [compute_relative_shares(d) for d in combldgs_data]\n", + " \n", + " \n", + " print(\"COMBINE ALL SECTORS\")\n", + " allbldgs_dfs = [\n", + " {state: pd.DataFrame.from_dict(allbldgs_data[dataset_index][state], orient=\"index\", columns=years).T for state in states}\n", + " for dataset_index in range(2)\n", + " ]\n", + " \n", + " print(\"RESIDENTIAL SECTOR\")\n", + " resbldgs_dfs = [\n", + " {state: pd.DataFrame.from_dict(resbldgs_data[dataset_index][state], orient=\"index\", columns=years).T for state in states}\n", + " for dataset_index in range(2)\n", + " ]\n", + " print(\"COMMERCIAL SECTOR\")\n", + " combldgs_dfs = [\n", + " {state: pd.DataFrame.from_dict(combldgs_data[dataset_index][state], orient=\"index\", columns=years).T for state in states}\n", + " for dataset_index in range(2)\n", + " ]\n", + " \n", + " return allbldgs_dfs, resbldgs_dfs, combldgs_dfs, states\n" + ] + }, + { + "cell_type": "markdown", + "id": "bcf71482-ab41-47a7-b552-abf357ad9977", + "metadata": {}, + "source": [ + "### 2. Comparison of Scout output using different Stock version (electricity)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2ccedb7e-3fe9-44e6-ade2-f1348c84a58c", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "### 2. Comparison of Scout output using different Stock version (electricity)\n", + "\n", + "def plot_scatter_all(sector, allbldgs_dfs, resbldgs_dfs, combldgs_dfs, states, energy_or_stock):\n", + " year = \"2024\"\n", + " if energy_or_stock == \"energy\":\n", + " strx = \"% total MWh across regions [new]\" #\"Energy Use (MWh)\"\n", + " stry = \"% total MWh across regions [old]\"\n", + " else:\n", + " strx = \"% total tech-stock across regions [new]\" #tech-stock\n", + " stry = \"% total tech-stock across regions [old]\"\n", + " if sector == \"residential\":\n", + " dfs = resbldgs_dfs\n", + " end_uses = res_end_uses\n", + " else:\n", + " dfs = combldgs_dfs\n", + " end_uses = com_end_uses\n", + " \n", + " # Determine grid size\n", + " num_end_uses = len(end_uses)\n", + " grid_cols = 3 # Number of columns in the grid\n", + " grid_rows = (num_end_uses + 1) // grid_cols # Number of rows\n", + " \n", + " # Create a grid of scatter plots\n", + " fig, axes = plt.subplots(grid_rows, grid_cols, figsize=(18, 6 * grid_rows))\n", + " axes = axes.flatten() # Flatten in case of single row\n", + " \n", + " for idx, end_use in enumerate(end_uses):\n", + " x_values = []\n", + " y_values = []\n", + " state_labels = []\n", + " \n", + " for state in states:\n", + " if (state in dfs[0] and state in dfs[1] and end_use in dfs[0][state].columns and end_use in dfs[1][state].columns):\n", + " # Extract values for the given year\n", + " x = dfs[0][state].loc[year, end_use]\n", + " y = dfs[1][state].loc[year, end_use]\n", + " \n", + " # Only add values if both x and y are finite\n", + " if np.isfinite(x) and np.isfinite(y):\n", + " x_values.append(x)\n", + " y_values.append(y)\n", + " state_labels.append(state)\n", + " ############################################################## \n", + " # # Add y=x reference line\n", + " # min_val = min(min(x_values), min(y_values))\n", + " # max_val = max(max(x_values), max(y_values))\n", + "\n", + " # ax = axes[idx]\n", + " # ax.scatter(x_values, y_values, marker='o', color='blue', alpha=0.7, label=\"States\")\n", + " # ax.plot([min_val, max_val], [min_val, max_val], linestyle=\"--\", color=\"red\", label=\"y = x\")\n", + " \n", + " # # Add state labels to the points\n", + " # for i, state in enumerate(state_labels):\n", + " # ax.text(x_values[i], y_values[i], state, fontsize=9, ha='right', va='bottom')\n", + " ##############################################################\n", + " x_values = np.array(x_values)\n", + " y_values = np.array(y_values)\n", + " \n", + " # Compute the minimum and maximum values from the finite data\n", + " min_val = min(x_values.min(), y_values.min())\n", + " max_val = max(x_values.max(), y_values.max())\n", + " \n", + " ax = axes[idx]\n", + " ax.scatter(x_values, y_values, marker='o', color='blue', alpha=0.7, label=\"States\")\n", + " ax.plot([min_val, max_val], [min_val, max_val], linestyle=\"--\", color=\"red\", label=\"y = x\")\n", + " \n", + " # Set both x and y limits to be the same\n", + " ax.set_xlim(min_val, max_val)\n", + " ax.set_ylim(min_val, max_val)\n", + " # Ensure equal aspect ratio for the axes\n", + " ax.set_aspect('equal', adjustable='box')\n", + " \n", + " # Add state labels to the points\n", + " for i, state in enumerate(state_labels):\n", + " ax.text(x_values[i], y_values[i], state, fontsize=9, ha='right', va='bottom')\n", + " \n", + " ax.set_title(f\"{sector} {end_use}\\n{strout}\")\n", + " if energy_or_stock == \"energy\":\n", + " # ax.set_xlabel(\"Using new factors: Energy Use (MWh)\")\n", + " # ax.set_ylabel(\"Using old factors: Energy Use (MWh)\")\n", + " ax.set_xlabel(f\"{strx}\")\n", + " ax.set_ylabel(f\"{stry}\")\n", + " else:\n", + " ax.set_xlabel(\"Using new factors\")\n", + " ax.set_ylabel(\"Using old factors\")\n", + " ax.grid(True, linestyle=\"--\", alpha=0.6)\n", + " ax.legend()\n", + " \n", + " # Hide any extra subplots if the number of end-uses is not a perfect multiple of grid_cols\n", + " for i in range(num_end_uses, len(axes)):\n", + " fig.delaxes(axes[i])\n", + " \n", + " plt.tight_layout()\n", + " \n", + " # Save the grid plot\n", + " grid_plot_filename = f\"{geo}_{strout}_{energy_or_stock}_{sector}.png\"\n", + " plt.savefig(f\"./{dir_new}/{grid_plot_filename}\")\n", + " plt.show()\n", + "\n", + "\n", + "\n", + "############\n", + "import json\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import numpy as np\n", + "res_end_uses = ['heating', 'secondary heating', 'cooling', 'fans and pumps', 'ceiling fan', 'lighting', 'water heating',\n", + " 'refrigeration', 'cooking', 'drying', 'TVs', 'computers', 'other', 'onsite generation']\n", + "com_end_uses = ['heating', 'cooling', 'water heating', 'ventilation', 'cooking', 'lighting', 'refrigeration', 'PCs',\n", + " 'non-PC office equipment', 'MELs', 'onsite generation']\n", + "geos = [\"EMM\",\"state\"]\n", + "strouts = [\"Elec_End-Use_EUSS2024_vs_End-Use_EUSS2023\",\n", + " \"Elec_Tech_EUSS2024_vs_End-Use_EUSS2023\",\n", + " \"Elec_Tech_EUSS2024_vs_End-Use_EUSS2024\"]\n", + "energy_or_stocks = [\"energy\",\"stock\"]\n", + "dir_2023 = \"test_compare_base_disagg/2023_work\"\n", + "dir_new = \"test_compare_base_disagg/jaredstest\"\n", + "\n", + "for geo in geos:\n", + " for strout in strouts:\n", + " for energy_or_stock in energy_or_stocks:\n", + "\n", + " allbldgs_dfs, resbldgs_dfs, combldgs_dfs, states = dataprep_compare_elec(geo, strout, energy_or_stock, dir_2023, dir_new)\n", + " plot_scatter_all(\"commercial\", allbldgs_dfs, resbldgs_dfs, combldgs_dfs, states, energy_or_stock)\n", + " plot_scatter_all(\"residential\", allbldgs_dfs, resbldgs_dfs, combldgs_dfs, states, energy_or_stock)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2fc61700-f2aa-4f89-a2b5-1de343d9d3c9", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "fc60c3cd-538b-4438-afb1-365ba8922d80", + "metadata": {}, + "source": [ + "### 1. Data preparation for Scout output using Stock data (non-electricity)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c43cfc45-e4aa-4af0-b8bb-369f5e1bdcdf", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def is_valid_stock(stock):\n", + " # If stock is a string and equals \"NA\", it's not valid.\n", + " if isinstance(stock, str):\n", + " if stock == \"NA\":\n", + " return False\n", + " # Otherwise, if it's a non-\"NA\" string, you could choose to accept or reject it.\n", + " return True\n", + "\n", + " # If stock is a dictionary, check its year values.\n", + " elif isinstance(stock, dict):\n", + " # If the dictionary is empty, it isn't valid.\n", + " if not stock:\n", + " return False\n", + " # If all values in the dictionary are 0.0, then it's not valid.\n", + " if all(float(value) == 0.0 for value in stock.values()):\n", + " return False\n", + " # Otherwise, it has at least one non-zero value.\n", + " return True\n", + "\n", + " # Any other type is considered invalid.\n", + " return False\n", + "\n", + "\n", + "def dataprep_compare_nonelec(geo, strout, energy_or_stock, dir_2023, dir_new):\n", + " def compute_relative_shares(data_dict):\n", + " \"\"\"Convert absolute values to state-level shares by end-use and year.\"\"\"\n", + " relative_data = {state: {end_use: {} for end_use in end_uses_all} for state in states}\n", + " for end_use in end_uses_all:\n", + " for year in years:\n", + " total = sum(data_dict[state][end_use][year] for state in states)\n", + " for state in states:\n", + " if total > 0:\n", + " share = data_dict[state][end_use][year] / total\n", + " else:\n", + " share = 0\n", + " relative_data[state][end_use][year] = share\n", + " return relative_data\n", + " \n", + " file_paths = [f\"./{dir_new}/mseg_res_com_{geo}_2024_eu_factors.json\", f\"./{dir_2023}/mseg_res_com_{geo}_2023.json\"]\n", + " datasets = []\n", + " \n", + " for path in file_paths:\n", + " with open(path, \"r\") as file:\n", + " datasets.append(json.load(file))\n", + " \n", + " states = set(datasets[0].keys()).intersection(set(datasets[1].keys()))\n", + " \n", + " end_uses_all = set()\n", + " for state in states:\n", + " for building_type in datasets[0][state]:\n", + " for energy_source in datasets[0][state][building_type]: \n", + " if energy_source == fueltype:\n", + " end_uses_all.update(datasets[0][state][building_type][energy_source].keys())\n", + " \n", + " res_bldgs = ['single family home', 'multi family home', 'mobile home']\n", + " end_uses_all = list(end_uses_all) \n", + " end_uses_wsupply = [\"heating\", \"cooling\", \"secondary heating\"]\n", + " years = [str(year) for year in range(2016, 2051)]\n", + " \n", + " allbldgs_data = [{state: {end_use: {year: 0 for year in years} for end_use in end_uses_all} for state in states} for _ in range(2)]\n", + " resbldgs_data = [{state: {end_use: {year: 0 for year in years} for end_use in end_uses_all} for state in states} for _ in range(2)]\n", + " combldgs_data = [{state: {end_use: {year: 0 for year in years} for end_use in end_uses_all} for state in states} for _ in range(2)]\n", + "\n", + "\n", + " for dataset_index, dataset in enumerate(datasets):\n", + " for state in states:\n", + " for building_type in dataset [state]:\n", + " for energy_source in dataset [state][building_type]:\n", + " if energy_source == fueltype:\n", + " for end_use in dataset [state][building_type][energy_source]:\n", + " if end_use in end_uses_wsupply:\n", + " for subcategory in dataset [state][building_type][energy_source][end_use]['supply']:\n", + " if is_valid_stock(dataset [state][building_type][energy_source][end_use]['supply'][subcategory][energy_or_stock]):\n", + " for year, value in dataset [state][building_type][energy_source][end_use]['supply'][subcategory][energy_or_stock].items():\n", + " if year in allbldgs_data[dataset_index][state][end_use]:\n", + " allbldgs_data[dataset_index][state][end_use][year] += value\n", + " if building_type in res_bldgs:\n", + " if year in resbldgs_data[dataset_index][state][end_use]:\n", + " resbldgs_data[dataset_index][state][end_use][year] += value\n", + " if building_type not in res_bldgs:\n", + " if year in combldgs_data[dataset_index][state][end_use]:\n", + " combldgs_data[dataset_index][state][end_use][year] += value\n", + " if end_use not in end_uses_wsupply:\n", + " for subcategory in dataset [state][building_type][energy_source][end_use]:\n", + " if subcategory != 'energy' and subcategory != 'stock':\n", + " if is_valid_stock(dataset [state][building_type][energy_source][end_use][subcategory][energy_or_stock]):\n", + " for year, value in dataset [state][building_type][energy_source][end_use][subcategory][energy_or_stock].items():\n", + " if year in allbldgs_data[dataset_index][state][end_use]: # Ensure year is valid\n", + " allbldgs_data[dataset_index][state][end_use][year] += value\n", + " if building_type in res_bldgs:\n", + " if year in resbldgs_data[dataset_index][state][end_use]:\n", + " resbldgs_data[dataset_index][state][end_use][year] += value\n", + " if building_type not in res_bldgs:\n", + " if year in combldgs_data[dataset_index][state][end_use]:\n", + " combldgs_data[dataset_index][state][end_use][year] += value\n", + " else:\n", + " if is_valid_stock(dataset [state][building_type][energy_source][end_use][energy_or_stock]):\n", + " for year, value in dataset [state][building_type][energy_source][end_use][energy_or_stock].items():\n", + " if year in allbldgs_data[dataset_index][state][end_use]: # Ensure year is valid\n", + " allbldgs_data[dataset_index][state][end_use][year] += value\n", + " if building_type in res_bldgs:\n", + " if year in resbldgs_data[dataset_index][state][end_use]:\n", + " resbldgs_data[dataset_index][state][end_use][year] += value\n", + " if building_type not in res_bldgs:\n", + " if year in combldgs_data[dataset_index][state][end_use]:\n", + " combldgs_data[dataset_index][state][end_use][year] += value\n", + " \n", + " \n", + " # Convert absolute values to shares (% of total within each end use across states)\n", + " allbldgs_data = [compute_relative_shares(d) for d in allbldgs_data]\n", + " resbldgs_data = [compute_relative_shares(d) for d in resbldgs_data]\n", + " combldgs_data = [compute_relative_shares(d) for d in combldgs_data]\n", + " \n", + " print(\"COMBINE ALL SECTORS\")\n", + " allbldgs_dfs = [\n", + " {state: pd.DataFrame.from_dict(allbldgs_data[dataset_index][state], orient=\"index\", columns=years).T for state in states}\n", + " for dataset_index in range(2)\n", + " ]\n", + " \n", + " print(\"RESIDENTIAL SECTOR\")\n", + " resbldgs_dfs = [\n", + " {state: pd.DataFrame.from_dict(resbldgs_data[dataset_index][state], orient=\"index\", columns=years).T for state in states}\n", + " for dataset_index in range(2)\n", + " ]\n", + " print(\"COMMERCIAL SECTOR\")\n", + " combldgs_dfs = [\n", + " {state: pd.DataFrame.from_dict(combldgs_data[dataset_index][state], orient=\"index\", columns=years).T for state in states}\n", + " for dataset_index in range(2)\n", + " ]\n", + "\n", + " return allbldgs_dfs, resbldgs_dfs, combldgs_dfs, states\n" + ] + }, + { + "cell_type": "markdown", + "id": "b55caca4-891f-4bd1-b0d5-99d3785c135b", + "metadata": {}, + "source": [ + "### 2. Comparison of Scout output using different Stock version (all fuels)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ae573810-b278-418c-95c8-c6164faaa203", + "metadata": {}, + "outputs": [], + "source": [ + "### 2. Comparison of Scout output using different Stock version (all fuels)\n", + "\n", + "\n", + "def plot_scatter_all(sector, allbldgs_dfs, resbldgs_dfs, combldgs_dfs, states, energy_or_stock):\n", + " year = \"2024\"\n", + " if energy_or_stock == \"energy\":\n", + " strx = \"% total MWh across regions [new]\" #\"Energy Use (MWh)\"\n", + " stry = \"% total MWh across regions [old]\"\n", + " else:\n", + " strx = \"% total tech-stock across regions [new]\" #tech-stock\n", + " stry = \"% total tech-stock across regions [old]\"\n", + " \n", + " if fueltype == \"natural gas\":\n", + " com_end_uses = ['heating', 'cooling', 'water heating', 'cooking', 'other']\n", + " res_end_uses = ['heating', 'cooling', 'water heating', \n", + " 'cooking', 'drying', 'other']\n", + " elif fueltype == \"distillate\":\n", + " res_end_uses = ['heating', 'secondary heating', 'water heating']\n", + " com_end_uses = ['heating', 'water heating', 'other']\n", + " \n", + " elif fueltype == \"other fuel\":\n", + " com_end_uses = []\n", + " res_end_uses = ['heating', 'water heating', 'secondary heating', 'cooking', 'other']\n", + " \n", + " if sector == \"residential\":\n", + " dfs = resbldgs_dfs\n", + " end_uses = res_end_uses\n", + " else:\n", + " dfs = combldgs_dfs\n", + " end_uses = com_end_uses\n", + " \n", + " # Determine grid size\n", + " num_end_uses = len(end_uses)\n", + " grid_cols = 3 # Number of columns in the grid\n", + " grid_rows = (num_end_uses + 1) // grid_cols # Number of rows\n", + " \n", + " # Create a grid of scatter plots\n", + " fig, axes = plt.subplots(grid_rows, grid_cols, figsize=(18, 6 * grid_rows))\n", + " axes = axes.flatten() # Flatten in case of single row\n", + "\n", + " for idx, end_use in enumerate(end_uses):\n", + " x_values = []\n", + " y_values = []\n", + " state_labels = []\n", + " \n", + " for state in states:\n", + " if (state in dfs[0] and state in dfs[1] and end_use in dfs[0][state].columns and end_use in dfs[1][state].columns):\n", + " # Extract values for the given year\n", + " x = dfs[0][state].loc[year, end_use]\n", + " y = dfs[1][state].loc[year, end_use]\n", + " \n", + " # Only add values if both x and y are finite\n", + " if np.isfinite(x) and np.isfinite(y):\n", + " x_values.append(x)\n", + " y_values.append(y)\n", + " state_labels.append(state)\n", + " x_values = np.array(x_values)\n", + " y_values = np.array(y_values)\n", + "\n", + " ax = axes[idx]\n", + " ax.scatter(x_values, y_values, marker='o', color='blue', alpha=0.7, label=\"States\")\n", + "\n", + " ################################# \n", + " min_val = min(x_values.min(), y_values.min())\n", + " max_val = max(x_values.max(), y_values.max())\n", + " ax.plot([min_val, max_val], [min_val, max_val], linestyle=\"--\", color=\"red\", label=\"y = x\")\n", + " #################################\n", + "\n", + " # Set both x and y limits to be the same\n", + " # ax.set_xlim(min_val, max_val)\n", + " # ax.set_ylim(min_val, max_val)\n", + " # Ensure equal aspect ratio for the axes\n", + " ax.set_aspect('equal', adjustable='box')\n", + " \n", + " # Add state labels to the points\n", + " for i, state in enumerate(state_labels):\n", + " ax.text(x_values[i], y_values[i], state, fontsize=9, ha='right', va='bottom')\n", + " \n", + " ax.set_title(f\"{sector} {end_use}\\n{strout}\")\n", + " if energy_or_stock == \"energy\":\n", + " # ax.set_xlabel(\"Using new factors: Energy Use (MWh)\")\n", + " # ax.set_ylabel(\"Using old factors: Energy Use (MWh)\")\n", + " ax.set_xlabel(f\"{strx}\")\n", + " ax.set_ylabel(f\"{stry}\")\n", + " else:\n", + " ax.set_xlabel(\"Using new factors\")\n", + " ax.set_ylabel(\"Using old factors\")\n", + " ax.grid(True, linestyle=\"--\", alpha=0.6)\n", + " ax.legend()\n", + " \n", + " # Hide any extra subplots if the number of end-uses is not a perfect multiple of grid_cols\n", + " for i in range(num_end_uses, len(axes)):\n", + " fig.delaxes(axes[i])\n", + " \n", + " plt.tight_layout()\n", + " \n", + " # Save the grid plot\n", + " grid_plot_filename = f\"{geo}_{strout}_{energy_or_stock}_{sector}.png\"\n", + " plt.savefig(f\"./{dir_new}/{grid_plot_filename}\")\n", + " # plt.show()\n", + "\n", + "\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import json\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "\n", + "\n", + "geos = [\"EMM\",\"state\"]\n", + "fueltypes = [\"natural gas\", \"distillate\",\"other fuel\"]\n", + "energy_or_stocks = [\"energy\",\"stock\"]\n", + "dir_2023 = \"test_compare_base_disagg/2023_work\"\n", + "dir_new = \"test_compare_base_disagg/jaredstest\"\n", + "\n", + "\n", + "for geo in geos:\n", + " for fueltype in fueltypes:\n", + " for energy_or_stock in energy_or_stocks:\n", + " strout = f\"Non-Elec_{fueltype}_End-Use_EUSS2024_vs_EIA\"\n", + " allbldgs_dfs, resbldgs_dfs, combldgs_dfs, states = \\\n", + " dataprep_compare_nonelec(geo, strout, energy_or_stock, dir_2023, dir_new)\n", + " \n", + " if fueltype != \"other fuel\": \n", + " plot_scatter_all(\"commercial\", allbldgs_dfs, resbldgs_dfs, combldgs_dfs, states, energy_or_stock)\n", + " plot_scatter_all(\"residential\", allbldgs_dfs, resbldgs_dfs, combldgs_dfs, states, energy_or_stock)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2d84f5a4-81cf-47bb-a8ca-8785e1435b4c", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "201e6ab4-1e5c-48a2-aeeb-16154524fb83", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "381a6348-cba9-4b66-9d09-7f30d408dd1e", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5377b8b7-eec7-490c-95c9-725fc6943f23", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bcaf4d51-a3d5-4822-b0be-39b23877f0b6", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d79ac250-5d8a-4c32-863b-6026eb4c5005", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "9e7716ef-1658-4dac-ac85-a49223914655", + "metadata": {}, + "source": [ + "### Difference in barplots" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b5ae114d-3b19-4bda-81c8-55b759fdb7ff", + "metadata": {}, + "outputs": [], + "source": [ + "def plot_comparison(dfs, sector):\n", + " import numpy as np\n", + " for state in states:\n", + " num_end_uses = len(end_uses_all)\n", + " fig, axes = plt.subplots(nrows=num_end_uses, ncols=1, figsize=(10, 5 * num_end_uses), sharex=True)\n", + " \n", + " # Ensure axes is always iterable\n", + " axes = np.atleast_1d(axes)\n", + " \n", + " for ax, end_use in zip(axes, end_uses_all):\n", + " # Plot both datasets for comparison\n", + " for dataset_index, dataset_label in enumerate([\"Using New Factors\", \"Using Old Factors\"]):\n", + " if state in dfs[dataset_index] and end_use in dfs[dataset_index][state].columns:\n", + " dfs[dataset_index][state][end_use].plot(ax=ax, linestyle='-', label=dataset_label)\n", + " \n", + " ax.set_title(f\"{state} - {end_use}\")\n", + " ax.set_xlabel(\"Year\")\n", + " if energy_or_stock == \"energy\":\n", + " ax.set_ylabel(\"Energy (MWh)\")\n", + " else:\n", + " ax.set_ylabel(\"Stock\")\n", + " ax.grid(True)\n", + " ax.legend() # Add legend to differentiate datasets\n", + " \n", + " plt.tight_layout()\n", + " plot_filename = f\"./{file_dir}/state_bars/{energy_or_stock}_{sector}_{state}_energy_plot.png\"\n", + " plt.savefig(plot_filename)\n", + " plt.close()\n", + " # plt.show()\n", + "\n", + "\n", + "\n", + "plot_comparison(allbldgs_dfs, 'all')\n", + "# plot_comparison(resbldgs_dfs, 'res')\n", + "# plot_comparison(combldgs_dfs, 'com')\n", + "\n", + "print(\"COMPLETE!\")\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0f6cf429-34af-4d07-bc74-0ec22deb0c20", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [], + "source": [ + "# Extract differences between datasets for the year 2024\n", + "\n", + "res_end_uses = ['heating', 'secondary heating', 'cooling', 'fans and pumps', 'ceiling fan', 'lighting', 'water heating',\n", + " 'refrigeration', 'cooking', 'drying', 'TVs', 'computers', 'other', 'onsite generation']\n", + "com_end_uses = ['heating', 'cooling', 'water heating', 'ventilation', 'cooking', 'lighting', 'refrigeration', 'PCs',\n", + " 'non-PC office equipment', 'MELs', 'onsite generation']\n", + "\n", + "year = \"2024\"\n", + "sector = \"residential\"\n", + "\n", + "if sector == \"residential\":\n", + " dfs = resbldgs_dfs\n", + " end_uses = res_end_uses\n", + "else:\n", + " dfs = combldgs_dfs\n", + " end_uses = com_end_uses\n", + "\n", + "# Initialize a dictionary to store differences\n", + "differences = {end_use: {} for end_use in end_uses}\n", + "\n", + "# Compute the difference (Dataset 2 - Dataset 1) for each state and end-use\n", + "for end_use in end_uses:\n", + " for state in states:\n", + " if state in dfs[0] and state in dfs[1] and end_use in dfs[0][state].columns and end_use in dfs[1][state].columns:\n", + " # Compute the energy difference for the year 2024\n", + " differences[end_use][state] = dfs[1][state].loc[year, end_use] - dfs[0][state].loc[year, end_use]\n", + "\n", + "# Convert differences to DataFrame for plotting\n", + "diff_df = pd.DataFrame(differences)\n", + "\n", + "# Plot the differences\n", + "fig, ax = plt.subplots(figsize=(12, 6))\n", + "diff_df.plot(kind=\"bar\", ax=ax, width=0.7)\n", + "\n", + "ax.set_title(f\"Difference in Energy Use using New and Old Factors ({sector}Year 2024)\")\n", + "ax.set_xlabel(\"State\")\n", + "if energy_or_stock == \"energy\":\n", + " ax.set_ylabel(\"Energy Difference (MWh)\")\n", + "else:\n", + " ax.set_ylabel(\"Stock\")\n", + "ax.legend(title=\"End Use\", bbox_to_anchor=(1.05, 1), loc=\"upper left\")\n", + "ax.grid(axis=\"y\", linestyle=\"--\")\n", + "\n", + "# Save the plot\n", + "diff_plot_filename = f\"{energy_or_stock}_{sector}_energy_difference_2024.png\"\n", + "plt.tight_layout()\n", + "plt.savefig(f\"./{file_dir}/{diff_plot_filename}\")\n", + "plt.show()\n", + "\n", + "print(\"COMPLETE!\")" + ] + }, + { + "cell_type": "markdown", + "id": "f18a43f5-d782-4ae8-9638-4fd4dfa9b1b7", + "metadata": {}, + "source": [ + "### Scatter end use" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b5fbbe72-771d-4857-8bf6-6f7a9e9a3f98", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "scrolled": true + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "res_end_uses = ['heating', 'secondary heating', 'cooling', 'fans and pumps', 'ceiling fan', 'lighting', 'water heating',\n", + " 'refrigeration', 'cooking', 'drying', 'TVs', 'computers', 'other', 'onsite generation']\n", + "com_end_uses = ['heating', 'cooling', 'water heating', 'ventilation', 'cooking', 'lighting', 'refrigeration', 'PCs',\n", + " 'non-PC office equipment', 'MELs', 'onsite generation']\n", + "\n", + "year = \"2024\"\n", + "sector = \"commercial\"\n", + "\n", + "if sector == \"residential\":\n", + " dfs = resbldgs_dfs\n", + " end_uses = res_end_uses\n", + "else:\n", + " dfs = combldgs_dfs\n", + " end_uses = com_end_uses\n", + "# Create scatter plots for each end-use category\n", + "for end_use in end_uses:\n", + " x_values = []\n", + " y_values = []\n", + " state_labels = []\n", + "\n", + " for state in states:\n", + " if state in dfs[0] and state in dfs[1] and end_use in dfs[0][state].columns and end_use in dfs[1][state].columns:\n", + " # Extract values for the year 2024\n", + " x = dfs[0][state].loc[year, end_use]\n", + " y = dfs[1][state].loc[year, end_use]\n", + "\n", + " x_values.append(x)\n", + " y_values.append(y)\n", + " state_labels.append(state)\n", + "\n", + " # Create scatter plot\n", + " fig, ax = plt.subplots(figsize=(8, 6))\n", + " ax.scatter(x_values, y_values, marker='o', color='blue', alpha=0.7)\n", + " \n", + " min_val = min(min(x_values), min(y_values))\n", + " max_val = max(max(x_values), max(y_values))\n", + " ax.plot([min_val, max_val], [min_val, max_val], linestyle=\"--\", color=\"red\", label=\"y = x\")\n", + "\n", + " # Add state labels to the points\n", + " for i, state in enumerate(state_labels):\n", + " ax.text(x_values[i], y_values[i], state, fontsize=9, ha='right', va='bottom')\n", + "\n", + " ax.set_title(f\"Scatter Plot for {sector} {end_use} (Year 2024)\")\n", + " if energy_or_stock == \"energy\":\n", + " ax.set_xlabel(\"Using new factors: Energy Use (MWh)\")\n", + " ax.set_ylabel(\"Using old factors: Energy Use (MWh)\")\n", + " else:\n", + " ax.set_xlabel(\"Using new factors\")\n", + " ax.set_ylabel(\"Using old factors\")\n", + " ax.grid(True, linestyle=\"--\", alpha=0.6)\n", + "\n", + " # Save the scatter plot\n", + " scatter_plot_filename = f\"{energy_or_stock}_{sector}_scatter_{end_use}_2024.png\"\n", + " plt.savefig(f\"./{file_dir}/scatter_enduse/{scatter_plot_filename}\")\n", + " plt.show()\n", + "print(\"COMPLETE!\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "55859d88-0b18-46a6-8516-5a41a60d9f9a", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/scout/supporting_data/base_disagg/test03_Validate_RECS_SEDS.ipynb b/scout/supporting_data/base_disagg/test03_Validate_RECS_SEDS.ipynb new file mode 100644 index 00000000..b5c2f242 --- /dev/null +++ b/scout/supporting_data/base_disagg/test03_Validate_RECS_SEDS.ipynb @@ -0,0 +1,620 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "759bd7ec-312a-43e0-b56a-810a7a565ca0", + "metadata": {}, + "source": [ + "## Prepare Scout Data for both RECS and SEDS analysis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7e0f0b4d-3e6f-4e84-a68d-2b8a3e13778d", + "metadata": {}, + "outputs": [], + "source": [ + "## 1. Data preparation for Scout output using Stock data (non-electricity)\n", + "import json\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "# Load the JSON files\n", + "\n", + "file_dir = \"test_compare_base_disagg\"\n", + "recs_or_seds = \"seds\"\n", + "# recs_or_seds = \"recs\"\n", + "\n", + "eussversion = \"2024\"\n", + "# eussversion = \"2023\"\n", + "\n", + "if recs_or_seds == \"recs\":\n", + " energy_or_stock = \"stock\"\n", + " fueltype = \"electricity\"\n", + " if eussversion == \"2024\":\n", + " file_paths = [f\"./{file_dir}/jaredstest/mseg_res_com_state_2024_tech_factors.json\", f\"./{file_dir}/2023_work/mseg_res_com_state_2023.json\"]\n", + " elif eussversion == \"2023\":\n", + " file_paths = [f\"./{file_dir}/2023_work/mseg_res_com_state_2023.json\", f\"./{file_dir}/2023_work/mseg_res_com_state_2023.json\"]\n", + "elif recs_or_seds == \"seds\":\n", + " # projectionyear = \"2023\"\n", + " projectionyear = \"2016\"\n", + " \n", + " fueltype = \"electricity\"\n", + " # fueltype = 'natural gas'\n", + " \n", + " energy_or_stock = \"energy\"\n", + "\n", + " if eussversion == \"2024\":\n", + " if fueltype == \"electricity\":\n", + " file_paths = [f\"./{file_dir}/jaredstest/mseg_res_com_state_2024_tech_factors.json\", f\"./{file_dir}/2023_work/mseg_res_com_state_2023.json\"]\n", + " elif fueltype == \"natural gas\":\n", + " file_paths = [f\"./{file_dir}/jaredstest/mseg_res_com_state_2024_eu_factors.json\", f\"./{file_dir}/2023_work/mseg_res_com_state_2023.json\"]\n", + " elif eussversion == \"2023\":\n", + " file_paths = [f\"./{file_dir}/2023_work/mseg_res_com_state_2023.json\", f\"./{file_dir}/2023_work/mseg_res_com_state_2023.json\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8b0446b6-514a-4d7f-8bb0-ba3f0d470c80", + "metadata": {}, + "outputs": [], + "source": [ + "datasets = []\n", + "\n", + "for path in file_paths:\n", + " with open(path, \"r\") as file:\n", + " datasets.append(json.load(file))\n", + "\n", + "states = set(datasets[0].keys()).intersection(set(datasets[1].keys()))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "94375f83-7b18-42f8-9e86-0c1413ec8182", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "\n", + "def get_overall_data(fueltype, energy_or_stock, rettype):\n", + "\n", + " end_uses_all = set()\n", + " for state in states:\n", + " for building_type in datasets[0][state]:\n", + " for energy_source in datasets[0][state][building_type]: \n", + " if energy_source == fueltype:\n", + " end_uses_all.update(datasets[0][state][building_type][energy_source].keys())\n", + " \n", + " res_bldgs = ['single family home', 'multi family home', 'mobile home']\n", + " end_uses_all = list(end_uses_all) \n", + " end_uses_wsupply = [\"heating\", \"cooling\", \"secondary heating\"]\n", + " years = [str(year) for year in range(2015, 2051)]\n", + " \n", + " allbldgs_data = [{state: {end_use: {year: 0 for year in years} for end_use in end_uses_all} for state in states} for _ in range(2)]\n", + " resbldgs_data = [{state: {end_use: {year: 0 for year in years} for end_use in end_uses_all} for state in states} for _ in range(2)]\n", + " combldgs_data = [{state: {end_use: {year: 0 for year in years} for end_use in end_uses_all} for state in states} for _ in range(2)]\n", + " \n", + " def is_valid_stock(stock):\n", + " # If stock is a string and equals \"NA\", it's not valid.\n", + " if isinstance(stock, str):\n", + " if stock == \"NA\":\n", + " return False\n", + " # Otherwise, if it's a non-\"NA\" string, you could choose to accept or reject it.\n", + " return True\n", + " \n", + " # If stock is a dictionary, check its year values.\n", + " elif isinstance(stock, dict):\n", + " # If the dictionary is empty, it isn't valid.\n", + " if not stock:\n", + " return False\n", + " # If all values in the dictionary are 0.0, then it's not valid.\n", + " if all(float(value) == 0.0 for value in stock.values()):\n", + " return False\n", + " # Otherwise, it has at least one non-zero value.\n", + " return True\n", + " \n", + " # Any other type is considered invalid.\n", + " return False\n", + " \n", + " for dataset_index, dataset in enumerate(datasets):\n", + " for state in states:\n", + " for building_type in dataset [state]:\n", + " for energy_source in dataset [state][building_type]:\n", + " if energy_source == fueltype:\n", + " for end_use in dataset [state][building_type][energy_source]:\n", + " if end_use in end_uses_wsupply:\n", + " for subcategory in dataset [state][building_type][energy_source][end_use]['supply']:\n", + " if is_valid_stock(dataset [state][building_type][energy_source][end_use]['supply'][subcategory][energy_or_stock]):\n", + " for year, value in dataset [state][building_type][energy_source][end_use]['supply'][subcategory][energy_or_stock].items():\n", + " if year in allbldgs_data[dataset_index][state][end_use]:\n", + " allbldgs_data[dataset_index][state][end_use][year] += value\n", + " if building_type in res_bldgs:\n", + " if year in resbldgs_data[dataset_index][state][end_use]:\n", + " resbldgs_data[dataset_index][state][end_use][year] += value\n", + " if building_type not in res_bldgs:\n", + " if year in combldgs_data[dataset_index][state][end_use]:\n", + " combldgs_data[dataset_index][state][end_use][year] += value\n", + " if end_use not in end_uses_wsupply:\n", + " for subcategory in dataset [state][building_type][energy_source][end_use]:\n", + " if subcategory != 'energy' and subcategory != 'stock':\n", + " if is_valid_stock(dataset [state][building_type][energy_source][end_use][subcategory][energy_or_stock]):\n", + " for year, value in dataset [state][building_type][energy_source][end_use][subcategory][energy_or_stock].items():\n", + " if year in allbldgs_data[dataset_index][state][end_use]: # Ensure year is valid\n", + " allbldgs_data[dataset_index][state][end_use][year] += value\n", + " if building_type in res_bldgs:\n", + " if year in resbldgs_data[dataset_index][state][end_use]:\n", + " resbldgs_data[dataset_index][state][end_use][year] += value\n", + " if building_type not in res_bldgs:\n", + " if year in combldgs_data[dataset_index][state][end_use]:\n", + " combldgs_data[dataset_index][state][end_use][year] += value\n", + " else:\n", + " if is_valid_stock(dataset [state][building_type][energy_source][end_use][energy_or_stock]):\n", + " for year, value in dataset [state][building_type][energy_source][end_use][energy_or_stock].items():\n", + " if year in allbldgs_data[dataset_index][state][end_use]: # Ensure year is valid\n", + " allbldgs_data[dataset_index][state][end_use][year] += value\n", + " if building_type in res_bldgs:\n", + " if year in resbldgs_data[dataset_index][state][end_use]:\n", + " resbldgs_data[dataset_index][state][end_use][year] += value\n", + " if building_type not in res_bldgs:\n", + " if year in combldgs_data[dataset_index][state][end_use]:\n", + " combldgs_data[dataset_index][state][end_use][year] += value\n", + " print(f\"{fueltype}: COMBINE ALL SECTORS\")\n", + " allbldgs_dfs = [\n", + " {state: pd.DataFrame.from_dict(allbldgs_data[dataset_index][state], orient=\"index\", columns=years).T for state in states}\n", + " for dataset_index in range(2)\n", + " ]\n", + " \n", + " print(f\"{fueltype}: RESIDENTIAL SECTOR\")\n", + " resbldgs_dfs = [\n", + " {state: pd.DataFrame.from_dict(resbldgs_data[dataset_index][state], orient=\"index\", columns=years).T for state in states}\n", + " for dataset_index in range(2)\n", + " ]\n", + " print(f\"{fueltype}: COMMERCIAL SECTOR\")\n", + " combldgs_dfs = [\n", + " {state: pd.DataFrame.from_dict(combldgs_data[dataset_index][state], orient=\"index\", columns=years).T for state in states}\n", + " for dataset_index in range(2)\n", + " ]\n", + " if rettype:\n", + " return resbldgs_data, combldgs_data\n", + " else:\n", + " return resbldgs_dfs, combldgs_dfs\n", + "\n", + "scout_res_elec_eu, scout_com_elec_eu = get_overall_data(\"electricity\", \"energy\", True)\n", + "scout_res_ng_eu, scout_com_ng_eu = get_overall_data(\"natural gas\", \"energy\", True)" + ] + }, + { + "cell_type": "markdown", + "id": "44fffc48-095f-42c9-a0b4-c83d26fbc5b9", + "metadata": {}, + "source": [ + "## Validate with SEDS Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "05f0e993-6b68-44e8-9f07-a4c4486f1e66", + "metadata": {}, + "outputs": [], + "source": [ + "# Prepare Scout results\n", + "def convert_to_df_for_seds(data, yr, title):\n", + " # Initialize lists to store the data\n", + " rows = []\n", + " \n", + " # Process the nested dictionary\n", + " for state, end_uses in data.items(): # Directly iterate over the dictionary\n", + " for end_use, years in end_uses.items():\n", + " for year, value in years.items():\n", + " row = {\n", + " 'state': state,\n", + " 'year': year,\n", + " 'end_use': end_use,\n", + " 'value': value\n", + " }\n", + " rows.append(row)\n", + " \n", + " # Create DataFrame in long format\n", + " df = pd.DataFrame(rows)\n", + " df = df[df['year'] == yr]\n", + " \n", + " # Check for duplicates\n", + " duplicates = df.duplicated(subset=['state', 'year', 'end_use'], keep=False)\n", + " if duplicates.any():\n", + " \n", + " # Add a count column to handle duplicates\n", + " df['count'] = df.groupby(['state', 'year', 'end_use']).cumcount()\n", + " # Create unique end_use names by adding count suffix for duplicates\n", + " df['end_use_unique'] = df.apply(lambda x: f\"{x['end_use']}_{x['count']}\" if x['count'] > 0 else x['end_use'], axis=1)\n", + " \n", + " # Pivot to wide format using the unique end_use names\n", + " df_pivot = df.pivot(index=['state', 'year'], \n", + " columns='end_use_unique', \n", + " values='value').reset_index()\n", + " else:\n", + " # print(\"No duplicates found, converting to wide format directly\")\n", + " # If no duplicates, use regular pivot\n", + " df_pivot = df.pivot(index=['state', 'year'], \n", + " columns='end_use', \n", + " values='value').reset_index()\n", + " \n", + " numeric_columns = [col for col in df_pivot.columns if col not in ['state', 'year']]\n", + " df_pivot[title] = df_pivot[numeric_columns].sum(axis=1)\n", + " df_pivot = df_pivot[['state', title]]\n", + " # print(df_pivot.to_string(index=False))\n", + " return df_pivot\n", + "\n", + "\n", + "scout_res_elec = convert_to_df_for_seds(scout_res_elec_eu[0],projectionyear, 'scout_res_elec')\n", + "scout_com_elec = convert_to_df_for_seds(scout_com_elec_eu[0], projectionyear, 'scout_com_elec')\n", + "scout_res_ng = convert_to_df_for_seds(scout_res_ng_eu[0],projectionyear, 'scout_res_ng')\n", + "scout_com_ng = convert_to_df_for_seds(scout_com_ng_eu[0], projectionyear, 'scout_com_ng')\n", + "\n", + "scout_dat = pd.merge(scout_res_elec, scout_com_elec, on='state', how='inner')\n", + "scout_dat = pd.merge(scout_dat, scout_res_ng, on='state', how='inner')\n", + "scout_dat = pd.merge(scout_dat, scout_com_ng, on='state', how='inner')\n", + "# print(scout_dat.to_string(index=False))\n", + "\n", + "elec_factor = 0.29307107\n", + "ng_factor = 1e6 # 1,000,000\n", + "\n", + "# Apply multiplications to the respective columns\n", + "scout_dat['scout_res_elec_mwh'] = scout_dat['scout_res_elec'] * elec_factor\n", + "scout_dat['scout_com_elec_mwh'] = scout_dat['scout_com_elec'] * elec_factor\n", + "scout_dat['scout_res_ng_tbtu'] = scout_dat['scout_res_ng'] / ng_factor\n", + "scout_dat['scout_com_ng_tbtu'] = scout_dat['scout_com_ng'] / ng_factor\n", + "scout_dat.to_csv(f\"./{file_dir}/scout_dat_euss{eussversion}_proj{projectionyear}.csv\", index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5515b22c-45d9-4132-afd6-497915bd7078", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import os\n", + "# https://www.eia.gov/state/seds/data.cfm?incfile=/state/seds/sep_fuel/html/fuel_use_ng.html&sid=US&sid=CA\n", + "# https://www.eia.gov/electricity/data/state/xls/861/HS861%202010-.xlsx\n", + "\n", + "seds_dir = \"seds\"\n", + "if projectionyear == \"2016\":\n", + " seds_file = \"seds2016.csv\"\n", + "elif projectionyear == \"2023\":\n", + " seds_file = \"seds2023.csv\"\n", + "seds_file_path = os.path.join(seds_dir, seds_file)\n", + "seds_dat = pd.read_csv(seds_file_path)\n", + "\n", + "scout_seds_dat = pd.merge(scout_dat, seds_dat, on='state', how='inner')\n", + "scout_seds_dat = scout_seds_dat[~scout_seds_dat['state'].isin(['AK', 'HI'])]\n", + "# scout_seds_dat.to_csv(\"scout_seds_dat.csv\", index=False)\n", + "# print(scout_seds_dat)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "03344d50-e03a-4c55-8aa8-13f888cf0095", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [], + "source": [ + "df = scout_seds_dat\n", + "file_dir = \"test_compare_base_disagg\"\n", + "pairs = [\n", + " ('scout_res_elec_mwh', 'seds_res_elec_mwh', 'Residential Electricity'),\n", + " ('scout_com_elec_mwh', 'seds_com_elec_mwh', 'Commercial Electricity'),\n", + " ('scout_res_ng_tbtu', 'seds_res_ng_tbtu', 'Residential Natural Gas'),\n", + " ('scout_com_ng_tbtu', 'seds_com_ng_tbtu', 'Commercial Natural Gas')\n", + "]\n", + "\n", + "fig, axes = plt.subplots(2, 2, figsize=(10, 10))\n", + "axes = axes.flatten() # Flatten the 2x2 array for easier iteration\n", + "\n", + "# Plot each pair in the grid\n", + "for idx, (x_col, y_col, title_prefix) in enumerate(pairs):\n", + " if \"Electricity\" in title_prefix:\n", + " lbl_unit = 'MWh'\n", + " else:\n", + " lbl_unit = 'TBtu'\n", + " \n", + " ax = axes[idx]\n", + " \n", + " # Scatter plot\n", + " ax.scatter(df[x_col], df[y_col], color='blue', label='States')\n", + " \n", + " # Add state labels\n", + " for i, state in enumerate(df['state']):\n", + " ax.text(df[x_col].iloc[i], df[y_col].iloc[i], state, fontsize=8, ha='right')\n", + " \n", + " # Plot y=x line\n", + " max_val = max(df[x_col].max(), df[y_col].max())\n", + " min_val = min(df[x_col].min(), df[y_col].min())\n", + " ax.plot([min_val, max_val], [min_val, max_val], 'r--', label='y = x')\n", + " \n", + " # Set labels and title\n", + " ax.set_xlabel(f\"Scout ({lbl_unit})\", fontsize=10)\n", + " ax.set_ylabel(f\"SEDS ({lbl_unit})\", fontsize=10)\n", + " ax.set_title(f'Scout and SEDS ({title_prefix})\\nEUSS={eussversion},Proj.={projectionyear}', fontsize=12)\n", + " \n", + " # Set scientific notation for axes\n", + " ax.ticklabel_format(style='sci', axis='both', scilimits=(0,0))\n", + " \n", + " # Add legend\n", + " ax.legend()\n", + " \n", + " # Add grid\n", + " ax.grid(True)\n", + "\n", + "# Adjust layout to prevent overlap\n", + "plt.tight_layout()\n", + "plt.savefig(f\"./{file_dir}/scout_seds_EUSS{eussversion}_{fueltype}{projectionyear}.png\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f55452dd-c298-4326-a0f9-002a30eedffc", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "f51ca8a2-ff2f-487c-8f40-c4f00ebab65b", + "metadata": {}, + "source": [ + "## Validate with RECS" + ] + }, + { + "cell_type": "markdown", + "id": "2d8c7643-841a-49cb-8355-9edb43fff4e4", + "metadata": {}, + "source": [ + "### Prepare Scout" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f6c1723b-47f5-48b9-a72f-72fd8a10fd46", + "metadata": {}, + "outputs": [], + "source": [ + "def merge_wscoutgeo_cdiv_calc(df):\n", + " scoutgeo = f\"new_scout_geography.csv\"\n", + " scoutgeo_df = pd.read_csv(scoutgeo)\n", + " new_scoutgeo_df = scoutgeo_df[['state', 'cdiv', 'cdiv_high']]\n", + " new_scoutgeo_df = new_scoutgeo_df.drop_duplicates() \n", + "\n", + " final_df = df[df['Year'] == '2020']\n", + " \n", + " final_df = final_df.merge(new_scoutgeo_df, left_on=\"State\", right_on=\"state\", how=\"left\")\n", + " final_df.drop(columns=[\"State\"], inplace=True, errors='ignore')\n", + "\n", + "\n", + " return final_df\n", + " \n", + "def merge_dfs(dfs):\n", + " merged_dfs = []\n", + " \n", + " for dataset_index, dataset in enumerate(dfs):\n", + " if dataset_index == 0:\n", + " for state, df in dataset.items():\n", + " df = df.copy()\n", + " df['State'] = state\n", + " # df['Dataset_Index'] = dataset_index # Track dataset index\n", + " merged_dfs.append(df.reset_index().rename(columns={'index': 'Year'}))\n", + " \n", + " # Concatenating all dataframes into one\n", + " final_df = pd.concat(merged_dfs, ignore_index=True)\n", + " final_df2 = merge_wscoutgeo_cdiv_calc(final_df)\n", + "\n", + " columns_of_interest = [\"heating\", \"cooking\", \"water heating\"]\n", + " df_totals = final_df2.groupby(\"cdiv\")[columns_of_interest].transform(\"sum\")\n", + " \n", + " for col in columns_of_interest:\n", + " final_df2[f\"{col}_ratio\"] = final_df2[col] / df_totals[col]\n", + " \n", + " final_df2 = final_df2[['state']+[s + \"_ratio\" for s in columns_of_interest]]\n", + " \n", + " return final_df2\n", + "\n", + "dir_out = \"test_compare_base_disagg\"\n", + "scout_res_elec, scout_com_elec = get_overall_data(\"electricity\", energy_or_stock, False)\n", + "\n", + "merge_dfs(scout_res_elec).to_csv(f\"./{dir_out}/{energy_or_stock}_{eussversion}_res.csv\", index=False)" + ] + }, + { + "cell_type": "markdown", + "id": "e51af3db-d1e6-4abd-aa71-c58b461ce6a5", + "metadata": {}, + "source": [ + "### Prepare RECS" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "006bea40-1f4b-47be-85b9-0a57724f3773", + "metadata": {}, + "outputs": [], + "source": [ + "## Prepare RECS data \n", + "import pandas as pd\n", + "import numpy as np\n", + "def recs_merge_wscoutgeo_cdiv_calc(df):\n", + " scoutgeo = f\"new_scout_geography.csv\"\n", + " scoutgeo_df = pd.read_csv(scoutgeo)\n", + " new_scoutgeo_df = scoutgeo_df[['state', 'cdiv', 'cdiv_high']]\n", + " new_scoutgeo_df = new_scoutgeo_df.drop_duplicates() \n", + "\n", + " final_df = df\n", + " \n", + " final_df = final_df.merge(new_scoutgeo_df, left_on=\"State\", right_on=\"state\", how=\"left\")\n", + " final_df.drop(columns=[\"State\"], inplace=True, errors='ignore')\n", + " return final_df\n", + "\n", + "def recs_calc_ratio(data, columns_of_interest):\n", + " final_df = data.copy()\n", + " final_df = recs_merge_wscoutgeo_cdiv_calc(final_df)\n", + "\n", + " # Replace strings with NaN across all columns of interest\n", + " final_df[columns_of_interest] = final_df[columns_of_interest].apply(\n", + " lambda x: pd.to_numeric(x, errors='coerce')\n", + " )\n", + " \n", + " # Calculate totals per group, skipping NaN values\n", + " df_totals = final_df.groupby(\"cdiv\")[columns_of_interest].transform(\n", + " lambda x: x.sum(skipna=True)\n", + " )\n", + "\n", + " for col in columns_of_interest:\n", + " final_df[f\"{col}_ratio\"] = np.where(\n", + " final_df[col].notnull() & df_totals[col].notnull(),\n", + " final_df[col] / df_totals[col],\n", + " 'NA'\n", + " )\n", + " \n", + " final_df = final_df[['state']+[s + \"_ratio\" for s in columns_of_interest]]\n", + " return final_df\n", + "\n", + "dir_name = \"recs_docs\"\n", + "dir_out = \"test_compare_base_disagg\"\n", + "\n", + "data = pd.read_csv(f\"{dir_name}/state_appliances.csv\")\n", + "appliances_df = recs_calc_ratio(data, [\"Electric cooking appliance (Number)\"])\n", + "# appliances_df.to_csv(f\"{dir_out}/recs_appliances.csv\",index=False)\n", + "\n", + "data = pd.read_csv(f\"{dir_name}/state_space_heating.csv\")\n", + "heating_df = recs_calc_ratio(data, [\"Central heat pump (Number)\"])\n", + "# heating_df.to_csv(f\"{dir_out}/recs_heating.csv\",index=False)\n", + "\n", + "data = pd.read_csv(f\"{dir_name}/state_water_heating.csv\")\n", + "water_heating_df = recs_calc_ratio(data, [\"Electricity (Number)\"])\n", + "# water_heating_df.to_csv(f\"{dir_out}/recs_water_heating.csv\",index=False)\n", + "\n", + "water_heating_df = water_heating_df.rename(columns={\"Electricity (Number)_ratio\": \"recs_water_heating_ratio\"})\n", + "heating_df = heating_df.rename(columns={\"Central heat pump (Number)_ratio\": \"recs_heating_ratio\"})\n", + "appliances_df = appliances_df.rename(columns={\"Electric cooking appliance (Number)_ratio\": \"recs_cooking_ratio\"})\n", + "\n", + "# Merge the DataFrames on 'state' using outer join\n", + "recs_df = pd.merge(water_heating_df, heating_df, on=\"state\", how=\"outer\")\n", + "recs_df = pd.merge(recs_df, appliances_df, on=\"state\", how=\"outer\")\n", + "recs_df.to_csv(f\"{dir_out}/recs_data.csv\",index=False)\n" + ] + }, + { + "cell_type": "markdown", + "id": "bb7b3d4a-8de9-44e9-8c57-9126a6ed1487", + "metadata": {}, + "source": [ + "### Analyze with RECS" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "25d1698f-b42d-4deb-bea0-da6460687dfb", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# ANALYSIS with RECS\n", + "###########################################################################################\n", + "\n", + "\n", + "\n", + "###########################\n", + "recs_df = pd.read_csv(f\"{dir_out}/recs_data.csv\")\n", + "stock_df = pd.read_csv(f\"{dir_out}/{energy_or_stock}_{eussversion}_res.csv\") # Got the data from running 1. Data preparation for Scout output using Stock data\n", + "stock_recs_df = pd.merge(stock_df, recs_df, on=\"state\", how=\"outer\")\n", + "stock_recs_df.to_csv(f\"{dir_out}/stock_recs.csv\",index=False)\n", + "###########################\n", + "\n", + "df = stock_recs_df.copy()\n", + "\n", + "# Define the pairs of columns to compare\n", + "comparisons = [\n", + " (\"heating_ratio\", \"recs_heating_ratio\", \"Heating (Year 2020)\"),\n", + " (\"cooking_ratio\", \"recs_cooking_ratio\", \"Cooking (Year 2020)\"),\n", + " (\"water heating_ratio\", \"recs_water_heating_ratio\", \"Water Heating (Year 2020)\")\n", + "]\n", + "\n", + "# Create a 1x3 grid of subplots\n", + "fig, axes = plt.subplots(1, 3, figsize=(15, 5), sharex=True, sharey=True)\n", + "\n", + "# Plot each comparison\n", + "for idx, (x_col, y_col, title) in enumerate(comparisons):\n", + " ax = axes[idx]\n", + " \n", + " # Scatter plot for states (drop rows where either x or y is NaN)\n", + " plot_df = df.dropna(subset=[x_col, y_col])\n", + " ax.scatter(plot_df[x_col], plot_df[y_col], color='blue', label='States')\n", + " \n", + " # Add state labels to each point\n", + " for i, state in enumerate(plot_df['state']):\n", + " ax.annotate(state, (plot_df[x_col].iloc[i], plot_df[y_col].iloc[i]), fontsize=8)\n", + " \n", + " # Plot y=x line\n", + " ax.plot([0, 1], [0, 1], 'r--', label='y = x')\n", + " \n", + " # Set labels and title\n", + " ax.set_xlabel(f\"Using tech factors: {title.split()[0]}\")\n", + " ax.set_ylabel(f\"Using RECS: {title.split()[0]}\")\n", + " ax.set_title(title)\n", + " \n", + " # Set log scale (optional, based on the image; adjust limits as needed)\n", + " ax.set_xscale('linear')\n", + " ax.set_yscale('linear')\n", + " ax.set_xlim(0, 1)\n", + " ax.set_ylim(0, 1)\n", + " \n", + " # Add legend\n", + " ax.legend()\n", + "\n", + "# Adjust layout to prevent overlap\n", + "plt.tight_layout()\n", + "# plt.show()\n", + "plt.savefig(f\"./{dir_out}/scout_recs_version_{eussversion}.png\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/scout/supporting_data/base_disagg/test04_nan_compare.ipynb b/scout/supporting_data/base_disagg/test04_nan_compare.ipynb new file mode 100644 index 00000000..19e2a628 --- /dev/null +++ b/scout/supporting_data/base_disagg/test04_nan_compare.ipynb @@ -0,0 +1,185 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "20014917-1356-483a-a7af-89969420159e", + "metadata": {}, + "source": [ + "## Check for NaN" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c131a8bc-1ebc-4c0c-915b-8496741f7719", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import math\n", + "\n", + "def load_json_file(path):\n", + " with open(path, 'r', encoding='utf-8') as f:\n", + " return json.load(f)\n", + "\n", + "def find_nan_paths(obj, path=\"\"):\n", + " paths_with_nan = []\n", + "\n", + " if isinstance(obj, dict):\n", + " for key, value in obj.items():\n", + " new_path = f\"{path}.{key}\" if path else key\n", + " if isinstance(value, (dict, list)):\n", + " paths_with_nan.extend(find_nan_paths(value, new_path))\n", + " elif isinstance(value, float) and math.isnan(value):\n", + " # Exclude the final key with NaN, keep the path before it\n", + " parent_path = path if path else key\n", + " if parent_path not in paths_with_nan:\n", + " paths_with_nan.append(parent_path)\n", + " elif isinstance(obj, list):\n", + " for index, item in enumerate(obj):\n", + " new_path = f\"{path}[{index}]\"\n", + " if isinstance(item, (dict, list)):\n", + " paths_with_nan.extend(find_nan_paths(item, new_path))\n", + " elif isinstance(item, float) and math.isnan(item):\n", + " # Exclude the final key with NaN, keep the path before it\n", + " paths_with_nan.append(path)\n", + "\n", + " return paths_with_nan\n", + "\n", + "\n", + "\n", + "# Convert \"NaN\" strings to actual NaN if needed\n", + "def convert_to_nan(obj):\n", + " if isinstance(obj, dict):\n", + " return {k: convert_to_nan(v) for k, v in obj.items()}\n", + " elif isinstance(obj, list):\n", + " return [convert_to_nan(i) for i in obj]\n", + " elif isinstance(obj, str) and obj.lower() == \"nan\":\n", + " return float('nan')\n", + " return obj\n", + "\n", + "file_dir = \"test_compare_base_disagg/test\"\n", + "file_names = [\n", + " \"mseg_res_com_emm_allfuel_tech.json\",\n", + " \"mseg_res_com_emm_allfuel_eu.json\",\n", + " \"mseg_res_com_emm_elec_tech.json\",\n", + " \"mseg_res_com_emm_elec_eu.json\",\n", + " \"mseg_res_com_state_allfuel_tech.json\",\n", + " \"mseg_res_com_state_allfuel_eu.json\",\n", + " \"mseg_res_com_state_elec_tech.json\",\n", + " \"mseg_res_com_state_elec_eu.json\"\n", + "]\n", + "for file_name in file_names:\n", + " file_path = f\"./{file_dir}/{file_name}\"\n", + " json_data = load_json_file(file_path)\n", + " \n", + " json_data = convert_to_nan(json_data)\n", + " \n", + " # Find and print paths\n", + " nan_paths = find_nan_paths(json_data)\n", + " print(f\"\\n{file_name}: Paths leading to NaN values (excluding final key):\")\n", + " if nan_paths:\n", + " for p in sorted(set(nan_paths)):\n", + " print(p)\n", + " else:\n", + " print(\"No NaN values found.\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "af2bbde0-f58d-4265-a8dd-2a40362511a5", + "metadata": {}, + "source": [ + "## Compare 2 json files" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a0edadfc-9f68-4e65-949b-a647b7fc9155", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "\n", + "def load_json_file(path):\n", + " with open(path, 'r', encoding='utf-8') as f:\n", + " return json.load(f)\n", + "\n", + "def compare_json(a, b, path=\"\"):\n", + " differences = []\n", + "\n", + " if isinstance(a, dict) and isinstance(b, dict):\n", + " all_keys = set(a.keys()) | set(b.keys())\n", + " for key in all_keys:\n", + " new_path = f\"{path}.{key}\" if path else key\n", + " if key not in a:\n", + " differences.append(f\"{new_path} - missing in first file\")\n", + " elif key not in b:\n", + " differences.append(f\"{new_path} - missing in second file\")\n", + " else:\n", + " differences.extend(compare_json(a[key], b[key], new_path))\n", + " elif isinstance(a, list) and isinstance(b, list):\n", + " min_len = min(len(a), len(b))\n", + " for i in range(min_len):\n", + " new_path = f\"{path}[{i}]\"\n", + " differences.extend(compare_json(a[i], b[i], new_path))\n", + " if len(a) > len(b):\n", + " differences.append(f\"{path} - extra elements in first file\")\n", + " elif len(b) > len(a):\n", + " differences.append(f\"{path} - extra elements in second file\")\n", + " else:\n", + " if a != b:\n", + " differences.append(f\"{path} - value mismatch\")\n", + "\n", + " return differences\n", + "\n", + "# Example usage\n", + "file_dir = \"test_compare_base_disagg/test\"\n", + "file1 = \"mseg_res_com_state_allfuel_tech.json\"\n", + "file2 = \"mseg_res_com_state_allfuel_tech_1.json\"\n", + "\n", + "json1 = load_json_file(f\"./{file_dir}/{file1}\")\n", + "json2 = load_json_file(f\"./{file_dir}/{file2}\")\n", + "\n", + "diffs = compare_json(json1, json2)\n", + "\n", + "if not diffs:\n", + " print(\"Two files are identical.\")\n", + "else:\n", + " print(\"Differences found:\")\n", + " for diff in diffs:\n", + " print(diff)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e557ffe3-581e-4714-838b-27f29b1c0f1f", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}