In [1]:
import numpy as np
import matplotlib.pyplot as plt
import netCDF4 as nc
import pandas as pd
import os
import csv
from glob import glob
import xarray as xr
import h5py
from scipy.interpolate import griddata
from shapely.geometry import Point

import geopandas as gpd
import pandas as pd
import numpy as np
import xarray as xr
import geopandas as gpd
import os
import shapely as shp
from matplotlib.font_manager import FontProperties
from matplotlib.patches import Patch
from matplotlib.legend_handler import HandlerPatch

os.chdir('/Users/chenchenren/postdoc/paper/2N and water-US/Figure 7 Cost and Benefit/')
/Users/chenchenren/anaconda3/lib/python3.11/site-packages/pandas/core/arrays/masked.py:60: UserWarning: Pandas requires version '1.3.6' or newer of 'bottleneck' (version '1.3.5' currently installed).
  from pandas.core import (
In [2]:
excel_file = "/Users/chenchenren/postdoc/paper/2N and water-US/Figure 5 By state/region_stata.csv"
data = pd.read_csv(excel_file)
print(data)
      
# Provide the path to the downloaded file
gazetteer_file_path = '/Users/chenchenren/postdoc/paper/2N and water-US/Figure 5 By state/2023_Gaz_counties_national.txt'

# Read the file into a DataFrame, specifying the delimiter (tab-separated)
gazetteer_data = pd.read_csv(gazetteer_file_path, sep='\t', dtype={'GEOID': float})
gazetteer_data = gazetteer_data[['USPS', 'GEOID']]
print(gazetteer_data)

gazetteer_data = gazetteer_data.merge(data, on='USPS', how='left')
print(gazetteer_data)

excel_file = "cost_benefit_state_soybean.csv"
data1 = pd.read_csv(excel_file)
data1['STATE1']=data1['state1']
print(data1)

excel_file = "/Users/chenchenren/postdoc/paper/2N and water-US/Bootstrap/cost_benefit_state_bootstrap_soybean.csv"
data2 = pd.read_csv(excel_file)
data2['STATE1']=data2['state1']
print(data2)

excel_file = "/Users/chenchenren/postdoc/paper/2N and water-US/Bootstrap/cost_benefit_country_bootstrap_soybean.csv"
data3 = pd.read_csv(excel_file)
print(data3)
             Region USPS          STATE1  stateansi
0   E SOUTH CENTRAL   AL         Alabama          1
1     SOUTH CENTRAL   AR        Arkansas          5
2         SOUTHWEST   AZ         Arizona          4
3          MOUNTAIN   NM      New Mexico         35
4         SOUTHWEST   CA      California          6
5          MOUNTAIN   CO        Colorado          8
6         NORTHEAST   CT     Connecticut          9
7         NORTHEAST   DE        Delaware         10
8         SOUTHEAST   FL         Florida         12
9         SOUTHEAST   GA         Georgia         13
10    NORTH CENTRAL   IA            Iowa         19
11        NORTHWEST   ID           Idaho         16
12    NORTH CENTRAL   IL        Illinois         17
13    NORTH CENTRAL   IN         Indiana         18
14  NORTHERN PLAINS   KS          Kansas         20
15  E SOUTH CENTRAL   KY        Kentucky         21
16  E SOUTH CENTRAL   LA       Louisiana         22
17        NORTHEAST   MA   Massachusetts         25
18        NORTHEAST   MD        Maryland         24
19        NORTHEAST   ME           Maine         23
20    NORTH CENTRAL   MI        Michigan         26
21    NORTH CENTRAL   MN       Minnesota         27
22    NORTH CENTRAL   MO        Missouri         29
23  E SOUTH CENTRAL   MS     Mississippi         28
24         MOUNTAIN   MT         Montana         30
25        SOUTHEAST   NC  North Carolina         37
26  NORTHERN PLAINS   ND    North Dakota         38
27  NORTHERN PLAINS   NE        Nebraska         31
28        NORTHEAST   NH   New Hampshire         33
29        NORTHEAST   NJ      New Jersey         34
30        SOUTHWEST   NV          Nevada         32
31        NORTHEAST   NY        New York         36
32    NORTH CENTRAL   OH            Ohio         39
33    SOUTH CENTRAL   OK        Oklahoma         40
34        NORTHWEST   OR          Oregon         41
35        NORTHEAST   PA    Pennsylvania         42
36        NORTHEAST   RI    Rhode Island         44
37        SOUTHEAST   SC  South Carolina         45
38  NORTHERN PLAINS   SD    South Dakota         46
39  E SOUTH CENTRAL   TN       Tennessee         47
40    SOUTH CENTRAL   TX           Texas         48
41        SOUTHWEST   UT            Utah         49
42        SOUTHEAST   VA        Virginia         51
43        NORTHEAST   VT         Vermont         50
44        NORTHWEST   WA      Washington         53
45    NORTH CENTRAL   WI       Wisconsin         55
46        NORTHEAST   WV   West Virginia         54
47         MOUNTAIN   WY         Wyoming         56
     USPS    GEOID
0      AL   1001.0
1      AL   1003.0
2      AL   1005.0
3      AL   1007.0
4      AL   1009.0
...   ...      ...
3217   PR  72145.0
3218   PR  72147.0
3219   PR  72149.0
3220   PR  72151.0
3221   PR  72153.0

[3222 rows x 2 columns]
     USPS    GEOID           Region   STATE1  stateansi
0      AL   1001.0  E SOUTH CENTRAL  Alabama        1.0
1      AL   1003.0  E SOUTH CENTRAL  Alabama        1.0
2      AL   1005.0  E SOUTH CENTRAL  Alabama        1.0
3      AL   1007.0  E SOUTH CENTRAL  Alabama        1.0
4      AL   1009.0  E SOUTH CENTRAL  Alabama        1.0
...   ...      ...              ...      ...        ...
3217   PR  72145.0              NaN      NaN        NaN
3218   PR  72147.0              NaN      NaN        NaN
3219   PR  72149.0              NaN      NaN        NaN
3220   PR  72151.0              NaN      NaN        NaN
3221   PR  72153.0              NaN      NaN        NaN

[3222 rows x 5 columns]
    scenario         state1  production_benefit_irri_t  irri_cost_irri_t  \
0        1.5        Alabama                  -4.229711         22.237037   
1        1.5       Arkansas                  -4.097742         -6.934679   
2        1.5       Delaware                  -0.454248          0.882800   
3        1.5        Florida                  -0.945025          0.215488   
4        1.5        Georgia                   0.742264          0.123610   
..       ...            ...                        ...               ...   
57       3.0      Tennessee                  -7.425782         85.527103   
58       3.0          Texas                 -11.243790          0.549856   
59       3.0       Virginia                  -9.707835         10.189684   
60       3.0  West Virginia                   0.340261          0.000000   
61       3.0      Wisconsin                 104.366425          0.000000   

    net_benefits_irri_t  production_benefit_lnfer_t  fer_cost_fer_t  \
0            -26.466749                    5.412471        2.634539   
1              2.836937                  135.662864       53.888268   
2             -1.337048                    2.286980        0.075286   
3             -1.160512                    0.027452        0.001880   
4              0.618654                    1.540693        0.123584   
..                  ...                         ...             ...   
57           -92.952885                  133.522941       53.301743   
58           -11.793647                    8.028937        1.664579   
59           -19.897520                   29.929930       16.876727   
60             0.340261                    0.455498        0.005718   
61           104.366425                  104.366425        0.000000   

    net_benefits_lnfer_t  production_benefit_mana_t  irri_cost_mana_t  \
0               2.777932                   5.962040         -9.388624   
1              81.774596                 151.444754        -40.803628   
2               2.211693                   2.376867         -1.880136   
3               0.025572                   0.027526          0.000000   
4               1.417109                   1.560953         -0.425709   
..                   ...                        ...               ...   
57             80.221198                 168.777715        -12.909839   
58              6.364357                  10.318007          0.000000   
59             13.053203                  35.089664         -0.881890   
60              0.449780                   0.464248         -0.000469   
61            104.366425                 104.366425          0.000000   

    fer_cost_mana_t  net_benefits_mana_t         STATE1  
0          2.251015            13.099648        Alabama  
1         24.919730           167.328652       Arkansas  
2          0.064534             4.192469       Delaware  
3          0.001880             0.025646        Florida  
4          0.036681             1.949980        Georgia  
..              ...                  ...            ...  
57        49.536538           132.151016      Tennessee  
58         1.664579             8.653428          Texas  
59        15.825354            20.146200       Virginia  
60         0.005718             0.458999  West Virginia  
61         0.000000           104.366425      Wisconsin  

[62 rows x 13 columns]
            state1  scenario  net_benefit_mana_p5  net_benefit_mana_p95  \
0          Alabama       1.5             9.637692             12.855616   
1          Alabama       3.0            28.430698             32.968700   
2         Arkansas       1.5           117.150081            132.311621   
3         Arkansas       3.0            70.262774            248.665490   
4         Delaware       1.5             4.041214              5.238395   
5         Delaware       3.0             5.076530             12.442841   
6          Florida       1.5             0.004324              0.021677   
7          Florida       3.0             0.573436              0.679152   
8          Georgia       1.5             0.808435              0.940196   
9          Georgia       3.0            15.302588             17.697003   
10        Illinois       1.5            18.069357             34.135946   
11        Illinois       3.0           357.890275            461.627200   
12         Indiana       3.0            70.371207            100.782074   
13         Indiana       1.5             0.745217              1.082977   
14            Iowa       1.5             3.547419              6.681909   
15            Iowa       3.0            47.386795             74.916808   
16          Kansas       1.5            97.384117            110.697715   
17          Kansas       3.0           306.552384            350.985335   
18        Kentucky       1.5             7.951642             10.005109   
19        Kentucky       3.0            78.187452             93.987354   
20       Louisiana       1.5            23.533627             26.107881   
21       Louisiana       3.0           100.526775            120.226196   
22        Maryland       1.5            13.078795             13.516139   
23        Maryland       3.0            27.527269             32.729904   
24       Minnesota       1.5             0.000000              0.559552   
25     Mississippi       3.0           182.182607            216.366975   
26     Mississippi       1.5            57.177025             63.547325   
27        Missouri       1.5            53.063903             67.801040   
28        Missouri       3.0           243.107500            287.745903   
29        Nebraska       1.5             5.388827              7.508153   
30        Nebraska       3.0            87.346832            123.014569   
31      New Jersey       1.5             0.061477              0.071461   
32      New Jersey       3.0             0.379709              0.622123   
33        New York       1.5             0.000000              0.000000   
34  North Carolina       3.0            74.398257             95.501876   
35  North Carolina       1.5            21.752457             25.417235   
36            Ohio       3.0             0.322983              2.109478   
37        Oklahoma       1.5             8.803164             10.437326   
38        Oklahoma       3.0            21.931445             30.232381   
39    Pennsylvania       3.0            -3.155823              1.169164   
40  South Carolina       3.0            16.703469             19.699789   
41  South Carolina       1.5             0.256288              0.317572   
42       Tennessee       1.5            26.889571             44.930432   
43       Tennessee       3.0           124.923062            141.291561   
44           Texas       1.5             2.525509              2.854742   
45           Texas       3.0             7.261168              9.770845   
46        Virginia       1.5             5.492080              6.151219   
47        Virginia       3.0            20.069991             23.208973   
48   West Virginia       3.0             0.152181              0.234558   
49       Wisconsin       3.0             0.000000              0.000000   
50       Wisconsin       1.5             0.000000              0.000000   

    net_benefit_mana_med          STATE1  
0              12.379158         Alabama  
1              31.136365         Alabama  
2             124.721669        Arkansas  
3             145.591953        Arkansas  
4               4.407544        Delaware  
5               5.739737        Delaware  
6               0.015641         Florida  
7               0.625200         Florida  
8               0.863898         Georgia  
9              16.570705         Georgia  
10             25.968023        Illinois  
11            409.132168        Illinois  
12             85.228960         Indiana  
13              0.957532         Indiana  
14              5.024953            Iowa  
15             59.364668            Iowa  
16            103.904717          Kansas  
17            328.219634          Kansas  
18              8.874326        Kentucky  
19             85.900173        Kentucky  
20             24.895769       Louisiana  
21            110.857378       Louisiana  
22             13.300181        Maryland  
23             30.249892        Maryland  
24              0.000000       Minnesota  
25            199.886808     Mississippi  
26             60.573863     Mississippi  
27             60.831421        Missouri  
28            264.936883        Missouri  
29              6.515854        Nebraska  
30            105.897812        Nebraska  
31              0.066942      New Jersey  
32              0.506994      New Jersey  
33              0.000000        New York  
34             89.745917  North Carolina  
35             23.909081  North Carolina  
36              1.530826            Ohio  
37              9.662547        Oklahoma  
38             26.235257        Oklahoma  
39              0.526748    Pennsylvania  
40             18.432567  South Carolina  
41              0.271361  South Carolina  
42             40.017291       Tennessee  
43            132.788674       Tennessee  
44              2.703652           Texas  
45              8.638596           Texas  
46              5.841842        Virginia  
47             21.622542        Virginia  
48              0.191527   West Virginia  
49              0.000000       Wisconsin  
50              0.000000       Wisconsin  
   scenario  net_benefit_mana_p5  net_benefit_mana_p95  net_benefit_mana_med
0       1.5           504.999169            562.843575            532.670232
1       3.0          2015.709592           2379.947210           2189.906400
In [3]:
err=data2[['STATE1','net_benefit_mana_p95', 'net_benefit_mana_p5', 'net_benefit_mana_med','scenario']]
err['p95']=np.abs(err['net_benefit_mana_p95']-err['net_benefit_mana_med'])
err['p5']=np.abs(err['net_benefit_mana_p5']-err['net_benefit_mana_med'])
err=err[['STATE1','p95', 'p5','scenario']]
print(err)
err3=err[err['scenario']==3]
err15=err[err['scenario']==1.5]
err15.rename(columns={'p95': 'p95_15'}, inplace=True)
err15.rename(columns={'p5': 'p5_15'}, inplace=True)
err15=err15[['STATE1','p95_15', 'p5_15']]
err3.rename(columns={'p95': 'p95_3'}, inplace=True)
err3.rename(columns={'p5': 'p5_3'}, inplace=True)
err3=err3[['STATE1','p95_3', 'p5_3']]
err = err15.merge(err3, on='STATE1', how='left')
print(err)


err_country=data3[['net_benefit_mana_p95', 'net_benefit_mana_p5', 'net_benefit_mana_med','scenario']]
err_country['STATE1'] = 'U.S.'
err_country['p95']=np.abs(err_country['net_benefit_mana_p95']-err_country['net_benefit_mana_med'])
err_country['p5']=np.abs(err_country['net_benefit_mana_p5']-err_country['net_benefit_mana_med'])
err_country=err_country[['STATE1','p95', 'p5','scenario']]
print(err_country)
err_country3=err_country[err_country['scenario']==3]
err_country15=err_country[err_country['scenario']==1.5]
err_country15.rename(columns={'p95': 'p95_15'}, inplace=True)
err_country15.rename(columns={'p5': 'p5_15'}, inplace=True)
err_country15=err_country15[['STATE1','p95_15', 'p5_15']]
err_country3.rename(columns={'p95': 'p95_3'}, inplace=True)
err_country3.rename(columns={'p5': 'p5_3'}, inplace=True)
err_country3=err_country3[['STATE1','p95_3', 'p5_3']]
err_country = err_country15.merge(err_country3, on='STATE1', how='left')
print(err_country)
            STATE1         p95         p5  scenario
0          Alabama    0.476458   2.741466       1.5
1          Alabama    1.832335   2.705667       3.0
2         Arkansas    7.589952   7.571588       1.5
3         Arkansas  103.073537  75.329180       3.0
4         Delaware    0.830851   0.366330       1.5
5         Delaware    6.703104   0.663207       3.0
6          Florida    0.006036   0.011316       1.5
7          Florida    0.053952   0.051764       3.0
8          Georgia    0.076298   0.055463       1.5
9          Georgia    1.126298   1.268117       3.0
10        Illinois    8.167923   7.898666       1.5
11        Illinois   52.495032  51.241892       3.0
12         Indiana   15.553114  14.857753       3.0
13         Indiana    0.125445   0.212315       1.5
14            Iowa    1.656956   1.477534       1.5
15            Iowa   15.552140  11.977874       3.0
16          Kansas    6.792998   6.520600       1.5
17          Kansas   22.765701  21.667251       3.0
18        Kentucky    1.130783   0.922683       1.5
19        Kentucky    8.087180   7.712721       3.0
20       Louisiana    1.212112   1.362142       1.5
21       Louisiana    9.368818  10.330603       3.0
22        Maryland    0.215958   0.221386       1.5
23        Maryland    2.480012   2.722623       3.0
24       Minnesota    0.559552   0.000000       1.5
25     Mississippi   16.480167  17.704201       3.0
26     Mississippi    2.973462   3.396839       1.5
27        Missouri    6.969620   7.767518       1.5
28        Missouri   22.809020  21.829383       3.0
29        Nebraska    0.992300   1.127027       1.5
30        Nebraska   17.116757  18.550980       3.0
31      New Jersey    0.004519   0.005465       1.5
32      New Jersey    0.115129   0.127285       3.0
33        New York    0.000000   0.000000       1.5
34  North Carolina    5.755959  15.347660       3.0
35  North Carolina    1.508153   2.156624       1.5
36            Ohio    0.578652   1.207842       3.0
37        Oklahoma    0.774779   0.859383       1.5
38        Oklahoma    3.997124   4.303811       3.0
39    Pennsylvania    0.642416   3.682571       3.0
40  South Carolina    1.267222   1.729098       3.0
41  South Carolina    0.046211   0.015074       1.5
42       Tennessee    4.913140  13.127720       1.5
43       Tennessee    8.502888   7.865612       3.0
44           Texas    0.151090   0.178143       1.5
45           Texas    1.132249   1.377428       3.0
46        Virginia    0.309378   0.349761       1.5
47        Virginia    1.586430   1.552551       3.0
48   West Virginia    0.043031   0.039346       3.0
49       Wisconsin    0.000000   0.000000       3.0
50       Wisconsin    0.000000   0.000000       1.5
            STATE1    p95_15      p5_15       p95_3       p5_3
0          Alabama  0.476458   2.741466    1.832335   2.705667
1         Arkansas  7.589952   7.571588  103.073537  75.329180
2         Delaware  0.830851   0.366330    6.703104   0.663207
3          Florida  0.006036   0.011316    0.053952   0.051764
4          Georgia  0.076298   0.055463    1.126298   1.268117
5         Illinois  8.167923   7.898666   52.495032  51.241892
6          Indiana  0.125445   0.212315   15.553114  14.857753
7             Iowa  1.656956   1.477534   15.552140  11.977874
8           Kansas  6.792998   6.520600   22.765701  21.667251
9         Kentucky  1.130783   0.922683    8.087180   7.712721
10       Louisiana  1.212112   1.362142    9.368818  10.330603
11        Maryland  0.215958   0.221386    2.480012   2.722623
12       Minnesota  0.559552   0.000000         NaN        NaN
13     Mississippi  2.973462   3.396839   16.480167  17.704201
14        Missouri  6.969620   7.767518   22.809020  21.829383
15        Nebraska  0.992300   1.127027   17.116757  18.550980
16      New Jersey  0.004519   0.005465    0.115129   0.127285
17        New York  0.000000   0.000000         NaN        NaN
18  North Carolina  1.508153   2.156624    5.755959  15.347660
19        Oklahoma  0.774779   0.859383    3.997124   4.303811
20  South Carolina  0.046211   0.015074    1.267222   1.729098
21       Tennessee  4.913140  13.127720    8.502888   7.865612
22           Texas  0.151090   0.178143    1.132249   1.377428
23        Virginia  0.309378   0.349761    1.586430   1.552551
24       Wisconsin  0.000000   0.000000    0.000000   0.000000
  STATE1         p95          p5  scenario
0   U.S.   30.173343   27.671063       1.5
1   U.S.  190.040810  174.196808       3.0
  STATE1     p95_15      p5_15      p95_3        p5_3
0   U.S.  30.173343  27.671063  190.04081  174.196808
/var/folders/vd/0_phd7hx2n51y4412862zww00000gp/T/ipykernel_13658/3233285433.py:8: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  err15.rename(columns={'p95': 'p95_15'}, inplace=True)
/var/folders/vd/0_phd7hx2n51y4412862zww00000gp/T/ipykernel_13658/3233285433.py:9: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  err15.rename(columns={'p5': 'p5_15'}, inplace=True)
/var/folders/vd/0_phd7hx2n51y4412862zww00000gp/T/ipykernel_13658/3233285433.py:11: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  err3.rename(columns={'p95': 'p95_3'}, inplace=True)
/var/folders/vd/0_phd7hx2n51y4412862zww00000gp/T/ipykernel_13658/3233285433.py:12: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  err3.rename(columns={'p5': 'p5_3'}, inplace=True)
/var/folders/vd/0_phd7hx2n51y4412862zww00000gp/T/ipykernel_13658/3233285433.py:19: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  err_country['STATE1'] = 'U.S.'
/var/folders/vd/0_phd7hx2n51y4412862zww00000gp/T/ipykernel_13658/3233285433.py:20: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  err_country['p95']=np.abs(err_country['net_benefit_mana_p95']-err_country['net_benefit_mana_med'])
/var/folders/vd/0_phd7hx2n51y4412862zww00000gp/T/ipykernel_13658/3233285433.py:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  err_country['p5']=np.abs(err_country['net_benefit_mana_p5']-err_country['net_benefit_mana_med'])
/var/folders/vd/0_phd7hx2n51y4412862zww00000gp/T/ipykernel_13658/3233285433.py:26: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  err_country15.rename(columns={'p95': 'p95_15'}, inplace=True)
/var/folders/vd/0_phd7hx2n51y4412862zww00000gp/T/ipykernel_13658/3233285433.py:27: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  err_country15.rename(columns={'p5': 'p5_15'}, inplace=True)
/var/folders/vd/0_phd7hx2n51y4412862zww00000gp/T/ipykernel_13658/3233285433.py:29: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  err_country3.rename(columns={'p95': 'p95_3'}, inplace=True)
/var/folders/vd/0_phd7hx2n51y4412862zww00000gp/T/ipykernel_13658/3233285433.py:30: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  err_country3.rename(columns={'p5': 'p5_3'}, inplace=True)

Using 90% CI¶

In [4]:
country15=data1[data1['scenario']==1.5]
country3=data1[data1['scenario']==3]
print(country3)
sum15 = country15['net_benefits_mana_t'].sum()
sum3 = country3['net_benefits_mana_t'].sum()
print(sum15, sum3)
    scenario          state1  production_benefit_irri_t  irri_cost_irri_t  \
31       3.0         Alabama                  -3.890193         26.755370   
32       3.0        Arkansas                  -3.425136         -6.934679   
33       3.0        Delaware                  -0.374446          3.241651   
34       3.0         Florida                  -1.783933          0.355719   
35       3.0         Georgia                  -1.713197          1.139551   
36       3.0        Illinois                 126.158230         51.200694   
37       3.0         Indiana                  -3.729876         52.169843   
38       3.0            Iowa                 165.144513         36.714968   
39       3.0          Kansas                   0.614182         18.739017   
40       3.0        Kentucky                 -28.642050        768.402027   
41       3.0       Louisiana                -161.684084         41.744520   
42       3.0        Maryland                  -3.430228         39.730081   
43       3.0        Michigan                 154.762181          0.000000   
44       3.0       Minnesota                 502.296025          0.000000   
45       3.0     Mississippi                -260.411644         46.664820   
46       3.0        Missouri                -205.258481        205.650668   
47       3.0        Nebraska                   2.931214          9.809361   
48       3.0      New Jersey                  -1.404904          4.739189   
49       3.0        New York                  23.466339          0.000000   
50       3.0  North Carolina                 -28.822971        151.435918   
51       3.0    North Dakota                 425.222359          0.000000   
52       3.0            Ohio                 144.542240         32.291488   
53       3.0        Oklahoma                 -29.996977          1.665057   
54       3.0    Pennsylvania                  20.274950         13.586442   
55       3.0  South Carolina                  -4.759724          8.973750   
56       3.0    South Dakota                 227.739488          0.000000   
57       3.0       Tennessee                  -7.425782         85.527103   
58       3.0           Texas                 -11.243790          0.549856   
59       3.0        Virginia                  -9.707835         10.189684   
60       3.0   West Virginia                   0.340261          0.000000   
61       3.0       Wisconsin                 104.366425          0.000000   

    net_benefits_irri_t  production_benefit_lnfer_t  fer_cost_fer_t  \
31           -30.645563                   29.964692       44.811163   
32             3.509543                  393.644892      614.851744   
33            -3.616097                    7.493455        0.437986   
34            -2.139652                    0.912998        0.429301   
35            -2.852749                   19.050525       20.493567   
36            74.957536                  428.074906       19.473995   
37           -55.899720                  112.059713        4.442684   
38           128.429545                  237.081738        3.413065   
39           -18.124836                  308.120205       83.128807   
40          -797.044077                   88.806785       26.170622   
41          -203.428603                   98.413779       11.786247   
42           -43.160309                   21.953480        3.546114   
43           154.762181                  154.762181        0.000000   
44           502.296025                  502.296025        0.000000   
45          -307.076465                  182.563900       33.319228   
46          -410.909148                  250.988260       24.549546   
47            -6.878147                  135.495228        4.916174   
48            -6.144092                    1.190824        0.030129   
49            23.466339                   23.466339        0.000000   
50          -180.258890                   91.409852       63.641819   
51           425.222359                  425.222359        0.000000   
52           112.250752                  150.225579        0.334937   
53           -31.662035                   27.123272       10.513043   
54             6.688508                   22.198291        0.046827   
55           -13.733474                   20.911641       10.599326   
56           227.739488                  227.739488        0.000000   
57           -92.952885                  133.522941       53.301743   
58           -11.793647                    8.028937        1.664579   
59           -19.897520                   29.929930       16.876727   
60             0.340261                    0.455498        0.005718   
61           104.366425                  104.366425        0.000000   

    net_benefits_lnfer_t  production_benefit_mana_t  irri_cost_mana_t  \
31            -14.846472                  37.823616         -8.255710   
32           -221.206853                 539.434985        -28.063422   
33              7.055469                   8.401471         -6.361510   
34              0.483697                   1.108695         -0.015543   
35             -1.443042                  24.099131         -1.331946   
36            408.600911                 470.687375         10.135668   
37            107.617029                 119.997060          7.691448   
38            233.668673                 240.941815          1.074366   
39            224.991398                 398.328438         -9.419123   
40             62.636163                 102.133147         -9.025684   
41             86.627532                 121.123264          0.000000   
42             18.407366                  25.128958         -7.160343   
43            154.762181                 154.762181          0.000000   
44            502.296025                 502.296025          0.000000   
45            149.244672                 225.263014         -0.000053   
46            226.438714                 285.779987         -0.000527   
47            130.579053                 143.622842          0.000401   
48              1.160695                   1.213490         -0.000002   
49             23.466339                  23.466339          0.000000   
50             27.768033                 109.540425        -25.170258   
51            425.222359                 425.222359          0.000000   
52            149.890642                 150.465677          3.654147   
53             16.610229                  36.257079          0.000000   
54             22.151465                  22.259490          1.711077   
55             10.312316                  25.375353         -2.330810   
56            227.739488                 227.739488          0.000000   
57             80.221198                 168.777715        -12.909839   
58              6.364357                  10.318007          0.000000   
59             13.053203                  35.089664         -0.881890   
60              0.449780                   0.464248         -0.000469   
61            104.366425                 104.366425          0.000000   

    fer_cost_mana_t  net_benefits_mana_t          STATE1  
31        42.570516             3.508810         Alabama  
32       404.670327           162.828080        Arkansas  
33         0.386712            14.376269        Delaware  
34         0.391770             0.732468         Florida  
35        15.169664            10.261413         Georgia  
36        19.268898           441.282809        Illinois  
37         4.482136           107.823475         Indiana  
38         3.400346           236.467103            Iowa  
39        81.637828           326.109733          Kansas  
40        25.999883            85.158947        Kentucky  
41        11.786247           109.337018       Louisiana  
42         2.989792            29.299508        Maryland  
43         0.000000           154.762181        Michigan  
44         0.000000           502.296025       Minnesota  
45        33.318363           191.944704     Mississippi  
46        24.549525           261.230989        Missouri  
47         4.916163           138.706278        Nebraska  
48         0.030129             1.183363      New Jersey  
49         0.000000            23.466339        New York  
50        49.330479            85.380204  North Carolina  
51         0.000000           425.222359    North Dakota  
52         0.377156           146.434374            Ohio  
53        10.513043            25.744036        Oklahoma  
54         0.048275            20.500137    Pennsylvania  
55         8.818404            18.887759  South Carolina  
56         0.000000           227.739488    South Dakota  
57        49.536538           132.151016       Tennessee  
58         1.664579             8.653428           Texas  
59        15.825354            20.146200        Virginia  
60         0.005718             0.458999   West Virginia  
61         0.000000           104.366425       Wisconsin  
1310.9299425212762 4016.459939060458
In [5]:
print(country15['net_benefits_irri_t'].sum())
print(country3['net_benefits_irri_t'].sum())
print(country15['net_benefits_lnfer_t'].sum())
print(country3['net_benefits_lnfer_t'].sum())
-886.4326407528961
-474.1889441301457
1151.7415306046867
3184.6890463119903
In [6]:
df_sum = pd.DataFrame({
    'sum3': [sum3],
    'sum15': [sum15]
})

df_sum['STATE1'] = 'U.S.'
print(df_sum)
df_sum=df_sum.merge(err_country, left_on='STATE1', right_on='STATE1')
print(df_sum)


# Define columns for plotting
columns_to_plot = ['sum15', 'p5_15', 'p95_15',
                   'sum3', 'p5_3', 'p95_3']

num_attributes = len(columns_to_plot)

# Define the colors you want for the bars
colors = [ 'cadetblue','lightsalmon']

# Set the width of each bar
bar_width = 0.4

# Set the positions of the bars on the x-axis
index = np.arange(len(df_sum['STATE1']))

# Expand the length of the y-axis
plt.figure(figsize=(5, 1))

# Create a bar for each attribute
for i in range(num_attributes // 3):
    plt.barh(index + i * bar_width, df_sum[columns_to_plot[i * 3]],
             bar_width,label=f'{columns_to_plot[i * 3]}', color=colors[i], edgecolor='black',  # Add edge color
             linewidth=0.7, capsize=3, capstyle='round')  # Set capstyle to 'round'
    main_data = df_sum[columns_to_plot[i* 3]]
    error_lower = (df_sum[columns_to_plot[i* 3 + 1]]).values
    error_upper = (df_sum[columns_to_plot[i* 3 + 2]]).values
    xerr = [error_lower, error_upper]  # Correct error shape
    plt.errorbar(main_data, index + (i) * bar_width, xerr=np.array(xerr),
                 fmt='o', color='black', label=columns_to_plot[i],alpha = 0.6,
                 linewidth=2, capthick=2, capsize = 3, markersize=5)

# Set the y-axis labels to be the state names
plt.yticks([0.2], df_sum['STATE1'],fontsize=24, fontfamily='Arial')

# Set the x-ticks
x_ticks = np.arange(0, 4600, 1100)
plt.xticks(x_ticks)

# Add a dashed line at x=0
ax = plt.gca()

# Set tick label font sizes
ax.tick_params(axis='both', labelsize=24)
ax.set_xticklabels(ax.get_xticklabels(), fontfamily='Arial')
ax.set_yticklabels(ax.get_yticklabels(), fontfamily='Arial')


# Save the entire figure as a JPG with DPI 300
plt.savefig('national_soybean_net_benefit.svg', format='svg', dpi=300, bbox_inches='tight', pad_inches=0.02, transparent=True)

# Show the plot
plt.show()
          sum3        sum15 STATE1
0  4016.459939  1310.929943   U.S.
          sum3        sum15 STATE1     p95_15      p5_15      p95_3  \
0  4016.459939  1310.929943   U.S.  30.173343  27.671063  190.04081   

         p5_3  
0  174.196808  
In [7]:
county15=data1[data1['scenario']==1.5]
county3=data1[data1['scenario']==3]

county15 = county15[['STATE1','net_benefits_mana_t']]
county3 = county3[['STATE1','net_benefits_mana_t']]

county15.rename(columns={'net_benefits_mana_t': 'net_benefits_mana_t15'}, inplace=True)
county3.rename(columns={'net_benefits_mana_t': 'net_benefits_mana_t3'}, inplace=True)

county=county15.merge(county3, left_on='STATE1', right_on='STATE1')
county=county.merge(err, left_on='STATE1', right_on='STATE1')
print(county)
            STATE1  net_benefits_mana_t15  net_benefits_mana_t3    p95_15  \
0          Alabama              13.099648              3.508810  0.476458   
1         Arkansas             167.328652            162.828080  7.589952   
2         Delaware               4.192469             14.376269  0.830851   
3          Florida               0.025646              0.732468  0.006036   
4          Georgia               1.949980             10.261413  0.076298   
5         Illinois              61.373858            441.282809  8.167923   
6          Indiana              48.531302            107.823475  0.125445   
7             Iowa              54.947545            236.467103  1.656956   
8           Kansas             103.797273            326.109733  6.792998   
9         Kentucky              16.326974             85.158947  1.130783   
10       Louisiana              24.850722            109.337018  1.212112   
11        Maryland              14.222443             29.299508  0.215958   
12       Minnesota             113.933198            502.296025  0.559552   
13     Mississippi              60.452380            191.944704  2.973462   
14        Missouri              54.985785            261.230989  6.969620   
15        Nebraska              47.547352            138.706278  0.992300   
16      New Jersey               0.364011              1.183363  0.004519   
17        New York               5.679894             23.466339  0.000000   
18  North Carolina              32.255306             85.380204  1.508153   
19        Oklahoma               9.637457             25.744036  0.774779   
20  South Carolina               2.143029             18.887759  0.046211   
21       Tennessee              38.383070            132.151016  4.913140   
22           Texas               2.755883              8.653428  0.151090   
23        Virginia               6.772426             20.146200  0.309378   
24       Wisconsin              27.941865            104.366425  0.000000   

        p5_15       p95_3       p5_3  
0    2.741466    1.832335   2.705667  
1    7.571588  103.073537  75.329180  
2    0.366330    6.703104   0.663207  
3    0.011316    0.053952   0.051764  
4    0.055463    1.126298   1.268117  
5    7.898666   52.495032  51.241892  
6    0.212315   15.553114  14.857753  
7    1.477534   15.552140  11.977874  
8    6.520600   22.765701  21.667251  
9    0.922683    8.087180   7.712721  
10   1.362142    9.368818  10.330603  
11   0.221386    2.480012   2.722623  
12   0.000000         NaN        NaN  
13   3.396839   16.480167  17.704201  
14   7.767518   22.809020  21.829383  
15   1.127027   17.116757  18.550980  
16   0.005465    0.115129   0.127285  
17   0.000000         NaN        NaN  
18   2.156624    5.755959  15.347660  
19   0.859383    3.997124   4.303811  
20   0.015074    1.267222   1.729098  
21  13.127720    8.502888   7.865612  
22   0.178143    1.132249   1.377428  
23   0.349761    1.586430   1.552551  
24   0.000000    0.000000   0.000000  
In [8]:
state_sum_10=county.nlargest(10, 'net_benefits_mana_t15')
state_sum_10 = state_sum_10.sort_values(by='net_benefits_mana_t3', ascending=False)
output_csv_file = "soybean_figure5.csv"
state_sum_10.to_csv(output_csv_file, index=False)

# Define the columns you want to plot
columns_to_plot = ['net_benefits_mana_t15', 'p5_15', 'p95_15','net_benefits_mana_t3', 'p5_3', 'p95_3']

# Number of attributes
num_attributes = len(columns_to_plot)

# Define the colors you want for the bars
colors = ['cadetblue','lightsalmon']

# Set the width of each bar
bar_width = 0.4

# Set the positions of the bars on the x-axis
index = np.arange(len(state_sum_10['STATE1']))

# Expand the length of the y-axis
plt.figure(figsize=(5, 12))

# Create a bar for each attribute
for i in range(num_attributes // 3):
    plt.barh(index + i * bar_width, state_sum_10[columns_to_plot[i * 3]],
             bar_width,label=f'{columns_to_plot[i * 3]}', color=colors[i], edgecolor='black',  # Add edge color
             linewidth=0.7)  # Set capstyle to 'round'
    main_data = state_sum_10[columns_to_plot[i* 3]]
    error_lower = (state_sum_10[columns_to_plot[i* 3 + 1]]).values
    error_upper = (state_sum_10[columns_to_plot[i* 3 + 2]]).values
    xerr = [error_lower, error_upper]  # Correct error shape
    plt.errorbar(main_data, index + (i) * bar_width, xerr=np.array(xerr),
                 fmt='o', color='black', label=columns_to_plot[i],alpha = 0.6,
                 linewidth=2, capthick=2, capsize = 3, markersize=5)

# Set the y-axis labels to be the state names
plt.yticks(index + [0.2], state_sum_10['STATE1'])

# Set the x-axis label
plt.xlabel('Cost-competitiveness\n(Million $/yr)', fontsize=24, fontfamily='Arial')

# Set the x-ticks
x_ticks = np.arange(0, 900, 200)
plt.xticks(x_ticks)

# Add a dashed line at x=0
ax = plt.gca()
ax.axvline(0, color='black', linestyle='--', linewidth=1)

plt.text(0.8, 0.82, '(f) Soybean', transform=plt.gcf().transFigure,
         fontsize=24, fontweight='bold', fontfamily='Arial', ha='right', va='bottom')

# Set tick label font sizes
ax.tick_params(axis='both', labelsize=24)
ax.set_xticklabels(ax.get_xticklabels(), fontfamily='Arial')
ax.set_yticklabels(ax.get_yticklabels(), fontfamily='Arial')

# Save the entire figure as a JPG with DPI 300
plt.savefig('state_soybean_net_benefit_10.svg', format='svg', dpi=300, bbox_inches='tight', 
            pad_inches=0.02, transparent=True)

# Show the plot
plt.show()
In [9]:
print(state_sum_10)
         STATE1  net_benefits_mana_t15  net_benefits_mana_t3    p95_15  \
12    Minnesota             113.933198            502.296025  0.559552   
5      Illinois              61.373858            441.282809  8.167923   
8        Kansas             103.797273            326.109733  6.792998   
14     Missouri              54.985785            261.230989  6.969620   
7          Iowa              54.947545            236.467103  1.656956   
13  Mississippi              60.452380            191.944704  2.973462   
1      Arkansas             167.328652            162.828080  7.589952   
15     Nebraska              47.547352            138.706278  0.992300   
21    Tennessee              38.383070            132.151016  4.913140   
6       Indiana              48.531302            107.823475  0.125445   

        p5_15       p95_3       p5_3  
12   0.000000         NaN        NaN  
5    7.898666   52.495032  51.241892  
8    6.520600   22.765701  21.667251  
14   7.767518   22.809020  21.829383  
7    1.477534   15.552140  11.977874  
13   3.396839   16.480167  17.704201  
1    7.571588  103.073537  75.329180  
15   1.127027   17.116757  18.550980  
21  13.127720    8.502888   7.865612  
6    0.212315   15.553114  14.857753  
In [ ]: