python实现xlsx文件分析详解


Posted in Python onJanuary 02, 2018

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实现xlsx文件分析详解

一般手动就得筛选、排序、打开计算器计算 - - 繁琐枯燥乏味
还是python大法好

代码浅析

流程图

python实现xlsx文件分析详解

脚本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实现xlsx文件分析详解

回顾与总结

渐渐体会到python脚本的优势所在。
python在代码保密上可能是解释性语言共有的小小缺陷,做项目还是C/C++,当然是指传统项目
写python很开心啊

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中Django框架利用url来控制登录的方法
Jul 25 Python
Python的shutil模块中文件的复制操作函数详解
Jul 05 Python
Python3中的列表,元组,字典,字符串相关知识小结
Nov 10 Python
Python切片工具pillow用法示例
Mar 30 Python
python实现画一颗树和一片森林
Jun 25 Python
python 解压pkl文件的方法
Oct 25 Python
python3.6使用urllib完成下载的实例
Dec 19 Python
python3使用QQ邮箱发送邮件
May 20 Python
Python考拉兹猜想输出序列代码实践
Jul 05 Python
Python 通过截图匹配原图中的位置(opencv)实例
Aug 27 Python
用sqlalchemy构建Django连接池的实例
Aug 29 Python
python3中的logging记录日志实现过程及封装成类的操作
May 12 Python
Python实现KNN邻近算法
Jan 28 #Python
Python+matplotlib+numpy绘制精美的条形统计图
Jan 02 #Python
基于Python实现的ID3决策树功能示例
Jan 02 #Python
python实现基于SVM手写数字识别功能
May 27 #Python
Python中字典的浅拷贝与深拷贝用法实例分析
Jan 02 #Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
Jan 02 #Python
Python实现进程同步和通信的方法
Jan 02 #Python
You might like
如何使用PHP中的字符串函数
2006/10/09 PHP
无限级别菜单的实现
2006/10/09 PHP
一个PHP模板,主要想体现一下思路
2006/12/25 PHP
php利用curl抓取新浪微博内容示例
2014/04/27 PHP
CodeIgniter配置之config.php用法实例分析
2016/01/19 PHP
PHP实现的DES加密解密封装类完整实例
2017/04/29 PHP
PHP 出现 http500 错误的解决方法
2021/03/09 PHP
Prototype 工具函数 学习
2009/07/23 Javascript
关于Aptana Studio生成自动备份文件的解决办法
2009/12/23 Javascript
Jquery 的outerHeight方法使用介绍
2013/09/11 Javascript
javascript中普通函数的使用介绍
2013/12/19 Javascript
Node.js实现简单聊天服务器
2014/06/20 Javascript
js解决select下拉选不中问题
2014/10/14 Javascript
使用原生JS实现弹出层特效
2014/12/22 Javascript
使用jquery插件qrcode生成二维码
2015/10/22 Javascript
VUEJS实战之利用laypage插件实现分页(3)
2016/06/13 Javascript
关于javascript事件响应的基础语法总结(必看篇)
2016/12/26 Javascript
vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知
2019/08/17 Javascript
Element Cascader 级联选择器的使用示例
2020/07/27 Javascript
浅谈Python 的枚举 Enum
2017/06/12 Python
Python实现注册、登录小程序功能
2018/09/21 Python
numpy 声明空数组详解
2019/12/05 Python
tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现
2020/02/06 Python
新百伦折扣店:Joe’s New Balance Outlet
2016/08/20 全球购物
李维斯德国官方网上商店:Levi’s德国
2016/09/10 全球购物
Gap英国官网:Gap UK
2018/07/18 全球购物
澳大利亚排名第一的露营和户外设备在线零售商:Outbax
2020/05/06 全球购物
第一范式(1NF)、第二范式(2NF)和第三范式(3NF)之间的区别是什么?
2016/04/28 面试题
.NET初级开发工程师面试题
2014/04/18 面试题
环境科学专业求职信
2014/08/04 职场文书
2014国庆节国旗下演讲稿(精选版)
2014/09/26 职场文书
领导班子整改方案和个人整改措施
2014/10/25 职场文书
2015元旦标语横幅
2014/12/09 职场文书
研究生就业推荐表导师评语
2014/12/31 职场文书
mysql中between的边界,范围说明
2021/06/08 MySQL
SQL解决未能删除约束问题drop constraint
2022/05/30 SQL Server