I hope this is the right place to post this question. I have a dataset that comprised of individual sets of X,y.
Here are 3 examples:
As you can see, the X values range between 0 and ~140 and the y values range between ~0 and ~0.9. This and the general shape of the curve is the same for all sets, meaning that X cannot be a negative number and y cannot be above 1. I would like to find the best fit, the best general mathematical form that describes each set individually in an automated fashion. For example, if all my sets were somewhat linear, then the best fit would have been y = ax+b, and then I can use Python to find the best values for a,b for each set. The best function I was able to achieve was: y = a*np.sin(b*(x-c))+d , where np.sin is Python Numpy sine function, and a,b,c,d are parameters which, again, I can use Python to automatically iteratively find the best values.
Here is an example of the one fit of that function:
The fit is pretty good but I'm looking for something more agile/flexible mainly due to the part where 60 < x < 100 because this part is important as I would like the peak to be flatter and using sine limits the width of the peak. I tried polynomial functions but the results are not satisfying, they "suffer" from the same flexibility issue. I thought of maybe using Fourier transformation but I'm not sure how to do that.

