```python
# -*- coding:UTF-8 -*
import pandas as pd
def attrStatute():
'''
属性规约
:return:
'''
rawData = pd.read_excel('data/original_data.xls').drop(columns=["热水器编号","有无水流", "节能模式"])
return rawData
def valueStatute():
'''
数值规约
:return:
'''
data = pd.read_excel('data/water_heater.xls')
newData = data[data['开关机状态'].isin(['关']) & data['水流量'].isin([0])]
return newData
def divideEvent():
'''
事件划分
:return:
'''
# 阈值设置为4分钟
threshold = pd.Timedelta('4 min')
inputFile = 'data/water_heater.xls'
outputFile = 'data/dividesequence.xls'
data = pd.read_excel(inputFile)
data['发生时间'] = pd.to_datetime(data['发生时间'], format='%Y%m%d%H%M%S')
# 只保留水流量大于0的记录
data = data[data['水流量'] > 0]
# 将原数据的发生时间做一阶差分,得到一个时间差值的dataframe
d = data['发生时间'].diff() > threshold
# 累计求和编号数据
data['事件编号'] = d.cumsum() + 1
data.to_excel(outputFile)
if __name__ == '__main__':
# attrStatute().to_excel("data/water_heater.xls")
# valueStatute().to_excel("data/water_heater2.xls")z
divideEvent()
代码报如下异常,请问有人知道怎么回事吗
```python
E:\python\shujuwajue\venv\Scripts\python.exe E:/python/shujuwajue/数据预处理.py
Traceback (most recent call last):
File "E:\python\shujuwajue\venv\lib\site-packages\pandas\io\excel\_base.py", line 1111, in __new__
engine = config.get_option(f"io.excel.{ext}.writer", silent=True)
File "E:\python\shujuwajue\venv\lib\site-packages\pandas\_config\config.py", line 261, in __call__
return self.__func__(*args, **kwds)
File "E:\python\shujuwajue\venv\lib\site-packages\pandas\_config\config.py", line 135, in _get_option
key = _get_single_key(pat, silent)
File "E:\python\shujuwajue\venv\lib\site-packages\pandas\_config\config.py", line 121, in _get_single_key
raise OptionError(f"No such keys(s): {repr(pat)}")
pandas._config.config.OptionError: No such keys(s): 'io.excel.xls.writer'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "E:\python\shujuwajue\数据预处理.py", line 47, in <module>
divideEvent()
File "E:\python\shujuwajue\数据预处理.py", line 41, in divideEvent
data.to_excel(outputFile)
File "E:\python\shujuwajue\venv\lib\site-packages\pandas\core\generic.py", line 2252, in to_excel
formatter.write(
File "E:\python\shujuwajue\venv\lib\site-packages\pandas\io\formats\excel.py", line 934, in write
writer = ExcelWriter( # type: ignore[abstract]
File "E:\python\shujuwajue\venv\lib\site-packages\pandas\io\excel\_base.py", line 1115, in __new__
raise ValueError(f"No engine for filetype: '{ext}'") from err
ValueError: No engine for filetype: 'xls'
Process finished with exit code 1
不知道你这个问题是否已经解决, 如果还没有解决的话:name = input("请输入你的名字:")
age = input("请输入你的年龄:")
print(name+"的年龄为"+age)
#执行结果为
请输入你的名字:lisi
请输入你的年龄:23
lisi的年龄为23
name = input("请输入你的名字:")
age = int(input("请输入你的年龄:"))
print("%s五年后的年龄为%d"%(name, age+5))
#执行结果
请输入你的名字:lisi
请输入你的年龄:23
lisi五年后的年龄为28
操作符 | 说明 |
---|---|
%s | 字符串 |
%d | 整数 |
%f | 浮点数 |
%% | 输出 % |
name = input("请输入你的名字:")
age = int(input("请输入你的年龄:"))
print("{}五年后的年龄为{}".format(name, age+5))
#执行结果
请输入你的名字:lisi
请输入你的年龄:23
lisi五年后的年龄为28
name = input("请输入你的名字:")
age = int(input("请输入你的年龄:"))
print("{0},五年后的{0}年龄为{1}".format(name, age+5))
#执行结果
请输入你的名字:lisi
请输入你的年龄:23
lisi,五年后的lisi年龄为28
这个错误是因为缺少用于写入.xls格式的Excel文件的引擎。从pandas 1.2.0版本开始,默认的Excel写入引擎已更改为openpyxl,它不支持旧的.xls格式。
要解决此问题,有几个选择:
选项1:将文件保存为较新的.xlsx格式,而不是.xls。修改代码中的outputFile变量以使用.xlsx扩展名:
outputFile = 'data/dividesequence.xlsx'
确保已安装openpyxl包(pip install openpyxl),因为它是在.xlsx格式中写入Excel文件所需的包。
选项2:如果您确实需要将文件保存为旧的.xls格式,则可以使用xlwt引擎,方法是安装xlwt包(pip install xlwt)。然后,修改to_excel()方法调用以指定引擎:
python
data.to_excel(outputFile, engine='xlwt')
请注意,与较新的openpyxl引擎相比,xlwt引擎可能具有一些限制。
ValueError: No engine for filetype: 'xls',这是excel引擎缺少,安装下
pip install xlrd openpyxl