In [43]:
%matplotlib inline
#Import Modules
import geopandas as gpd
import pandas as pd
pd.options.display.float_format = '{:.2f}'.format
import numpy as np
import matplotlib.pyplot as plt
import math
import calendar
from datetime import datetime, timedelta
In [44]:
#Rain fall
df = pd.read_csv('Data/Jaipur_Rainfall_Data.csv')

#get Hour columns for use in analysis
hour_cols = list(pd.to_numeric(df.columns, errors = 'coerce').dropna().astype(int))
hour_cols = list(map(str, hour_cols))

#convert month string to month number
map_month = dict((v.upper(),k) for k,v in enumerate(calendar.month_abbr)) #mapping for months
df['MONTH'] = df['MONTH'].map(map_month)

#Convert Year Month Date to DATETIME
df['DATETIME'] = pd.to_datetime((df.YEAR*10000+df.MONTH*100+df.DAY).apply(str),format='%Y%m%d')

#convert hour column to unpivot table
df = pd.melt(df, id_vars=['DATETIME'], value_vars=hour_cols)

#Add Hour to time
df['DATETIME'] =  df['DATETIME'] + pd.TimedeltaIndex((df.variable.astype(float) - 1), 'H')
df = df.drop(columns=['variable'])
df.columns = ['DATETIME', 'RAINFALL']
df['RAINFALL'] =  pd.to_numeric(df['RAINFALL'], errors='coerce')

#Recover recoverable data by month mean
df = df.fillna(df.groupby(df['DATETIME'].dt.month).transform('mean'))

#Remove Bad Missing data year
#df = df[df['DATETIME'].dt.year == 2011].reset_index(drop=True) #2011 has missing data for monsoon season
df.index = df['DATETIME']
In [45]:
#driver
driver="FileGDB"

#Declare Data Locations
GIS_Data = "../GIS/GIS Data/"
Main_GDB = GIS_Data + "Thesis-GIS-Data.gdb"
Watershed_GDB = GIS_Data + "Watershed.gdb"
Scratch_GDB = GIS_Data + "Scratch.gdb"

#Extra
Landuse_Landcover_shp = GIS_Data + "Exported/Landuse_Landcover.shp"
In [46]:
#Read Layers
Lulc_df = gpd.read_file(Main_GDB, layer='Landuse_Landcover_Join_Soil_Geom_Zone')
#Soil_df = gpd.read_file(Main_GDB, layer='Soil_50K')
#Geom_df = gpd.read_file(Main_GDB, layer='Geomorphology_50K')

#Stream_Lines_w_Order = gpd.read_file(Watershed_GDB, layer='Stream_Lines_w_Order')
In [47]:
#reference for Soil
'''
Type of Soil in Jaipur 
#Soil_df['FAMILY_TEX'].unique()
array(['Loamy skeletal', 'Fine loamy', 'Coarse loamy', 'Fine',
       'Sandy skeletal'], dtype=object)
so given below classes 1 to 4 top to bottom high infiltration

class 1 : 'Sandy skeletal'
class 2 : 'Coarse loamy','Loamy skeletal'
class 3 : 'Fine loamy'
class 4 : 'Fine'
'''
soil_map = { 'Sandy skeletal':1, 'Loamy skeletal':2, 'Coarse loamy':2, 'Fine loamy':3, 'Fine':4 }

