Python数据处理实战(0)-常用功能以及操作

 

系列文章:

 0、基本常用功能及其操作(本文操持更新)

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

2,数据的归类并处理

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

4,.........(待定)

一、序言

        为了后续的数据处理的实战操作,最起码需要掌握的基础技能

二、常用的需求以及操作

1、文件的读取和写入操作

2、指定数据提取操作

3、作图

4、.....(等想到后续还会添加)

5、.....

三、实现及需要掌握的内容

1、文件的读取和写入操作

 1、常用txt文件常用操作

 打开并且循环递增往后读取数据,以只读的方式打开(文件操作这个有集中方式)

# 打开文本文件并读取每一行
with open('./log/be_cycling_tBE.txt', 'r') as file:for line in file:

 写出到TXT文件,以写的方式打开,写入列表。

    # 分别保存不同dut数据的txt文件with open(base_addr+'dut1_data.txt', 'w') as f:f.writelines(dut1_data)

 加一个两个都合起来的写法,当识别到指定内容之后,写入新的文件夹,以便于后续处理,同时不同的文件编码格式不一样,大家注意

        with open(file_path, 'r', encoding='utf-8') as infile, open(dut_out, 'w', encoding='utf-8') as outfile:for line in infile:if selected_text in line:outfile.write(line)
 2、存入excel文件

当然如果我们想存入excel文件怎么办呢,

 提取数据存入列表,将列表数据存入工作表,工作表在存入excel文件

    from openpyxl import Workbook# 创建Excel工作簿wb = Workbook()ws = wb.active# Excel文件名excel_file_name = wafer_XY_output_excelif value_match:value = value_match.group(1).strip()row_data.append(value)# 将键和值写入工作表的一行ws.append(row_data)except FileNotFoundError:print(f"File {filename} not found. Skipping.")# 保存Excel文件wb.save(filename=excel_file_name)
 3、CSV文件操作

 

import csv
# 替换成你的CSV文件路径
csv_file_path = './log/ES51C03AH1C1Y-00-EPE603-#18_CP1.csv'
# 初始化一个空集合用于存储不同的元素名称
unique_elements = set()
# 打开文件,使用 'r' 模式读取
with open(csv_file_path, 'r', newline='', encoding='utf-8') as csvfile:# 创建CSV阅读器reader = csv.reader(csvfile)# 遍历CSV文件中的每一行for row in reader:# 检查每行是否有六个或更多的元素if len(row) >= 6:# 将第六个元素(索引为5)添加到集合中unique_elements.add(row[5])

2、指定数据提取操作

 用正则表达式,提取指定的区间的内容,一般和文件操作一起。

 同时操作16个文件,依次,提取指定的数据并写入新的文件

def get_tse(base_addr):# 定义正则表达式,用于匹配TPP=和uS之间的内容tpp_regex1 = re.compile(r'TSE=(.*?)mS')# 循环读取每个dut数据文件,提取TPP和uS之间的内容,并保存为txt文件for i in range(1, 17):# 构造文件名file_name = base_addr + f'dut{i}.txt'out_file_name = base_addr + f'tse{i}.txt'if i == 16:print("TSE,提取完成")# 打开文件和输出文件with open(file_name, 'r') as f, open(out_file_name, 'w') as out_f:for line in f:# 使用正则表达式匹配TPP和uS之间的内容match = tpp_regex1.search(line)if match:tpp_value = match.group(1)# 将提取的内容写入输出文件out_f.write(f'{tpp_value}\n')

识别到的数据的所在行,放入一个特定的列表以便于后续的数据处理

        # 读取并分组所有行for line in lines:match = re.search(r"Y: (.*?)--S", line)if match:value = match.group(1).strip()grouped_lines[value].append(line)

 比如这个,将不同的X数据,放入不同的文件

def X_select(wafer_XY_input_txt,wafer_XY_output_folder):wafer_XY_output_txt = wafer_XY_output_folder + '/xvalue_'# 读取原始文本文件with open(wafer_XY_input_txt, "r") as file:lines = file.readlines()# 提取并存储符合条件的行for line in lines:match = re.search(r'--X:\s+(\d+)-', line)if match:x_value = int(match.group(1))if 1 <= x_value <= 107:file_name = wafer_XY_output_txt + str(x_value) + '.txt'with open(file_name, 'a') as file:file.write(line)

