Here is an example of fitting the data to a logarithmic quadratic equation that fits the data somewhat better than an exponential, and plots the fitted curve against a scatterplot of the raw data. The code is not optimal, for example it repeatedly takes the log of X rather than just doing it one time. The log(x) data can be more efficiently fit by directly using a linear fitting method as well, however here you can replace the fitted equation with an exponential much more easily with less code changes.
import numpy
import matplotlib
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
points = numpy.array([(333, 195.3267), (500, 223.0235), (1000, 264.5914), (2000, 294.8728
), (5000, 328.3523), (10000, 345.4688)])
# get x and y vectors
xData = points[:,0]
yData = points[:,1]
# function to be fitted
def LogQuadratic(x, a, b, c):
return a + b*numpy.log(x) + c*numpy.power(numpy.log(x), 2.0)
# some initial parameter values
initialParameters = numpy.array([1.0, 1.0, 1.0])
fittedParameters, pcov = curve_fit(LogQuadratic, xData, yData, initialParameters)
# values for display of fitted function
a, b, c = fittedParameters
# for plotting the fitting results
xPlotData = numpy.linspace(min(xData), max(xData), 50)
y_plot = LogQuadratic(xPlotData, a, b, c)
plt.plot(xData, yData, 'D') # plot the raw data as a scatterplot
plt.plot(xPlotData, y_plot) # plot the equation using the fitted parameters
plt.show()
print('fitted parameters:', fittedParameters)