Ajustement gaussien pour Python

Je suis en train de l'ajustement d'une Gaussienne pour mes données (ce qui est déjà un accidenté de la gaussienne). J'ai déjà pris l'avis de ceux qui sont ici et essayé curve_fit et leastsq mais je pense que je suis absent quelque chose de plus fondamental (que je n'ai aucune idée de comment utiliser la commande).
Voici le script que j'ai jusqu'à présent

import pylab as plb
import matplotlib.pyplot as plt

# Read in data -- first 2 rows are header in this example. 
data = plb.loadtxt('part 2.csv', skiprows=2, delimiter=',')

x = data[:,2]
y = data[:,3]
mean = sum(x*y)
sigma = sum(y*(x - mean)**2)

def gauss_function(x, a, x0, sigma):
    return a*np.exp(-(x-x0)**2/(2*sigma**2))
popt, pcov = curve_fit(gauss_function, x, y, p0 = [1, mean, sigma])
plt.plot(x, gauss_function(x, *popt), label='fit')

# plot data

plt.plot(x, y,'b')

# Add some axis labels

plt.legend()
plt.title('Fig. 3 - Fit for Time Constant')
plt.xlabel('Time (s)')
plt.ylabel('Voltage (V)')
plt.show()

Ce que je reçois de ce est une gaussienne-ish forme qui est l'original de mes données, et une ligne droite horizontale.

Ajustement gaussien pour Python

Aussi, j'aimerais parcelle de mon graphique à l'aide de points, au lieu d'avoir le contact.
Toute entrée est appréciée!

source d'informationauteur Richard Hsia