Skip to main content

US Coal Plant Distribution

banner-image

Justin Napolitano

2022-05-07 18:40:32.169 +0000 UTC


Table of Contents


Series

This is a post in the North American Energy series.
Other posts in this series:

  • Existing Carbon and Gas Storage Facilities
  • Potential Carbon and Hydrogen Storage Facilities Near Import/Export Ports
  • Potential Carbon and Hydrogen Storage Wells Near Pipelines
  • Reviewing North American Gas and Oil Field Distribution

  • Coal Plants

    Data Import

    
    import pandas as pd
    import matplotlib.pyplot as plt
    import geopandas as gpd
    from folium import plugins
    import folium
    
    
    pd.set_option('display.float_format', lambda x: '%0.4f' % x)
    
    /Users/jnapolitano/venvs/finance/lib/python3.9/site-packages/geopandas/_compat.py:111: UserWarning: The Shapely GEOS version (3.10.2-CAPI-1.16.0) is incompatible with the GEOS version PyGEOS was compiled with (3.10.1-CAPI-1.16.0). Conversions between both will be slow.
      warnings.warn(
    
    gisfilepath = "/Users/jnapolitano/Projects/gas.jnapolitano.io/source/data/Power_Plants.geojson"
    
    powerplants_df = gpd.read_file(gisfilepath)
    #Selecting only Operational Plants
    powerplants_df=powerplants_df.loc[powerplants_df['STATUS'] == 'OP'].copy()
    na = powerplants_df.COAL_USED.min()
    powerplants_df.replace(na, 0 , inplace=True)
    
    #powerplants_df = powerplants_df.to_crs(epsg=3857)
    
    powerplants_df.describe()
    

    OBJECTID LATITUDE LONGITUDE OPER_CAP SUMMER_CAP WINTER_CAP PLAN_CAP RETIRE_CAP GEN_UNITS PLAN_UNIT RETIR_UNIT COAL_USED NGAS_USED OIL_USED NET_GEN CAP_FACTOR LINES SOURCE_LAT SOURC_LONG
    count 8736.0000 8736.0000 8736.0000 8736.0000 8736.0000 8736.0000 8736.0000 8736.0000 8736.0000 8736.0000 8736.0000 8736.0000 8736.0000 8736.0000 8736.0000 8736.0000 8736.0000 8736.0000 8736.0000
    mean 5709.4960 39.0405 -95.0667 134.5691 123.2273 127.9356 1.5068 12.3725 2.3368 0.0144 0.2098 75285.8993 1351867.2459 3590.2573 466814.5072 0.0371 0.3489 39.0424 -94.1651
    std 3315.5893 5.5191 19.0667 367.0281 339.7523 350.9757 36.1032 100.9833 2.8505 0.1797 0.9739 555638.6353 6289781.4216 57026.9476 1813781.4037 12.5042 0.5880 5.5178 21.7038
    min 1.0000 18.9737 -171.7124 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -3465212.0000 -1141.5514 0.0000 18.9742 -171.7124
    25% 2666.7500 35.1990 -113.7045 2.7000 2.5000 2.4000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000 0.0000 0.0000 2141.7500 0.0574 0.0000 35.1986 -113.6161
    50% 5832.5000 39.4456 -91.6117 9.6000 8.7500 8.8000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000 0.0000 0.0000 11727.0000 0.2137 0.0000 39.4492 -91.0609
    75% 8566.2500 42.4995 -78.6045 74.8000 70.0000 72.0000 0.0000 0.0000 3.0000 0.0000 0.0000 0.0000 0.0000 0.0000 133402.5000 0.4291 1.0000 42.5003 -78.2997
    max 11810.0000 71.2921 -67.4016 6809.0000 7079.0000 7079.0000 2200.0000 3623.0000 73.0000 5.0000 28.0000 10040760.0000 138014506.0000 4130642.0000 32377477.0000 4.6214 11.0000 71.2920 36.2439

    Identifying the Coal Plants in the Data Set

    #powerplants_df.PRIM_FUEL.unique()
    #RC,WC,NUC
    #Selecting only Operational Plants
    #powerplants_df=powerplants_df.loc[powerplants_df['STATUS'] == 'OP'].copy()
    
    #selecting coal plants
    wc_plants = powerplants_df.loc[powerplants_df['PRIM_FUEL'] == 'WC'].copy()
    rc_plants = powerplants_df.loc[powerplants_df['PRIM_FUEL'] == 'RC'].copy()
    
    #concatenating coal type dfs into one
    coal_df = pd.concat([wc_plants,rc_plants])
    coal_df.describe()
    

    OBJECTID LATITUDE LONGITUDE OPER_CAP SUMMER_CAP WINTER_CAP PLAN_CAP RETIRE_CAP GEN_UNITS PLAN_UNIT RETIR_UNIT COAL_USED NGAS_USED OIL_USED NET_GEN CAP_FACTOR LINES SOURCE_LAT SOURC_LONG
    count 57.0000 57.0000 57.0000 57.0000 57.0000 57.0000 57.0000 57.0000 57.0000 57.0000 57.0000 57.0000 57.0000 57.0000 57.0000 57.0000 57.0000 57.0000 57.0000
    mean 5135.8772 40.2310 -87.9468 917.2860 847.2895 857.5018 0.0000 39.3053 2.4035 0.0000 0.2807 2467056.0175 174216.7368 20473.0877 4182981.7334 0.6248 1.0526 40.2305 -87.9464
    std 1664.2524 3.4565 10.7777 816.4680 770.3886 777.3217 0.0000 129.1725 1.9808 0.0000 0.8399 2033289.2523 590154.3045 32768.4837 4004898.0029 0.2129 0.3974 3.4563 10.7774
    min 4.0000 33.0162 -122.8579 36.0000 30.0000 30.0000 0.0000 0.0000 1.0000 0.0000 0.0000 148199.0000 0.0000 0.0000 152019.0030 0.0581 0.0000 33.0158 -122.8579
    25% 4548.0000 38.9358 -91.0933 118.0000 110.0000 110.0000 0.0000 0.0000 1.0000 0.0000 0.0000 654898.0000 0.0000 0.0000 632906.9980 0.5046 1.0000 38.9347 -91.0931
    50% 5537.0000 40.5506 -87.8282 713.5000 667.0000 667.0000 0.0000 0.0000 2.0000 0.0000 0.0000 1828680.0000 0.0000 9177.0000 2962990.9740 0.6740 1.0000 40.5500 -87.8294
    75% 6228.0000 41.3891 -79.8129 1368.0000 1240.0000 1268.0000 0.0000 0.0000 3.0000 0.0000 0.0000 4252609.0000 80899.0000 30470.0000 7021327.9590 0.7530 1.0000 41.3917 -79.8134
    max 7494.0000 47.3785 -75.4788 3293.1000 3080.0000 3100.0000 0.0000 617.4000 10.0000 0.0000 5.0000 8075504.0000 3834495.0000 161203.0000 16457510.7330 1.0209 3.0000 47.3777 -75.4792

    Coal Plants Interactive Map

    
    .. index::
       single: Coal Plants Interactive Map
    
    coal_map = coal_df.explore(column="NET_GEN", # make choropleth based on "BoroName" column
         popup=True, # show all values in popup (on click)
         tiles="Stamen Terrain", # use "CartoDB positron" tiles
         cmap="Set1", # use "Set1" matplotlib colormap
         style_kwds=dict(color="black"),
         marker_kwds= dict(radius=6),# use black outline)
         scheme = 'EqualInterval',
         k = 5
    
    )
    coal_map
    
    Make this Notebook Trusted to load map: File -> Trust Notebook

    Coal Plant Density Interactive Map

    
    .. index::
       single: Coal Plant Density Interactive Map
    
    coal_heat_data = [[point.xy[1][0], point.xy[0][0]] for point in coal_df.geometry ]
    #
    
    coal_density_map = folium.Map(location = [30, -90], tiles='Cartodb dark_matter', zoom_start = 4)
    
    coal_heat_layer = plugins.HeatMap(data = coal_heat_data, show=True)
    coal_heat_layer.add_to(coal_density_map)
    
    coal_density_map
    
    Make this Notebook Trusted to load map: File -> Trust Notebook

    Series

    This is a post in the North American Energy series.
    Other posts in this series:

  • Existing Carbon and Gas Storage Facilities
  • Potential Carbon and Hydrogen Storage Facilities Near Import/Export Ports
  • Potential Carbon and Hydrogen Storage Wells Near Pipelines
  • Reviewing North American Gas and Oil Field Distribution

  • comments powered by Disqus