#map the Soil Data to number
Lulc_df['soil_map'] = Lulc_df['FAMILY_TEX'].map(soil_map)
In [48]:
#test data
#Lulc_df[~Lulc_df['Level_1'].isin(['Agriculture', 'Forest', 'Industry', 'Open Space', 'Waterbodies', 'Wetland', 'Miscellaneous', 'Waste Land'])].sort_values(by=['Level_1', 'Level_2']).groupby(['Level_1', 'Level_2']).mean()
In [49]:
#Function to Determine Curve Number
def Curve_Number(row):
    Curve_Number = 80
    if ( row['Level_1'] == 'Agriculture' ):
        if ( row['Level_2'] in ['Crop Land', 'Horticulture', 'Plant Nursery'] ):
            if row['soil_map'] == 1: Curve_Number = 65
            elif row['soil_map'] == 2: Curve_Number = 75        
            elif row['soil_map'] == 3: Curve_Number = 80       
            elif row['soil_map'] == 4: Curve_Number = 85
        elif ( row['Level_2'] in ['Orchard', 'Plantation'] ):
            if row['soil_map'] == 1: Curve_Number = 45
            elif row['soil_map'] == 2: Curve_Number = 55        
            elif row['soil_map'] == 3: Curve_Number = 65       
            elif row['soil_map'] == 4: Curve_Number = 75
        else :
            if row['soil_map'] == 1: Curve_Number = 76
            elif row['soil_map'] == 2: Curve_Number = 85        
            elif row['soil_map'] == 3: Curve_Number = 90        
            elif row['soil_map'] == 4: Curve_Number = 93
    elif ( row['Level_1'] == 'Built-up' ):
        if ( row['Level_2'] in ['Vacant Land', 'Recreational', 'Slum'] ):
            if row['soil_map'] == 1: Curve_Number = 49
            elif row['soil_map'] == 2: Curve_Number = 69        
            elif row['soil_map'] == 3: Curve_Number = 79       
            elif row['soil_map'] == 4: Curve_Number = 84
        elif ( row['Level_2'] in ['Transportation Node', 'Utilities', 'Transport'] ):
            if row['soil_map'] == 1: Curve_Number = 92
            elif row['soil_map'] == 2: Curve_Number = 94        
            elif row['soil_map'] == 3: Curve_Number = 96        
            elif row['soil_map'] == 4: Curve_Number = 98
        else :
            if row['soil_map'] == 1: Curve_Number = 72
            elif row['soil_map'] == 2: Curve_Number = 79        
            elif row['soil_map'] == 3: Curve_Number = 84        
            elif row['soil_map'] == 4: Curve_Number = 88
    elif ( row['Level_1'] == 'Forest' ):
        if ( row['Level_2'] in ['Dense Forest'] ):
            if row['soil_map'] == 1: Curve_Number = 36
            elif row['soil_map'] == 2: Curve_Number = 60        
            elif row['soil_map'] == 3: Curve_Number = 73        
            elif row['soil_map'] == 4: Curve_Number = 79
        else :
            if row['soil_map'] == 1: Curve_Number = 43
            elif row['soil_map'] == 2: Curve_Number = 65        
            elif row['soil_map'] == 3: Curve_Number = 72        
            elif row['soil_map'] == 4: Curve_Number = 82
    elif ( row['Level_1'] == 'Industry' ):
        if row['soil_map'] == 1: Curve_Number = 81
        elif row['soil_map'] == 2: Curve_Number = 88        
        elif row['soil_map'] == 3: Curve_Number = 91        
        elif row['soil_map'] == 4: Curve_Number = 93
    elif ( row['Level_1'] == 'Open Space' ):
        if ( row['Level_2'] in ['Grazing Land'] ):
            if row['soil_map'] == 1: Curve_Number = 49
            elif row['soil_map'] == 2: Curve_Number = 69        
            elif row['soil_map'] == 3: Curve_Number = 79       
            elif row['soil_map'] == 4: Curve_Number = 84
        elif ( row['Level_2'] in ['Tree Clad / Tree Cover'] ):
            if row['soil_map'] == 1: Curve_Number = 30
            elif row['soil_map'] == 2: Curve_Number = 58        
            elif row['soil_map'] == 3: Curve_Number = 71        
            elif row['soil_map'] == 4: Curve_Number = 78
        else :
            if row['soil_map'] == 1: Curve_Number = 43
            elif row['soil_map'] == 2: Curve_Number = 65        
            elif row['soil_map'] == 3: Curve_Number = 72        
            elif row['soil_map'] == 4: Curve_Number = 82
    elif ( row['Level_1'] == 'Waste Land' ):
        if ( row['Level_2'] in ['Barren'] ):
            if row['soil_map'] == 1: Curve_Number = 43
            elif row['soil_map'] == 2: Curve_Number = 65        
            elif row['soil_map'] == 3: Curve_Number = 72      
            elif row['soil_map'] == 4: Curve_Number = 82
        elif ( row['Level_2'] in ['Scrub Land'] ):
            if row['soil_map'] == 1: Curve_Number = 49
            elif row['soil_map'] == 2: Curve_Number = 69        
            elif row['soil_map'] == 3: Curve_Number = 79        
            elif row['soil_map'] == 4: Curve_Number = 84
        elif ( row['Level_2'] in ['Rocky Area / Mountain'] ):
            if row['soil_map'] == 1: Curve_Number = 75
            elif row['soil_map'] == 2: Curve_Number = 82        
            elif row['soil_map'] == 3: Curve_Number = 86        
            elif row['soil_map'] == 4: Curve_Number = 88
        else :
            if row['soil_map'] == 1: Curve_Number = 43
            elif row['soil_map'] == 2: Curve_Number = 65        
            elif row['soil_map'] == 3: Curve_Number = 72        
            elif row['soil_map'] == 4: Curve_Number = 82
    elif ( row['Level_1'] in ['Waterbodies', 'Wetland'] ):
        Curve_Number = 98
    else :
        if row['soil_map'] == 1: Curve_Number = 65
        elif row['soil_map'] == 2: Curve_Number = 75        
        elif row['soil_map'] == 3: Curve_Number = 82       
        elif row['soil_map'] == 4: Curve_Number = 86
    return Curve_Number
In [50]:
#Apply Curve Map
#Lulc_df = Lulc_df.head(1) #for testing
Lulc_df['Curve_Number'] = Lulc_df.apply(lambda row: Curve_Number(row), axis=1)
Lulc_df['PMR'] = (1000 / Lulc_df['Curve_Number']) - 10 #Potential Maximum Retention
#LULC Ready Now
In [51]:
#Lulc_df.to_file("export/Lulc_df.shp")
In [52]:
''' #Old Basic Script
def Runoff_Liters(CN, SA, P):
    #CN = Curve Number # Curve Number 
    #SA = Shape Area # Area
    #P = RAINFALL # Precipitation 
    PMR = (1000 / CN) - 10 #Potential Maximum Retention
    PE = math.pow((P - (.2*PMR)), 2) / (P + (.8*PMR)) #Precipitation Excess
    return PE*SA # Milimeter * Meter = Litres

def Get_Runoff_Liters_old(RAINFALL):
    if (RAINFALL > 0):
        return Lulc_df.apply(lambda row: Runoff_Liters(row['Curve_Number'], row['Shape_Area'], RAINFALL), axis=1).sum()
    else :
        return 0
        

df['Runoff_Liters'] = df['RAINFALL'].apply(lambda x: Get_Runoff_Liters_old(x))
'''
Out[52]:
" #Old Basic Script\ndef Runoff_Liters(CN, SA, P):\n    #CN = Curve Number # Curve Number \n    #SA = Shape Area # Area\n    #P = RAINFALL # Precipitation \n    PMR = (1000 / CN) - 10 #Potential Maximum Retention\n    PE = math.pow((P - (.2*PMR)), 2) / (P + (.8*PMR)) #Precipitation Excess\n    return PE*SA # Milimeter * Meter = Litres\n\ndef Get_Runoff_Liters_old(RAINFALL):\n    if (RAINFALL > 0):\n        return Lulc_df.apply(lambda row: Runoff_Liters(row['Curve_Number'], row['Shape_Area'], RAINFALL), axis=1).sum()\n    else :\n        return 0\n        \n\ndf['Runoff_Liters'] = df['RAINFALL'].apply(lambda x: Get_Runoff_Liters_old(x))\n"
In [53]:
def Get_Runoff_Liters(P): # Fast Vectorised
    #P = RAINFALL # Precipitation
    if (P > 0):
        #print(P)
        Lulc_df['PE'] = (P - (.2*Lulc_df['PMR'])) #Precipitation Excess
        Lulc_df.loc[ Lulc_df['PE'] < 0 , 'PE' ] = 0
        Lulc_df[ 'PE' ] = (Lulc_df['PE'] ** 2) / (P + (.8*Lulc_df['PMR']))
        Lulc_df[ 'RL' ] = Lulc_df['PE']*Lulc_df['Shape_Area'] #Runoff Litres
        #return Lulc_df[ 'RL' ].sum()        
        return Lulc_df.groupby(['Zone_ID'])['RL'].sum()
        #return pd.DataFrame(Lulc_df.groupby(['Zone_ID'])['RL'].sum()).T
    else :
        return 0