3、作图

 当然,首先得有数据,处理过的数据,需要可视化怎么办,作图或者写入excel文件作图,因为excel毕竟功能强大,操作简单。

            plt.scatter(range(len(max_values)), max_values, s=1, c="r", label="Max Values")plt.scatter(range(len(min_values)), min_values, s=1, c="g", label="Min Values")plt.scatter(range(len(mean_values)), mean_values, s=1, c="b", label="Mean Values")plt.ylim(min(data) - 1, max(data) + 1)plt.legend()# plt.yticks(np.arange(0, 800, 50))plt.xlabel("cycle Groups (256 Data Points per Group)")plt.ylabel("TPP Values(uS)")plt.title(tu_title)plt.savefig(pic_name)  # 保存为png图片plt.close()  # 关闭当前绘图窗口

同时保存图片文件,图片文件也可以递增,非常喜欢python的这个特性。

当然python还有很多其他图,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/724125.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【教程】uni-app iOS打包解决profile文件与私钥证书不匹配问题

摘要 当在uni-app中进行iOS打包时&#xff0c;有时会遇到profile文件与私钥证书不匹配的问题。本文将介绍如何解决这一问题&#xff0c;以及相关的技术细节和操作步骤。 引言 在uni-app开发过程中&#xff0c;iOS打包是一个常见的操作。然而&#xff0c;有时会出现profile文…

git的密钥管理

配置Git中的SSH密钥主要涉及到生成密钥对和将公钥添加到远程仓库&#xff08;如GitHub&#xff09;的过程。以下是一个详细的配置步骤&#xff1a; 生成SSH密钥对&#xff1a; 首先&#xff0c;确保你已经安装了Git。 打开终端或命令行界面。 输入命令 ssh-keygen -t ed25519 …

【vue.js】文档解读【day 2】 | 响应式基础

如果阅读有疑问的话&#xff0c;欢迎评论或私信&#xff01;&#xff01; 本人会很热心的阐述自己的想法&#xff01;谢谢&#xff01;&#xff01;&#xff01; 文章目录 响应式基础声明响应式状态(属性)响应式代理 vs 原始值声明方法深层响应性DOM 更新时机有状态方法 响应式…

NineData云原生智能数据管理平台新功能发布|2024年2月版

SQL开发&#xff1a;全功能支持百度云 GaiaDB 介绍&#xff1a;支持通过 SQL 开发所有能力管理 GaiaDB 实例。更多信息&#xff0c;请参见&#xff1a;真香&#xff01;NineData SQL 开发全面适配 GaiaDB 场景&#xff1a;企业使用 GaiaDB 管理企业数据&#xff0c;需要一个一…

vue2+vite+@vitejs/plugin-vue2可以使用require引用图片资源

很多文章都说vite不能用require&#xff0c;vue3vite确实是这样的&#xff0c;但今天无意间发现vue2vite中是可以使用require引用资源的 vue3搭配vite一般使用的是vitejs/plugin-vue解析vue语法&#xff0c;而vue2使用的则是另一个插件vitejs/plugin-vue2插件解析vue语法 看下…

【Android】位置修改相关

获取位置服务总开关状态 //获取LOCATION_MODE值&#xff0c;但adb状态下无法获取 //0为关闭&#xff0c;1 gps、2 network、3 高精度等 int state Settings.Secure.getInt(mContext.getContentResolver(),Settings.Secure.LOCATION_MODE,Settings.Secure.LOCATION_MODE_HIGH_…

SpringBoot使用MongoTemplate详解

