我有一个 excel 数据 .xslx,有 4 列和多行,我只想提取第 0 列(即我的波长)和第 3 列(即我的辐射),然后根据该数据制作 pyplot。我的
我有一个 excel 数据 .xslx,有 4 列和多行,我只想提取第 0 列(即我的波长)和第 3 列(即我的辐射),然后根据该数据制作 pyplot。我的存档如下所示
280.0 8.2000E-02 4.7309E-23 2.5361E-26
280.5 9.9000E-02 1.2307E-21 1.0917E-24
281.0 1.5000E-01 5.6895E-21 6.1253E-24
281.5 2.1200E-01 1.5662E-19 2.7479E-22
282.0 2.6700E-01 1.1946E-18 2.8346E-21
282.5 3.0300E-01 4.5436E-18 1.3271E-20
接下来我想使用 curve_fit 来根据普朗克方程将黑体调整到 peplos。但是当我使用曲线拟合时出现了错误:
File"/Applications/Spyder.app/Contents/Resources/lib/python3.9/pandas/core/series.py", line 191, in wrapper
raise TypeError(f"cannot convert the series to {converter}")
TypeError: cannot convert the series to <class 'float'>
当程序尝试计算协方差时会出现此错误。我尝试使用 astype(float) 来改变我的辐射和波长,但没有效果。
import pandas as pd
import math
import matplotlib.pyplot as plt
import numpy as np
from scipy.constants import h, c, k
from scipy.optimize import curve_fit
Data=pd.read_excel('Sun_Data.xlsx', sheet_name='Spectra',header=2)
#fname='Sun_Data.txt'
#A=np.loadtxt(fname)
wavelength=Data.iloc[:,0].astype(float)
rad=Data.iloc[:,3].astype(float)
#wave=list(wavelength)
#print(wave)
def funcion(wavelegth,T):
planck=(2*math.pi*c**2*h)/(wavelength**5*(math.exp(h*c/(wavelength*k*T))-1))
return planck
#print(funcion(wavelength, rad))
t,cov=curve_fit(funcion, wavelength, rad)
plt.plot(wavelength,rad, color='pink')
plt.show()
我认为我的错误是使用 pandas 读取数据,但我不确定,有人可以帮帮我吗?