In [54]:
#Get List of Zones
Zones = np.sort(Lulc_df['Zone_ID'].unique(), axis=None)
Zones = ['RL_Zone_' + str(s) for s in Zones]
for Zone in Zones:
    df[Zone] = 0

#Call Function to load data for each zone RL
R_df = df[ df['RAINFALL'] > 0 ]
df.loc[ df['RAINFALL'] > 0, Zones ] = R_df['RAINFALL'].apply(Get_Runoff_Liters).values
#df['RUNOFF_LITRES'] = pd.DataFrame(df[Zones].sum(axis=1))
In [55]:
df.to_csv('Runoff_Analyzed.csv', encoding='utf-8', index=True)
In [14]:
df.resample('Y').sum().mean().reset_index().to_csv('Runoff_ZOnes_Analyzed.csv', encoding='utf-8', index=True)
In [15]:
df[df['RAINFALL'] > 0].sum()
Out[15]:
RAINFALL             3701.33
RL_Zone_1    149341192585.59
RL_Zone_2    112374859263.13
RL_Zone_3    193393756724.91
RL_Zone_4    210107753520.63
RL_Zone_5    192100867363.78
RL_Zone_6    316123222465.45
RL_Zone_7    216669164738.48
RL_Zone_8    151892585294.02
RL_Zone_9    181935432611.22
RL_Zone_10   106095158747.78
RL_Zone_11    73398660073.11
dtype: float64
In [32]:
df1 = df.resample('d').sum().groupby([df['DATETIME'].dt.dayofyear]).mean()
df1[df1['RUNOFF_LITRES'] > 0]
Out[32]:
RAINFALL RL_Zone_1 RL_Zone_2 RL_Zone_3 RL_Zone_4 RL_Zone_5 RL_Zone_6 RL_Zone_7 RL_Zone_8 RL_Zone_9 RL_Zone_10 RL_Zone_11 RUNOFF_LITRES
DATETIME
1 0.06 5849.39 3644.17 14043.28 6545.10 29617.31 2992.29 114.95 1066.18 1391.55 3422.83 1328.14 70015.18
2 0.01 1462.35 911.04 3510.82 1636.28 7404.33 748.07 28.74 266.55 347.89 855.71 332.04 17503.80
3 0.29 1586076.13 1212370.65 2340424.28 1673634.50 1604721.58 2721251.17 1705580.24 1324151.72 1045727.85 597366.96 457617.71 16268922.78
12 0.50 8796195.69 6681333.25 11445849.74 9554612.29 8848666.14 16421532.29 11127685.44 7830556.17 8483313.25 4922234.06 3389192.03 97501170.35
16 0.03 16014.54 12629.76 33933.14 19913.85 42822.49 33745.75 12238.72 12125.09 7446.22 6614.20 4728.25 202212.00
29 0.64 23063660.40 17486812.08 29464992.39 28456291.57 26205339.13 46359944.43 31892673.73 22142785.81 26096739.39 15207485.17 10394061.96 276770786.06
34 0.09 339421.34 258788.11 592572.78 403370.55 389672.60 615363.83 363413.72 314758.89 201149.57 110990.90 98881.21 3688383.51
38 0.10 233553.57 184592.12 434884.89 288350.00 315831.35 439678.58 249585.01 222800.75 135653.92 78432.82 70622.75 2653985.77
39 0.34 4248628.19 3226432.62 5665720.05 4361571.71 4030142.19 7602289.49 5077373.42 3639660.53 3655223.32 2106072.17 1470367.74 45083481.42
40 0.30 4559940.66 3472686.45 5972665.15 4692609.12 4339684.05 8246596.99 5555910.30 3932788.51 4090917.66 2364526.66 1632368.72 48860694.28
41 2.01 53498871.60 40619237.77 68817281.02 62864328.19 57994476.20 104671541.62 71669856.48 49975964.48 57255457.97 33308513.25 22807692.50 623483221.09
42 0.41 9370267.86 7123059.81 11991860.37 10378259.85 9603563.85 17834890.72 12199852.08 8485966.42 9570928.59 5564238.98 3792129.77 105915018.31
44 0.19 2058042.44 1553410.14 2744767.97 2054772.98 1866728.11 3514512.07 2314864.11 1679488.90 1568770.37 897591.85 634292.30 20887241.22
45 0.29 3938311.24 2991081.93 5133991.90 3994756.30 3711305.91 7052921.03 4738379.67 3348618.74 3468270.41 2006598.25 1380278.95 41764514.33
46 3.01 115140295.87 87071689.52 148061261.83 149753771.50 137523634.30 236339842.12 162327354.21 113188009.72 134196469.29 78219900.53 53750382.85 1415572611.74
51 0.16 372912.77 284958.67 663949.87 444834.52 482721.92 683603.41 387919.90 339275.62 216389.89 125075.00 108669.74 4110311.31
53 0.47 10548788.95 8014442.34 13643582.49 11780814.62 10866815.74 20073701.54 13683415.17 9581612.67 10652229.82 6184449.08 4244589.16 119274441.59
55 0.06 125301.16 103848.98 240989.10 158728.14 176960.85 241646.45 137282.52 124265.98 71842.44 41585.59 39123.04 1461574.25
59 1.27 48797074.66 36942034.61 62512598.73 61981340.70 56971195.71 99219936.45 68210070.75 47452546.86 56149687.41 32724645.75 22426693.82 593387825.44
69 0.24 682261.53 534599.46 1234513.64 830534.84 839642.32 1262943.10 738042.52 649700.52 401199.72 224395.11 203898.76 7601731.52
70 1.22 51724107.81 39063909.46 66587850.72 69377961.46 63639557.17 107769599.47 74067752.66 51675779.83 61819271.31 36051811.98 24812259.19 646589861.07
71 0.88 19464614.02 14804030.96 25135785.28 21852697.03 20188107.74 37211099.05 25399607.42 17756695.51 19880238.80 11547108.78 7909850.60 221149835.18
72 1.19 43016625.17 32537499.33 55350135.73 55634766.83 51084580.06 88000696.88 60416770.08 42146337.91 49813791.89 29027581.04 19949467.92 526978252.84
78 0.16 1319459.27 992042.93 1824512.95 1336264.38 1207977.38 2204212.52 1418776.47 1063494.67 894596.75 507581.58 374643.38 13143562.28
79 0.29 4986963.95 3789616.77 6429699.56 5152147.20 4741666.04 9077981.47 6159855.16 4318366.55 4617858.58 2672549.42 1829266.32 53775971.00
80 0.11 339421.34 258788.11 592572.78 403370.55 389672.60 615363.83 363413.72 314758.89 201149.57 110990.90 98881.21 3688383.51
91 0.06 16014.54 12629.76 33933.14 19913.85 42822.49 33745.75 12238.72 12125.09 7446.22 6614.20 4728.25 202212.00
93 0.63 12312612.48 9360890.68 15822404.85 12995990.86 11988173.33 22766312.31 15496310.09 10826121.92 11815678.91 6850153.75 4678246.67 134912895.86
94 0.53 11950609.78 9077892.23 15425510.59 13550192.31 12498385.91 22941739.59 15664226.10 10951295.86 12299245.72 7145550.03 4899905.97 136404554.09
95 0.29 4985501.60 3788705.73 6426188.74 5150510.92 4734261.71 9077233.40 6159826.42 4318100.00 4617510.69 2671693.71 1828934.29 53758467.21
... ... ... ... ... ... ... ... ... ... ... ... ... ...
263 1.34 21060837.36 15991257.83 27239995.94 22999626.63 21323146.95 39449516.59 26830918.80 18804382.38 20642041.66 11986505.89 8214731.34 234542961.37
264 5.44 236505139.73 178276630.08 305092612.92 326353754.67 298804894.74 498154092.07 342180914.88 239154392.11 287218018.54 167523248.49 115555732.69 2994819430.91
265 0.35 37297.28 23208.46 89436.71 41683.46 188622.24 21733.29 732.08 6790.13 8862.28 21798.84 8458.47 448623.23
266 0.35 37297.28 23208.46 89436.71 41683.46 188622.24 21733.29 732.08 6790.13 8862.28 21798.84 8458.47 448623.23
267 0.35 37297.28 23208.46 89436.71 41683.46 188622.24 21733.29 732.08 6790.13 8862.28 21798.84 8458.47 448623.23
268 0.35 37297.28 23208.46 89436.71 41683.46 188622.24 21733.29 732.08 6790.13 8862.28 21798.84 8458.47 448623.23
269 0.35 37297.28 23208.46 89436.71 41683.46 188622.24 21733.29 732.08 6790.13 8862.28 21798.84 8458.47 448623.23
270 0.35 37297.28 23208.46 89436.71 41683.46 188622.24 21733.29 732.08 6790.13 8862.28 21798.84 8458.47 448623.23
271 0.35 37297.28 23208.46 89436.71 41683.46 188622.24 21733.29 732.08 6790.13 8862.28 21798.84 8458.47 448623.23
272 0.35 37297.28 23208.46 89436.71 41683.46 188622.24 21733.29 732.08 6790.13 8862.28 21798.84 8458.47 448623.23
273 0.35 37297.28 23208.46 89436.71 41683.46 188622.24 21733.29 732.08 6790.13 8862.28 21798.84 8458.47 448623.23
277 0.07 73409.09 61697.24 149871.39 94379.85 143648.38 151840.02 72830.15 68444.69 39363.37 26676.70 23219.36 905380.25
278 0.51 17432535.78 13231687.52 22248829.01 20813008.91 19175907.66 34501337.98 23716964.85 16459176.63 19199111.61 11179879.00 7629934.53 205588373.47
282 0.17 678842.69 517576.22 1185145.56 806741.10 779345.21 1230727.66 726827.43 629517.78 402299.14 221981.80 197762.42 7376767.02
284 0.29 5001516.15 3801335.48 6460121.87 5170424.77 4777084.20 9110979.15 6172065.14 4330225.10 4624956.91 2678307.91 1833662.53 53960679.21
289 0.37 5501402.89 4176994.80 7255168.37 5726947.27 5277372.96 9962108.47 6695577.81 4763287.40 4911266.11 2836611.55 1970767.11 59077504.76
290 1.14 23199665.71 17601740.01 30219974.84 26469507.34 24371519.33 44248285.66 30043306.96 21155502.79 23294538.51 13513522.72 9324483.32 263442047.18
293 0.50 5851643.94 4417077.17 7832057.48 5857420.12 5310204.69 10000481.82 6578551.14 4785327.34 4440476.51 2538535.93 1801575.90 59413352.05
297 0.04 57394.55 49067.48 115938.26 74466.00 100825.88 118094.27 60591.43 56319.60 31917.16 20062.51 18491.12 703168.25
313 0.53 3258176.87 2447105.16 4836739.34 3445704.90 3192108.47 5456260.35 3395251.48 2680021.00 1964708.24 1114177.94 889828.21 32680081.95
316 0.76 3848120.00 2925316.40 5915592.88 4174250.63 3979654.59 6632778.31 4091829.61 3273347.14 2412048.08 1366140.90 1093746.02 39712824.56
317 0.54 3032001.75 2297266.14 4476834.81 3197349.00 3040635.11 5154198.21 3211591.25 2507670.06 1929550.49 1100257.22 854387.72 30801741.75
319 0.17 1065837.55 806169.42 1557532.58 1115802.41 1045072.22 1795176.33 1123641.81 874223.69 669917.79 381018.58 296201.04 10730593.43
320 0.03 16014.54 12629.76 33933.14 19913.85 42822.49 33745.75 12238.72 12125.09 7446.22 6614.20 4728.25 202212.00
321 2.14 65681108.37 49798039.80 84572142.14 80824965.21 74442332.81 131378819.08 90073168.36 62832981.02 73092854.85 42561699.20 29205843.00 784463953.84
326 0.11 90885.98 75238.03 187315.35 115929.98 193875.20 186333.85 85097.61 80836.33 47157.47 34146.61 28279.64 1125096.05
327 0.94 7120019.49 5390383.10 10070845.18 7348612.39 6826915.82 12187009.56 7813137.50 5895260.43 5009328.59 2859331.31 2118249.16 72639092.54
328 6.46 309798928.58 233226822.64 399915755.43 433470679.20 395990074.57 655433318.26 449993450.32 314844952.19 378402547.75 220661226.12 152418630.61 3944156385.68
329 0.13 249568.11 197221.88 468818.03 308263.85 358653.85 473424.33 261823.73 234925.84 143100.14 85047.02 75351.00 2856197.78
337 0.07 217539.03 171962.37 400951.76 268436.15 273008.86 405932.82 237346.29 210675.65 128207.71 71818.62 65894.51 2451773.77

