Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用openpyxl库从excel中获取时间序列数据?_Python_Excel_Openpyxl - Fatal编程技术网

Python 如何使用openpyxl库从excel中获取时间序列数据?

Python 如何使用openpyxl库从excel中获取时间序列数据?,python,excel,openpyxl,Python,Excel,Openpyxl,我正在读取Excel文件,该文件每8秒更新一次传感器数据,并将其保存在auto.in中 我正在阅读的Excel表格包含: 第2列是时间单位hh:mm:ss 第三栏是湿度 第4列是传感器1的温度值 第5列是压力值 第6列是传感器2的温度值 我使用以下代码获取时间序列数据: 导入matplotlib.pyplot作为plt 导入时间 将numpy作为np导入 从openpyxl导入加载工作簿 进口tkinter 将matplotlib.gridspec导入为gridspec wb=加载工作簿('

我正在读取Excel文件,该文件每8秒更新一次传感器数据,并将其保存在auto.in中

我正在阅读的Excel表格包含:

  • 第2列是时间单位
    hh:mm:ss
  • 第三栏是湿度
  • 第4列是传感器1的温度值
  • 第5列是压力值
  • 第6列是传感器2的温度值
我使用以下代码获取时间序列数据:

导入matplotlib.pyplot作为plt
导入时间
将numpy作为np导入
从openpyxl导入加载工作簿
进口tkinter
将matplotlib.gridspec导入为gridspec
wb=加载工作簿('PLX\u DAQ.xlsm')
工作表1=wb。按工作表名称(“简单数据”)获取工作表
plt.图(figsize=(6,4),facecolor=(灰色)
G=gridspec.gridspec(6,2)
x=np.零(表1.最大行)
y=np.零(len(x))
z=np.0(len(x))
a=np.0(len(x))
b=np.零(len(x))
对于范围内的i(1,第1页,最大行):
x[i]=表1.单元格(行=i+1,列=2).值
y[i]=表1.单元格(行=i+1,列=3).值
z[i]=表1.单元格(行=i+1,列=4).值
a[i]=表1.单元格(行=i+1,列=5).值
b[i]=表1.单元格(行=i+1,列=6).值
plt.ion()
列表1=[]
列表2=[]
列表3=[]
列表4=[]
列表5=[]
对于范围(0,len(x))中的i:
列表1.追加(x[i])
列表2.追加(y[i])
清单3.追加(z[i])
清单4.追加(a[i])
清单5.追加(b[i])
时间。睡眠(8)
plt.散射(列表1、列表2,颜色为青色,标签为湿度)
plt.scatter(列表1,列表3,颜色='红色',标签='Temprature1')
plt.scatter(列表1、列表4,颜色为黄色,标签为压力)
plt.scatter(列表1、列表5,颜色为绿色,标签为温度2)
plt.grid(真)
plt.暂停(0.5)
这给了我以下的错误

runfile('C:/Users/tejas.a.patel/Desktop/Pythonpractice/Spyder/Read Excel_PLX-DAQ live plot-a.py', 
wdir='C:/Users/tejas.a.patel/Desktop/Pythonpractice/Spyder')
C:/Users/tejas.a.patel/Desktop/Pythonpractice/Spyder/Read Excel_PLX-DAQ live plot-a.py:19: 
DeprecationWarning: Call to deprecated function get_sheet_by_name (Use wb[sheetname]).
sheet_1 = wb.get_sheet_by_name('Simple Data')

Traceback (most recent call last):
File "<ipython-input-1-f101b726f4c2>", line 1, in <module> runfile('C:/Users/tejas.a.patel/Desktop/Pythonpractice/Spyder/Read Excel_PLX-DAQ live plot-a.py', 
wdir='C:/Users/tejas.a.patel/Desktop/Pythonpractice/Spyder')
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 827, in runfile
execfile(filename, namespace)
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/tejas.a.patel/Desktop/Pythonpractice/Spyder/Read Excel_PLX-DAQ live plot-a.py", line 35, in <module>
x[i] = sheet_1.cell(row=i + 1, column=2).value
TypeError: float() argument must be a string or a number, not 'datetime.time'
runfile('C:/Users/tejas.a.patel/Desktop/pythonpracce/Spyder/Read Excel\u PLX-DAQ live plot-a.py',
wdir='C:/Users/tejas.a.patel/Desktop/pythonpracce/Spyder')
C:/Users/tejas.a.patel/Desktop/pythonpracce/Spyder/Read Excel_PLX-DAQ live plot-a.py:19:
弃用警告:调用弃用函数get_sheet_by_name(使用wb[sheetname])。
工作表1=wb。按工作表名称(“简单数据”)获取工作表
回溯(最近一次呼叫最后一次):
文件“”,第1行,运行文件('C:/Users/tejas.a.patel/Desktop/pythonpracce/Spyder/Read Excel_PLX-DAQ live plot-a.py',
wdir='C:/Users/tejas.a.patel/Desktop/pythonpracce/Spyder')
文件“C:\ProgramData\Anaconda3\lib\site packages\spyder\u kernels\customize\spyderrcustomize.py”,第827行,在运行文件中
execfile(文件名、命名空间)
文件“C:\ProgramData\Anaconda3\lib\site packages\spyder\u kernels\customize\spydercustomize.py”,第110行,在execfile中
exec(编译(f.read(),文件名,'exec'),命名空间)
文件“C:/Users/tejas.a.patel/Desktop/pythonpracce/Spyder/Read Excel_PLX-DAQ live plot-a.py”,第35行,in
x[i]=表1.单元格(行=i+1,列=2).值
TypeError:float()参数必须是字符串或数字,而不是“datetime.time”

请帮助

问题在于您已将变量初始化为float:

x = np.zeros(sheet_1.max_row)
y = np.zeros(len(x))
z = np.zeros(len(x))
a = np.zeros(len(x))
b = np.zeros(len(x))
核对人:

x.dtype
你会得到

dtype('float64')
现在您正试图将Python datetime.time对象分配给变量,这就是它引发异常的原因。 我不知道为什么要使用x、y、z等,然后在列表列表1、列表2、列表3中添加。。您可以在其中直接附加值

无论如何,由于某种原因,您正在使用datetime.time对象,其中一种解决方法是将其转换为秒(或分钟或小时,随便什么),然后分配

time_ = (sheet_1.cell(row=i + 1, column=2).value) # ex08:32:10
time_in_sec = time_.hour*60*60 + time_.minute*60 +time_.second

#print(type(time_))
#print(type(time_.isoformat()))
print(time_in_sec)
x[i] = time_in_sec # assign to variables
有关更多信息,请查看以下链接:

请提供完整的回溯,并说明
x
y
是什么。感谢回复,我编辑了我的帖子,并提供了我的代码和错误的详细信息。