python实现xlsx文件分析详解
作者:水似冰 发布时间:2022-08-27 03:04:56
标签:python,xlsx
python脚本实现xlsx文件解析,供大家参考,具体内容如下
环境配置:
1.系统环境:Windows 7 64bit
2.编译环境:Python3.4.3
3.依赖库: os sys xlrd re
4.其他工具:none
5.前置条件:待处理的xlsx文件
脚本由来
最近的工作是做测试,而有一项任务呢,就是分析每天机器人巡检时采集的数据,包括各种传感器,CO2、O2、噪声等等,每天的数据也有上千条,通过站控的导出数据功能,会把数据库里面导出成xlsx文件,而这项任务要分析一下当天采集的数据是否在正常范围,要计算摄像头的识别率和识别准确率,自己傻呵呵的每天都在手动操作,突然觉得很浪费时间,索性写个python脚本吧,这样每天一条命令,就能得到自己想看的数据结果。每天至少节省10分钟!
这是要解析的xlsx文件:
一般手动就得筛选、排序、打开计算器计算 - - 繁琐枯燥乏味
还是python * 好
代码浅析
流程图
脚本demo
#-*- coding:utf-8 -*-
import xlrd
import os
import sys
import logging
import re
#logging.basicConfig(level=logging.DEBUG)
xfile = sys.argv[1]
dateList = []
InspectionType = []
InspectionRresult = []
def load_data():
CO2Type = []
O2Type = []
NoiseType = []
SupwareType = []
TowareType = []
TemperatureType = []
HumidityType = []
InfraredType = []
CO2Result = []
O2Result = []
NoiseResult = []
SupwareResult = []
TowareResult = []
TemperatureResult = []
HumidityResult = []
InfraredResult = []
logging.debug(InspectionType)
logging.debug(InspectionRresult)
for index, value in enumerate(InspectionType):
if value == "二氧化碳": #CO2Type
CO2Type.extend(value)
logging.debug(index)
logging.debug("CO2 RESULT: "+InspectionRresult[index])
CO2Result.append(InspectionRresult[index])
if value == "氧气传感器": #O2Type
O2Type.extend(value)
O2Result.append(InspectionRresult[index])
if value == "噪声传感器": #NoiseType
NoiseType.extend(value)
NoiseResult.append(InspectionRresult[index])
if value == "局放(超声波测量)": #SupwareType
SupwareType.extend(value)
SupwareResult.append(InspectionRresult[index])
if value == "局放(地电波测量)": #SupwareType
TowareType.extend(value)
TowareResult.append(InspectionRresult[index])
if value == "温度传感器": #TemperatureType
TemperatureType.extend(value)
TemperatureResult.append(InspectionRresult[index])
if value == "湿度传感器": #TemperatureType
HumidityType.extend(value)
HumidityResult.append(InspectionRresult[index])
if value == "温度(红外测量)": #TemperatureType
InfraredType.extend(value)
InfraredResult.append(InspectionRresult[index])
logging.debug(CO2Result)
logging.debug(O2Result)
logging.debug(NoiseResult)
logging.debug(SupwareResult)
logging.debug(TowareResult)
logging.debug(TemperatureResult)
logging.debug(HumidityResult)
logging.debug(InfraredResult)
return CO2Result,O2Result,NoiseResult,SupwareResult,TowareResult,TemperatureResult,HumidityResult,InfraredResult
def get_data_print(co2,o2,noise,supware,toware,temperature,humidity,infrared):
co2 = list(map(eval,co2))
o2 = list(map(eval,o2))
noise = list(map(eval,noise))
supware = list(map(eval,supware))
toware = list(map(eval,toware))
temperature = list(map(eval,temperature))
humidity = list(map(eval,humidity))
infrared = list(map(eval,infrared))
co2Min = min(co2)
co2Max = max(co2)
logging.debug("CO2 min value :~~"+str(co2Min))
logging.debug("CO2 max value :~~"+str(co2Max))
o2Min = min(o2)
o2Max = max(o2)
noiseMin = min(noise)
noiseMax = max(noise)
supwareMin = min(supware)
supwareMax = max(supware)
towareMin = min(toware)
towareMax = max(toware)
temperatureMin = min(temperature)
temperatureMax = max(temperature)
humidityMin = min(humidity)
humidityMax = max(humidity)
infraredMin = min(infrared)
infraredMax = max(infrared)
print("CO2 values :",co2Min,'~~~~~~~',co2Max)
print("o2 values :",o2Min,'~~~~~~~',o2Max)
print("noise values :",noiseMin,'~~~~~~~',noiseMax)
print("supware values :",supwareMin,'~~~~~~~',supwareMax)
print("toware values :",towareMin,'~~~~~~~',towareMax)
print("temperature values :",temperatureMin,'~~~~~~~',temperatureMax)
print("humidity values :",humidityMin,'~~~~~~~',humidityMax)
print("infrared values :",infraredMin,'~~~~~~~',infraredMax)
def cal_picture():
result7to19List = []
result19to7List = []
count7to19List = []
count19to7List = []
count7to19Dict = {}
count19to7Dict = {}
failfind7to19cnt = 0
failfind19to7cnt = 0
photoType = []
photoDateList = []
allPhotoResult = []
for index,value in enumerate(InspectionType): #按照巡检类型筛选出视觉类,通过索引值同步时间、巡检结果
if value == "开关(视觉识别)" or value == "旋钮(视觉识别)" or \
value == "电流表(视觉识别)" or value == "电压表(视觉识别)":
photoType.extend(value)
photoDateList.append(dateList[index])
allPhotoResult.append(InspectionRresult[index])
for index,value in enumerate(photoDateList):
if value[-8:] > '07:00:00' and value[-8:] < '19:00:00':
result7to19List.append(allPhotoResult[index])
if value[-8:] > '19:00:00' or value[-8:] < '7:00:00':
result19to7List.append(allPhotoResult[index])
logging.debug(result7to19List[-20:])
logging.debug(result19to7List[:20])
noduplicate7to19Set=set(result7to19List) #里面无重复项
for item in noduplicate7to19Set:
count7to19List.append(result7to19List.count(item))
logging.debug(count7to19List)
count7to19Dict= dict(zip(list(noduplicate7to19Set),count7to19List))
noduplicate19to7Set=set(result19to7List)
for item in noduplicate19to7Set:
count19to7List.append(result19to7List.count(item))
count19to7Dict= dict(zip(list(noduplicate19to7Set),count19to7List))
logging.debug(count7to19Dict)
None7to19cnt = count7to19Dict['']
all7to19cnt = len(result7to19List)
None19to7cnt = count19to7Dict['']
all19to7cnt = len(result19to7List)
logging.debug(None7to19cnt)
for key in count7to19Dict:
if count7to19Dict[key] == 1 :
failfind7to19cnt = failfind7to19cnt+1
if re.match('识别失败:*',key):
failfind7to19cnt = failfind7to19cnt+ count7to19Dict[key]
for key in count19to7Dict:
if count19to7Dict[key] == 1 :
failfind19to7cnt = failfind19to7cnt+1
if re.match('识别失败:*',key):
failfind19to7cnt = failfind19to7cnt+count19to7Dict[key]
logging.debug(all19to7cnt)
print("7:00 ~~~ 19:00 识别率:",(all7to19cnt-None7to19cnt)/all7to19cnt)
print("7:00 ~~~ 19:00 识别准确率:",(all7to19cnt-None7to19cnt-failfind7to19cnt)/(all7to19cnt-None7to19cnt))
print("19:00 ~~~ 7:00 识别率:",(all19to7cnt-None19to7cnt)/all19to7cnt)
print("19:00 ~~~ 7:00 识别准确率:",(all19to7cnt-None19to7cnt-failfind19to7cnt)/(all19to7cnt-None19to7cnt))
#读取xlsx文件
xlsxdata=xlrd.open_workbook(xfile)
tablepage=xlsxdata.sheets()[0]
dateList.extend(tablepage.col_values(5))
InspectionType.extend(tablepage.col_values(3))
InspectionRresult.extend(tablepage.col_values(6))
cal_picture()
co2,o2,noise,supware,toware,temperature,humidity,infrared=load_data()
get_data_print(co2,o2,noise,supware,toware,temperature,humidity,infrared)
结果图
回顾与总结
渐渐体会到python脚本的优势所在。
python在代码保密上可能是解释性语言共有的小小缺陷,做项目还是C/C++,当然是指传统项目
写python很开心啊
来源:http://blog.csdn.net/qq_30650153/article/details/78935666


