目标
继python数据处理1: 导入数据、片选数据、数据绘图,采用python 实现拟合数据,整合数据,导出数据
软件
Anaconda3 + Spyder 3.3.6 + Python 3.7.4
拟合涉及库函数:
- scipy
教程
Using scipy for data fitting
https://education.molssi.org/python-data-analysis/03-data-fitting/index.html
实现
导入库函数
拟合涉及库函数:
from scipy.optimize import curve_fit
定义拟合函数
def single_exp(x,tau, a, b):
y = a+b*np.exp(-x/tau)
return y
拟合数据
parameters1, covariance1 = curve_fit(single_exp, t1, v1,
bounds=([0,-5*abs(v1).max(),-5*abs(v1).max()],
[10000, 5*abs(v1).max(), 5*abs(v1).max()]))
parameters2, covariance2 = curve_fit(single_exp, t2, v2,
bounds=([0,-5*abs(v2).max(),-5*abs(v2).max()],
[10000, 5*abs(v2).max(), 5*abs(v2).max()]))
print(parameters1)
print(parameters2)
获得拟合曲线
v1fit = single_exp(t1,parameters1[0],parameters1[1],parameters1[2])
v2fit = single_exp(t2,parameters2[0],parameters2[1],parameters2[2])
数据可视化绘图
追加绘图:
fig, ax = plt.subplots()
ax.plot(t1,v1fit,color='k',label ='risefit',linewidth=2.0)
ax.plot(t2,v2fit,color='k',label ='fallfit',linewidth=2.0)
plt.show()
效果
数据合并
to = pd.concat([t1,t2],axis=0)
vo = pd.concat([v1,v2],axis=0)
vfito = pd.concat([v1fit,v2fit],axis=0)
out = pd.concat([to,vo,vfito],axis=1)
数据导出
out.to_csv('out.csv',index=0,header=0)
总结
-
–
- 拟合注意边界设置
- 定义的拟合函数必须有x和y
- 数据合并注意axis参数
参考
scipy.optimize.curve_fit函数用法解析
https://zhuanlan.zhihu.com/p/144353126
pandas的to_csv()使用方法
https://blog.csdn.net/toshibahuai/article/details/79034829
Markdown语法图文全面详解(10分钟学会)
https://blog.csdn.net/u014061630/article/details/81359144