200 rows × 13 columns

In [88]:
df.resample('M').sum().plot(kind='line'), legend=False) #overall Runoff Liters
Out[88]:
<matplotlib.axes._subplots.AxesSubplot at 0x2f038436c50>
In [96]:
df.groupby([df['DATETIME'].dt.day, df['DATETIME'].dt.year]).sum().groupby('DATETIME').mean().plot(kind='line')#, legend=False)
Out[96]:
<matplotlib.axes._subplots.AxesSubplot at 0x2f0385f4d68>
In [14]:
df[(df['DATETIME'].dt.year == 2011) & (df['DATETIME'].dt.month == 8)][ df['RAINFALL'] > 0 ].resample('d').sum()
C:\ProgramData\Anaconda3\lib\site-packages\ipykernel_launcher.py:1: UserWarning: Boolean Series key will be reindexed to match DataFrame index.
  """Entry point for launching an IPython kernel.
Out[14]:
RAINFALL RL_Zone_1 RL_Zone_2 RL_Zone_3 RL_Zone_4 RL_Zone_5 RL_Zone_6 RL_Zone_7 RL_Zone_8 RL_Zone_9 RL_Zone_10 RL_Zone_11 RUNOFF_LITRES
DATETIME
2011-08-01 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-02 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-03 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-04 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-05 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-06 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-07 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-08 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-09 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-10 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-11 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-12 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-13 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-14 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-15 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-16 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-17 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-18 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-19 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-20 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-21 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-22 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-23 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-24 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-25 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-26 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-27 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-28 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-29 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-30 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
2011-08-31 6.96 8756248.13 7481768.47 17770347.22 11364551.41 15834059.20 18118236.97 9141878.96 8524661.95 4836938.15 3089716.19 2819866.24 107738272.88
In [15]:
df[df['RAINFALL'] > 0]
Out[15]:
DATETIME RAINFALL RL_Zone_1 RL_Zone_2 RL_Zone_3 RL_Zone_4 RL_Zone_5 RL_Zone_6 RL_Zone_7 RL_Zone_8 RL_Zone_9 RL_Zone_10 RL_Zone_11 RUNOFF_LITRES
DATETIME
2006-03-01 00:00:00 2006-03-01 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-02 00:00:00 2006-03-02 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-03 00:00:00 2006-03-03 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-04 00:00:00 2006-03-04 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-05 00:00:00 2006-03-05 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-06 00:00:00 2006-03-06 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-07 00:00:00 2006-03-07 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-08 00:00:00 2006-03-08 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-09 00:00:00 2006-03-09 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-10 00:00:00 2006-03-10 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-11 00:00:00 2006-03-11 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-12 00:00:00 2006-03-12 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-13 00:00:00 2006-03-13 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-14 00:00:00 2006-03-14 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-15 00:00:00 2006-03-15 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-16 00:00:00 2006-03-16 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-17 00:00:00 2006-03-17 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-18 00:00:00 2006-03-18 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-19 00:00:00 2006-03-19 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-20 00:00:00 2006-03-20 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-21 00:00:00 2006-03-21 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-22 00:00:00 2006-03-22 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-23 00:00:00 2006-03-23 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-24 00:00:00 2006-03-24 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-25 00:00:00 2006-03-25 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-26 00:00:00 2006-03-26 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-27 00:00:00 2006-03-27 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-28 00:00:00 2006-03-28 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-29 00:00:00 2006-03-29 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2006-03-30 00:00:00 2006-03-30 00:00:00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2011-09-08 23:00:00 2011-09-08 23:00:00 0.10 10878.37 6769.13 26085.71 12157.68 55014.82 6338.88 213.52 1980.46 2584.83 6357.99 2467.05 130848.44
2011-09-09 23:00:00 2011-09-09 23:00:00 0.10 10878.37 6769.13 26085.71 12157.68 55014.82 6338.88 213.52 1980.46 2584.83 6357.99 2467.05 130848.44
2011-09-10 23:00:00 2011-09-10 23:00:00 0.10 10878.37 6769.13 26085.71 12157.68 55014.82 6338.88 213.52 1980.46 2584.83 6357.99 2467.05 130848.44
2011-09-11 23:00:00 2011-09-11 23:00:00 0.10 10878.37 6769.13 26085.71 12157.68 55014.82 6338.88 213.52 1980.46 2584.83 6357.99 2467.05 130848.44
2011-09-12 23:00:00 2011-09-12 23:00:00 0.10 10878.37 6769.13 26085.71 12157.68 55014.82 6338.88 213.52 1980.46 2584.83 6357.99 2467.05 130848.44
2011-09-13 23:00:00 2011-09-13 23:00:00 0.10 10878.37 6769.13 26085.71 12157.68 55014.82 6338.88 213.52 1980.46 2584.83 6357.99 2467.05 130848.44
2011-09-14 23:00:00 2011-09-14 23:00:00 0.10 10878.37 6769.13 26085.71 12157.68 55014.82 6338.88 213.52 1980.46 2584.83 6357.99 2467.05 130848.44
2011-09-15 23:00:00 2011-09-15 23:00:00 0.10 10878.37 6769.13 26085.71 12157.68 55014.82 6338.88 213.52 1980.46 2584.83 6357.99 2467.05 130848.44
2011-09-16 23:00:00 2011-09-16 23:00:00 0.10 10878.37 6769.13 26085.71 12157.68 55014.82 6338.88 213.52 1980.46 2584.83 6357.99 2467.05 130848.44
2011-09-17 23:00:00 2011-09-17 23:00:00 0.10 10878.37 6769.13 26085.71 12157.68 55014.82 6338.88 213.52 1980.46 2584.83 6357.99 2467.05 130848.44
2011-09-18 23:00:00 2011-09-18 23:00:00 0.10 10878.37 6769.13 26085.71 12157.68 55014.82 6338.88 213.52 1980.46 2584.83 6357.99 2467.05 130848.44
2011-09-19 23:00:00 2011-09-19 23:00:00 0.10 10878.37 6769.13 26085.71 12157.68 55014.82 6338.88 213.52 1980.46 2584.83 6357.99 2467.05 130848.44
2011-09-20 23:00:00 2011-09-20 23:00:00 0.10 10878.37 6769.13 26085.71 12157.68 55014.82 6338.88 213.52 1980.46 2584.83 6357.99 2467.05 130848.44
2011-09-21 23:00:00 2011-09-21 23:00:00 0.10 10878.37 6769.13 26085.71 12157.68 55014.82 6338.88 213.52 1980.46 2584.83 6357.99 2467.05 130848.44
2011-09-22 23:00:00 2011-09-22 23:00:00 0.10 10878.37 6769.13 26085.71 12157.68 55014.82 6338.88 213.52 1980.46 2584.83 6357.99 2467.05 130848.44
2011-09-23 23:00:00 2011-09-23 23:00:00 0.10 10878.37 6769.13 26085.71 12157.68 55014.82 6338.88 213.52 1980.46 2584.83 6357.99 2467.05 130848.44
2011-09-24 23:00:00 2011-09-24 23:00:00 0.10 10878.37 6769.13 26085.71 12157.68 55014.82 6338.88 213.52 1980.46 2584.83 6357.99 2467.05 130848.44
2011-09-25 23:00:00 2011-09-25 23:00:00 0.10 10878.37 6769.13 26085.71 12157.68 55014.82 6338.88 213.52 1980.46 2584.83 6357.99 2467.05 130848.44
2011-09-26 23:00:00 2011-09-26 23:00:00 0.10 10878.37 6769.13 26085.71 12157.68 55014.82 6338.88 213.52 1980.46 2584.83 6357.99 2467.05 130848.44
2011-09-27 23:00:00 2011-09-27 23:00:00 0.10 10878.37 6769.13 26085.71 12157.68 55014.82 6338.88 213.52 1980.46 2584.83 6357.99 2467.05 130848.44
2011-09-28 23:00:00 2011-09-28 23:00:00 0.10 10878.37 6769.13 26085.71 12157.68 55014.82 6338.88 213.52 1980.46 2584.83 6357.99 2467.05 130848.44
2011-09-29 23:00:00 2011-09-29 23:00:00 0.10 10878.37 6769.13 26085.71 12157.68 55014.82 6338.88 213.52 1980.46 2584.83 6357.99 2467.05 130848.44
2011-09-30 23:00:00 2011-09-30 23:00:00 0.10 10878.37 6769.13 26085.71 12157.68 55014.82 6338.88 213.52 1980.46 2584.83 6357.99 2467.05 130848.44
2012-04-13 23:00:00 2012-04-13 23:00:00 2.50 65459300.38 49760255.77 83656339.20 72485514.18 66821528.91 124597541.80 85312891.16 59313157.64 66939506.23 38891393.55 26507162.19 739744591.00
2012-04-17 23:00:00 2012-04-17 23:00:00 3.80 133070578.13 100972470.24 169868976.82 160519865.47 147856366.57 264675442.40 181997184.12 126311460.03 147846956.69 86111942.18 58794126.59 1578025369.24
2012-07-06 23:00:00 2012-07-06 23:00:00 3.80 133070578.13 100972470.24 169868976.82 160519865.47 147856366.57 264675442.40 181997184.12 126311460.03 147846956.69 86111942.18 58794126.59 1578025369.24
2012-07-09 23:00:00 2012-07-09 23:00:00 4.40 167209332.74 126761855.14 213628160.87 207145377.67 190647256.85 336768437.85 231697201.35 160876342.02 189819034.93 110612180.56 75621807.24 2010786987.22
2012-08-21 23:00:00 2012-08-21 23:00:00 50.00 3286622830.32 2456447732.68 4271769505.57 5060359137.91 4589561470.65 7225860552.66 4951147179.46 3484852951.09 4242950889.46 2474746719.90 1722441875.58 43766760845.27
2012-08-26 23:00:00 2012-08-26 23:00:00 0.20 112101.79 88408.29 237531.95 139396.94 299757.45 236220.27 85671.07 84875.66 52123.51 46299.38 33097.73 1415484.03
2012-09-08 23:00:00 2012-09-08 23:00:00 0.70 3601072.58 2711646.21 5778281.70 4023600.54 3749948.45 6188889.05 3750058.59 3114445.99 2053852.70 1148434.96 990505.49 37110736.26

4943 rows × 14 columns

In [57]:
#Forward to Demand Supply

#Take backup of original dataframe
checkpt1_df = df.copy()
In [134]:
#Read Data for moving forward

#Use backup when needed
df = checkpt1_df.copy()

#Convert data to daily values
df = df.resample('d').sum().groupby([df['DATETIME'].dt.dayofyear]).mean()

#Read Demand Data for all zones
demand_csv = 'Zones_of_Analysis_from_Excel.csv'
demand_df = pd.read_csv(demand_csv)
zones = list(demand_df['Zone'].values)
In [135]:
#Constants for Calculating supply demand
evap = .3 #30% evaporation loss in urban environement.
trns = .25 #20% Transmition loss
potw = 65/135
nonpotw = 35/135 #35 lpcd per capita
bulkw = 35/135 #35 lpcd per capita
sec_wtr = 68 #Secondary treatment cost in Lakhs per MLD
ter_wtr = 40 #Tertiary treatment cost in Lakhs per MLD
dam_wtr = 40 #Dam water cost till CWR in Lakhs per MLD

#Calculate Water demand supply and availability in all zones
for zone in zones:
    #Prepare Variables
    df1 = demand_df[ demand_df['Zone'] == zone ]
    WD = df1['Water_Demand_liters'].values[0]
    RA = df1['RESIDENTIAL_Area'].values[0]
    CA = df1['COMMERCIAL_Area'].values[0]
    IA = df1['INDUSTRY_Area'].values[0]
    TA = RA+CA+IA
    
    #Calculate Water Demand Supply Values    
    ##Demands
    df[zone+"_Water_Demand"] = WD
    df[zone+"_Pot_Water_Demand"] = WD * potw
    df[zone+"_Nonpot_Water_Demand"] = WD * nonpotw
    df[zone+"_Bulk_Water_Demand"] = WD * bulkw  
    ##Potentials
    df[zone+"_Excess_Runoff"] = df["RL_"+zone]
    df[zone+"_Potential_Treated_Runoff"] = df[zone+"_Excess_Runoff"] * ( 1 - evap )
    df[zone+"_Potential_Treated_WW"] = WD * ( 1 - ( trns * ( (RA*1+CA*.75+IA*.5) / TA ) ) )
    ##Potable Tertiary Treatment
    df[zone+"_Treated_Runoff_Demand"] = df[ [ zone+"_Pot_Water_Demand", zone+"_Potential_Treated_Runoff" ] ].min(axis=1)
    df[zone+"_Dam_Water_Demand_Potable"] = df[zone+"_Pot_Water_Demand"] - df[zone+"_Treated_Runoff_Demand"]
    ##Non Potable Secondary Treatment
    df[zone+"_Potential_Raw_Water"] = df[zone+"_Potential_Treated_Runoff"] - df[zone+"_Treated_Runoff_Demand"] + df[zone+"_Potential_Treated_WW"]
    df[zone+"_Raw_Water_Demand"] = df[zone+"_Nonpot_Water_Demand"] + df[zone+"_Bulk_Water_Demand"]
    df[zone+"_Dam_Water_Demand_Nonpot"] = df[zone+"_Raw_Water_Demand"] - df[zone+"_Potential_Raw_Water"]
    df.loc[df[zone+"_Dam_Water_Demand_Nonpot"] < 0 , [zone+"_Dam_Water_Demand_Nonpot"]] = 0
    #df[zone+"_Raw_Water_Demand"] = df[ [ zone+"_Raw_Water_Demand", zone+"_Potential_Raw_Water" ] ].min(axis=1)
    df[zone+"_Excess_Raw_Water"] = df[zone+"_Potential_Raw_Water"] - df[zone+"_Raw_Water_Demand"]
    ##Water Savings from Dam
    df[zone+"_Savings_Dam_Water"] = df[zone+"_Water_Demand"] - df[zone+"_Dam_Water_Demand_Potable"] - df[zone+"_Dam_Water_Demand_Nonpot"]
    
    #Calculate Cost Comparision Values
    ##Original
    df[zone+"_Original_Water_Treatment_Cost"] = ( df[zone+"_Water_Demand"] / 1000000 ) * dam_wtr 
    df[zone+"_Original_WW_Treatment_Cost"] = ( df[zone+"_Potential_Treated_WW"] / 1000000 ) * sec_wtr
    df[zone+"_Original_Total_Treatment_Cost"] = df[zone+"_Original_Water_Treatment_Cost"] + df[zone+"_Original_WW_Treatment_Cost"]
    ##Managed
    df[zone+"_Managed_Water_Treatment_Cost"] = ( df[zone+"_Treated_Runoff_Demand"] / 1000000 * ter_wtr ) + ( df[zone+"_Dam_Water_Demand_Potable"] / 1000000 * dam_wtr ) 
    df[zone+"_Managed_WW_Treatment_Cost"] = ( df[zone+"_Potential_Treated_WW"] / 1000000 ) * sec_wtr
    df[zone+"_Managed_Total_Treatment_Cost"] = df[zone+"_Managed_Water_Treatment_Cost"] + df[zone+"_Managed_WW_Treatment_Cost"]
    ##Savings in terms of Cost
    df[zone+"_Savings_Total_Treatment_Cost"] = df[zone+"_Original_Total_Treatment_Cost"] - df[zone+"_Managed_Total_Treatment_Cost"]
    
    #print(zone)
In [136]:
df
Out[136]:
RAINFALL RL_Zone_1 RL_Zone_2 RL_Zone_3 RL_Zone_4 RL_Zone_5 RL_Zone_6 RL_Zone_7 RL_Zone_8 RL_Zone_9 ... Zone_11_Dam_Water_Demand_Nonpot Zone_11_Excess_Raw_Water Zone_11_Savings_Dam_Water Zone_11_Original_Water_Treatment_Cost Zone_11_Original_WW_Treatment_Cost Zone_11_Original_Total_Treatment_Cost Zone_11_Managed_Water_Treatment_Cost Zone_11_Managed_WW_Treatment_Cost Zone_11_Managed_Total_Treatment_Cost Zone_11_Savings_Total_Treatment_Cost
DATETIME
1 0.06 5849.39 3644.17 14043.28 6545.10 29617.31 2992.29 114.95 1066.18 1391.55 ... 0.00 490635.80 1067854.14 82.31 105.91 188.22 39.63 105.91 145.54 42.68
2 0.01 1462.35 911.04 3510.82 1636.28 7404.33 748.07 28.74 266.55 347.89 ... 0.00 490635.80 1067156.87 82.31 105.91 188.22 39.63 105.91 145.54 42.68
3 0.29 1586076.13 1212370.65 2340424.28 1673634.50 1604721.58 2721251.17 1705580.24 1324151.72 1045727.85 ... 0.00 490635.80 1387256.84 82.31 105.91 188.22 39.63 105.91 145.54 42.68
4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
7 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
8 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
9 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
10 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
11 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
12 0.50 8796195.69 6681333.25 11445849.74 9554612.29 8848666.14 16421532.29 11127685.44 7830556.17 8483313.25 ... 0.00 1872354.67 2057640.00 82.31 105.91 188.22 39.63 105.91 145.54 42.68
13 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
14 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
15 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
16 0.03 16014.54 12629.76 33933.14 19913.85 42822.49 33745.75 12238.72 12125.09 7446.22 ... 0.00 490635.80 1070234.22 82.31 105.91 188.22 39.63 105.91 145.54 42.68
17 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
18 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
19 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
20 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
21 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
22 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
23 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
24 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
25 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
26 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
27 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
28 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
29 0.64 23063660.40 17486812.08 29464992.39 28456291.57 26205339.13 46359944.43 31892673.73 22142785.81 26096739.39 ... 0.00 6775763.62 2057640.00 82.31 105.91 188.22 39.63 105.91 145.54 42.68
30 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
337 0.07 217539.03 171962.37 400951.76 268436.15 273008.86 405932.82 237346.29 210675.65 128207.71 ... 0.00 490635.80 1113050.60 82.31 105.91 188.22 39.63 105.91 145.54 42.68
338 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
339 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
340 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
341 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
342 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
343 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
344 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
345 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
346 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
347 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
348 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
349 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
350 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
351 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
352 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
353 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
354 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
355 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
356 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
357 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
358 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
359 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
360 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
361 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
362 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
363 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
364 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
365 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68
366 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... 0.00 490635.80 1066924.44 82.31 105.91 188.22 39.63 105.91 145.54 42.68

366 rows × 243 columns

In [137]:
df.to_csv('Water_Management_Analysis.csv', encoding='utf-8', index=True)