1.pom.xml引入Jar包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> 2.MongoDbHelper封装 /*** MongoDB Operation class* author HyoJung* date …

进程的奥德赛:并发世界中的核心概念与动态管理

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua&#xff0c;在这里我会分享我的知识和经验。&#x…

图神经网络实战(2)——图论基础

图神经网络实战&#xff08;2&#xff09;——图论基础 0. 前言1. 图属性1.1 有向图和无向图1.2 加权图和非加权图1.3 连通图和非连通图1.4 其它图类型 2. 图概念2.1 基本对象2.2 图的度量指标2.2 邻接矩阵表示法 3. 图算法3.1 广度优先搜索3.2 深度优先搜索 小结系列链接 0. 前…

《Effective C++》条款44

将与参数无关的代码抽离templates 存在这样一种类&#xff1a; template<class T,int n> class A { public:...int func(){...cout << n * n << endl;} }; 和这样的两种实例化对象&#xff1a; A<int, 5> a1; a1.func(); A<int, 10> a2; a2.…

力扣hot10---大根堆+双端队列

题目&#xff1a; 大根堆思路&#xff1a; 维护最大值&#xff0c;应该首先想到大根堆。C中对应着priority_queue&#xff0c;这里用pair<int,int>来记录对应的值和在nums中的索引。所以有priority_queue<pair<int,int>> q。在大根堆中&#xff0c;用q.top()…

使用axios结合access_token和refresh_token进行无感刷新

这里利用到的主要是 axios 请求失败的config配置可以记住本次请求的参数&#xff0c;以及利用拦截器&#xff0c;等待刷新完后通过 axios(config) 再次发起请求。 小技巧&#xff1a;将每次请求失败的config和promise的resolve参数存放到数组中&#xff0c;等待刷新token完成再…

【框架学习 | 第一篇】一篇文章读懂MyBatis

文章目录 1.Mybatis介绍1.1Mybatis历史1.2Mybatis特点1.3与其他持久化框架对比1.4对象关系映射——ORM 2.搭建Mybatis2.1引入依赖2.2创建核心配置文件2.3创建表、实体类、mapper接口2.4创建映射文件2.4.1映射文件命名位置规则2.4.2编写映射文件2.4.3修改核心配置文件中映射文件…

vue中v-if和v-for优先级

在Vue中&#xff0c;v-for的优先级高于v-if。这意味着在同一个元素上使用v-if和v-for时&#xff0c;v-for将首先被解析&#xff0c;然后是v-if。 下面是一个代码示例&#xff1a; <template><div><div v-for"item in items" v-if"item.isDispl…

python七大爬虫程序

一&#xff0c;爬取豆瓣电影信息 import random import urllib.request from bs4 import BeautifulSoup import codecs from time import sleepdef main(url, headers):# 发送请求page urllib.request.Request(url, headersheaders)page urllib.request.urlopen(page)conten…

priority_queue 优先级队列

从大到小排序&#xff1b; #include<cstdio> #include<queue> using namespace std; priority_queue <int> q; int main() {q.push(10),q.push(8),q.push(12),q.push(14),q.push(6);while(!q.empty())printf("%d ",q.top()),q.pop(); }输出 14 1…

Linux基本命令

一、基本命令 修改mysql端口号 vim /etc/my.cnf云服务器ssh端口修改 vim /etc/ssh/sshd_config1.1 关机和重启 关机 shutdown -h now 立刻关机 shutdown -h 5 5分钟后关机 poweroff 立刻关机重启 shutdown -r now 立刻重启 shutdown -r 5 5分钟后重启 reboot 立刻重启1.2…

C++中erase、reverse的常用用法

reverse(start,end);该式子会将[start,end)范围内的字符串进行翻转。 注意&#xff1a;reverse函数仅适用于双向迭代器的容器&#xff0c;例如vector、list、deque等&#xff0c;reverse逆转后&#xff0c;原范围的迭代器仍然有效。 #include <iostream> #include <…

【python--读取文件夹下所有文件读取关键词】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;Python &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; python练习题 抽取关键词 抽取关键词 import os import json import pandas as pd# 指定文件夹路径和关键…

代码随想录Day21 | Leetcode216 组合总和III、Leetcode17 电话号码的字母组合

一、第一题 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#xff0c;组合可以以任何顺序返回。示例 1: 输入: k 3, n 7 输出: [[1,…