当前位置: 首页 > news >正文

Python数据处理实战(4)-上万行log数据提取并作图进阶版

系列文章:

0、基本常用功能及其操作

1,20G文件,分类,放入不同文件,每个单独处理

2,数据的归类并处理

3,txt文件指定的数据处理并可视化作图

4,上万行log数据提取并作图进阶版(本文)

5、上万行数据提取并分类进阶版

6、.......... (待定)

 一,需求

         作测试时,我们经常需要对大量数据进行提取并可视化,也就是作图

        上万行的数据,我们不方便提取到excel,复制时还会卡,一不小心,所以呢自动化作图就非常方便。 

         类似下面这种的数据,格式可能不尽相同,但是基本上每一行的格式一样,我们需要提取时间并作图,查看随着次数的增加的变化率。

二、思路及其实现

        1、文件操作,文件的读取并每行提取

        2、特定字符的提取,指定的时间,电压,电流,或者次数等等等等

        3、作散点图,标题,坐标轴等等信息 

 上述操作不了解的同学呢,可以去系列文章0_基本操作,去参考查阅学习。

三、代码

 作为进阶版,我把函数封装了一下,可以更方便操作

def log_to_pic(log_path,start_char,end_char,title):# 定义计数器以跟踪当前处理的行数counter = 0# 定义一个临时列表存储当前正在处理的值组current_chunk = []# #LOG_TO_PIC# 适用于每一行都有的情况下,每行格式都一样,数据量非常大的那种with open(log_path, 'r') as file:for line in file:# 查找 "&]=&" 和 "&mS" 之间的字符串start_index = line.find(start_char)end_index = line.find(end_char, start_index)# 如果每行都有的情况下,if start_index != -1 and end_index != -1:# 提取字符串并去掉空格time_data = line[start_index + len(start_char):end_index].strip()# 尝试将字符串转换为浮点数try:current_chunk.append(time_data)except ValueError:# 当转换失败时,忽略这个数据continue# 散点图数据为每组的最大值、最小值和平均值plt.scatter(range(len(current_chunk)), current_chunk, color='red', marker='o')# 设置图表的标题和图例plt.title(title)plt.xlabel('CYCLE')plt.ylabel('TIME(US)')# plt.legend()# 显示图表plt.show()

下面是主函数

        这里用到的数据的提取是字符串的识别,因为在两个中间,同时,可以应对不同的文件,可自行修改。方便快捷

if __name__ == '__main__':import reimport oslog_path = './log/XXX/XXXX.txt'start_char = "SR2 ="end_char = "uS"title = 'XXXXXXXXX'log_to_pic(log_path,start_char,end_char,title)

四、问题及其改进

 有时候数据为字符类型,我们需要转成int类型,否则做的图会有问题

    # 安全地将每个元素转换为intint_list = []for item in current_chunk:try:int_list.append(int(float(item)))  # 首先尝试将字符串转换为浮点数,然后转换为整数except ValueError:print(f"无法转换: {item}")

http://www.lryc.cn/news/313742.html

相关文章:

  • JavaWeb Tomcat启动、部署、配置、集成IDEA
  • 关于Vue3的一些操作
  • 外贸常用的出口认证 | 全球外贸数据服务平台 | 箱讯科技
  • C++ 标准库类型string
  • Material UI 5 学习02-其它按钮组件
  • Express学习(三)
  • influxdb2.0插入数据字段类型出现冲突问题解决
  • [C++]类和对象,explicit,static,友元,构造函数——喵喵要吃C嘎嘎4
  • 物联网的商业模式洞察
  • 智能指针基础知识【C++】【RAII思想 || unique_ptr || shared_ptrweak_ptr || 循环引用问题】
  • leetcode:反转链表II 和k个一组反转链表的C++实现
  • ERD Online 快速启动指南:代码下载到首次运行的全流程攻略 ️
  • c++ 11 新特性 不同数据类型之间转换函数之const_cast
  • C++从零开始的打怪升级之路(day45)
  • 小鹅通前端实习一面
  • ArrayList常用API
  • Chrome安装Axure插件
  • 【AI+应用】模仿爆款视频二次创作短视频操作步骤
  • HTML使用
  • 通过联合部署DDoS高防和WAF提升网站防护能力
  • 具体挫折现象的发生以及解法思考:您如果继续不问的话,严重重责就容易来
  • Type-C接口PD协议统一:引领电子科技新纪元的优势解析
  • 探讨2024年AI辅助研发的趋势
  • Java对接海康威视摄像头实现抓图
  • 浏览器一键重新发起请求
  • 一起来读李清照
  • 找出单身狗1,2
  • 贝叶斯优化BiLSTM分类预测(matlab代码)
  • Linux运维:实现光盘开机自动挂载、配置本地yum源教程
  • C语言从入门到精通 第十二章(程序的编译及链接)