写在前面
对于一个做防腐蚀涂层的化学材料人来说,
在做电化学实验的时候,我们会获得很多的极化曲线的数据(LSV测试),然后需要将这些LSV曲线的数据进行平均值处理,然后对电流的绝对值取以10为底的对数,然后使用origin作图。
在没有学习python用于办公自动化之前,都是采用漫长的复制黏贴,数据分列还有excel的多次函数才能实现,非常重复浪费时间,然后经过学习,我将这一个过程进行了自动化处理,使用glob对文件夹进行遍历,把数据整理好到excel的同时使用了matplotlib来进行数据可视化,做到了一键出图。
这个代码在Jupyter Notebook里面实现会比pycharm方便,因为只要在python3的文件的同个目录建立2个文件夹“Tafel”,丢进去即可,但是前提要先将每个电化学的tet数据进行统一的命名处理,类如Tafel-blank WEP-30day-4.txt((Tafel测试)(-)(样品名字)(-)(腐蚀时间)(-)(第几次数据)(.)(.)(txt))。
本文用的是CHI-660E电化学工作站得到的数据,如果不是,请研究一下如何用pandas.read_csv来读取你的测试的数据,并且将表头改为[‘0’, ‘1’, ‘2’],才可以套用这个代码。
本文仅作为记录自己的学习代码后结合自己科研的分享,转载请说明出处,欢迎评论和讨论。
Tafel-汇总-平均-作图-1个表单
正文开始
把Tafel的txt文本转成excel来进行存储,表单名字为tafel的名字
#导入数据表,对数据包进行命名
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import xlwt
import glob
import xlrd
#关键参数
#存储文件夹为和本测试文件相同的,名叫TAFEL的文件夹
datadir= r".\TAFEL"
#*号为该文件夹下所有文件
datadir_all = r".\TAFEL\*.txt"
#excel的保存名字
save_to_excel_1 = r".\tafel数据汇总.xls"
#找到这个文件夹的所有txt文件
l1 = glob.glob(datadir_all)
# print(l1)
#将文件名进行必要的取舍
fname_list = []
for item in l1:
fname_list.append(item.split('\\')[-1])
# print(fname_list)
characterizaitonlist =[] #测试手段,tafel
samplenamelist = [] #样品名字
immersionlist=[] #浸泡时间
repeatlist=[] #重复相同样品
for fnam in fname_list:
cut_name = fnam.split('-')
characterizaitonlist.append(cut_name[0])
samplenamelist.append(cut_name[1])
immersionlist.append(cut_name[2])
repeatlist.append(cut_name[3].split('.')[0])
# print(samplenamelist)
#将txt的数据进行读取
h = 0
book = xlwt.Workbook(encoding="utf-8", style_compression=0)
for fname in fname_list:
fnamepath = datadir + r'\{0}'.format(fname) # 给文件增加路径
f = pd.read_csv(fnamepath,header=13,sep='\t', names=['0', '1', '2'])
# print(f)
# 从第13行开始,16-3
# Potential/V Current/A log(i/A)