What you aiming to do is called Interpolation in mathematics.
It is important to remember that no finite dataset can exactly determine a function over an infinite domain without stringent assumptions that hold. The best you can hope for is decent interpolation for the values in between the values you know. Furthermore if you know that the function falls into a certain class of functions such as sinusoids or polynomials then it can make your life a lot easier.
Mathematical assumptions about what kind of functions are allowed can be very powerful. In the extreme case if you know that your function is made from a sum of a finite number of waves that are within a given range of frequency and your samples are more than twice as dense as the highest frequency then you can determine that function exactly given the samples. That is a proven mathematical fact.
I would start by reading up on interpolation and the difficulties at a high level. Then play around with the SciPy
tools for interpolation using simple functions you choose.
https://docs.scipy.org/doc/scipy/reference/interpolate.html