# -*- coding: utf-8 -*-
"""
Created on Tue Jul 10 11:19:37 2018
@author: rodrigo.goncalves
"""
import pandas as pd
from scipy.optimize import minimize
# This is the IDF function, returning the sum of squared errors (SSE)
def func2(par, res):
p1 = (par[0] * res.index.values **par[1])
p2 = ((res.columns.values.astype(float)+par[2])**par[3])
f = pd.DataFrame([p/p2 for p in p1],index=res.index,columns=res.columns)
erroTotQ=((f-res)**2).sum(axis=1).sum()
return erroTotQ
# copy your rainfall intensities table from excel
# with column headers with rainfall durations
# and row names with Return period value in years
dfInt=pd.read_clipboard()
#initial guess
param1 = [5000, 0.1, 10, 0.9]
res2 = minimize(func2, param1, args=(dfInt,), method='Nelder-Mead')
print(res2)
cs=['K=','a=','b=','c=']
dfResult=pd.DataFrame(res2.x,index=cs).transpose()
print(dfResult)
dfResult.to_clipboard(index=None)
Python programming, with examples in hydraulic engineering and in hydrology.
Showing posts with label rainfall. Show all posts
Showing posts with label rainfall. Show all posts
Tuesday, July 10, 2018
Fitting IDF curves with Scipy and Pandas
Labels:
fitting idf curves,
idf,
minimize,
pandas,
precipitation,
rain,
rainfall,
scipy
Subscribe to:
Posts (Atom)