import pandas as pd
import numpy as np
data = pd.read_excel('/Users/xuchangmao/Desktop/工作/排放模型/燃油周期/周期验证/7月29日-8月15原始数据.xlsx')
def moving_average(interval, window_size):
window = np.ones(int(window_size)) / float(window_size)
return np.convolve(interval, window, 'same') # numpy的卷积函数
x = data['油箱液位'].index.to_list()
y_fuel = data['油箱液位'].to_list() # 初始的油箱液位数据,list格式
y_fuel_array = np.array(y_fuel) # 滤波处理之前需要转换为array
y_new_fuel = moving_average(interval=y_fuel_array, window_size=2000) # 初始的油箱液位数据进行滤波处理
y_fuel_pd = pd.DataFrame(y_fuel_array) # 原始的油箱液位,转换为dataframe
y_new_fuel_pd = pd.DataFrame(y_new_fuel) # 处理后的油箱液位,转换为dataframe
fuel_diff = y_new_fuel_pd - y_new_fuel_pd.shift(20) # 处理后的数据进行差分处理,20秒差分
fuel_point = fuel_diff[fuel_diff[0] > 0.3][0] # 变化量大于30%的点定位为加油点
fuel_index = fuel_point.index.to_frame() # 找到加油点的index,也就是时间
fuel_index_diff = fuel_index - fuel_index.shift(1) # 加油点index的差分,用来寻找端点index
# 如果差分大于半天的秒数,那么就认为发生了加油行为,
fuel_cycle = fuel_index_diff[fuel_index_diff[0] > 43200][0].index.to_list() # 用这个list来保留周期的信息,list中就是周期端点
dfs = np.split(data, fuel_cycle, axis=0)
for i in range(len(dfs)):
dfs[i].to_excel(str(i) + '号周期数据.xlsx')
y_urea = data['反应剂余量'].to_list() # 初始的尿素液位数据,list格式
y_urea_array = np.array(y_urea) # 滤波处理之前需要转换为array
y_new_urea = moving_average(interval=y_urea_array, window_size=2000) # 初始的尿素液位数据进行滤波处理
y_urea_pd = pd.DataFrame(y_urea_array) # 原始的尿素液位,转换为dataframe
y_new_urea_pd = pd.DataFrame(y_new_urea) # 处理后的尿素液位,转换为dataframe
urea_diff = y_new_urea_pd - y_new_urea_pd.shift(600) # 处理后的数据进行差分处理,20秒差分
urea_point = urea_diff[urea_diff[0] > 15][0] # 变化量大于30%的点定位为加油点
urea_index = urea_point.index.to_frame() # 找到加油点的index,也就是时间
urea_index_diff = urea_index - urea_index.shift(1) # 加油点index的差分,用来寻找端点index
# 如果差分大于半天的秒数,那么就认为发生了加油行为,
urea_cycle = urea_index_diff[urea_index_diff[0] > 13200][0].index.to_list() # 用这个list来保留周期的信息,list中就是周期端点
# new_branch在这里显示
python 通过油箱液位传感器判定加油行为
需积分: 4 167 浏览量
2024-03-16
21:55:07
上传
评论
收藏 23KB ZIP 举报
![avatar](https://profile-avatar.csdnimg.cn/4530fde4ec954012a1ac6bd3893fbfc9_weixin_44010641.jpg!1)
MarcoPage
- 粉丝: 3401
- 资源: 4107
最新资源
- 编程项目实战:社区论坛管理系统的设计与实现(ASP.NET+ACCESS+源代码+论文)
- qml 实现tableview 双击修改编辑,长按提示
- Labview调用C++封装的DLL进行字符串和图像的相互传输
- 更新笔记20240617更新笔记20240617
- Damage Numbers Pro v4.34.unitypackage
- a-bogus 参数 补环境
- 数据恢复软件,可恢复回收站删除的等
- 2023-04-06-项目笔记 - 第一百六十七阶段 - 4.4.2.165全局变量的作用域-165 -2024.06.17
- 2023-04-06-项目笔记 - 第一百六十七阶段 - 4.4.2.165全局变量的作用域-165 -2024.06.17
- 编程项目实战:基于ASP.NET技术的店铺积分管理系统(含完整源代码+完整论文)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)