猜你喜欢
- 1.前言当我们创建Core项目的时候,Web根目录下会有个wwwroot文件目录,wwwroot文件目录里面默认有HTML、CSS、IMG、
- 本文描述通过统计分析出医院信息系统需分区的表,对需分区的表选择分区键,即找出包括在你的分区键中的列(表的属性),对大型数据的管理比较有意义,
- 前言关于mockjs,官网描述的是1.前后端分离2.不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据。3.数据类型丰富4.
- 一、连接MYSQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1、例1:连接到本机上的MySQL: 首先在打开DOS窗口,
- 给定一个带有列"BoolCol"的DataFrame,如何找到满足条件"BoolCol" == Tr
- 这一段要毕业,得折磨自己两个月....这段时间还是会摆弄了javascript的.大致在下面两个方面: 1.javascript的
- 思路:利用栈实现代数式中括号有效行的的检验:代码:class mychain(object): #利用链表建立栈,链表为父类 length=
- 一:什么是数据库镜像?Robidoux:数据库镜像是将数据库事务处理从一个SQL Server数据库移动到不同SQL Server环境中的另
- 07年,我是极力推崇网站规范制作,好处很多,对商业,对用户,对设计师。我们走了两年,现在有了一定的成效,我们也看到了规范所带来的好处和便利。
- JavaScript图片水平翻转后垂直翻反转的特效一:<!--把下列代码加到body区域内--><SCRIPT langu
- 一般事件事件浏览器支持描述onClickHTML: 2 | 3 | 3.2 | 4 Browser: IE3 | N2 | O3 鼠标点击事
- 要写爬虫爬取大量的数据,就会面临ip被封的问题,虽然可以通过设置延时的方法来延缓对网站的访问,但是一旦访问次数过多仍然会面临ip被封的风险,
- 1.高阶函数# 1.变量指向函数# 调用函数和函数本身print("-10的绝对值为:",abs(-10))print(
- 背景总结统计工作中几个常用用法在python统计函数库scipy.stats的使用范例。正态分布以正态分布的常见需求为例了解scipy.st
- 最近再写openpose,它的网络结构是多阶段的网络,所以写网络的时候很想用列表的方式,但是直接使用列表不能将网络中相应的部分放入到cuda
- Python中try块可以捕获测试代码块中的错误。except块可以处理错误。finally块可以执行代码,而不管try-和except块的
- PyQt5布局控件QVBoxLayout简介采用QVBoxLayout类,按照从上到下的顺序添加控件本节内容较少,演示两个实例,便于明白QV
- 本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑php数组查询元素位置的方法:方法1:利用array_search(
- Python编写微信小游戏“跳一跳”的运行脚本,分享给大家。更新了微信后发现了一款小游戏跳一跳,但是玩了一下午最高才达到200,每次差点破纪
- 大家好,我是辰哥。辰哥之前就想着Python可不可以剪辑视频(提取视频的音频,视频截取等等),然后辰哥在网上一搜,还真找到了Python的一