对电化学稳态阻抗谱(EIS)的数据进行自动化处理并可视化作图/画图(科研投稿)

这篇博客介绍了如何利用Python自动化处理电化学稳态阻抗谱(EIS)数据,包括数据平均处理、模量和相位角计算,以及使用matplotlib进行数据可视化。博主分享了一键生成图表的代码,适用于CHI-660E电化学工作站的数据,强调了代码在Jupyter Notebook中的便利性,并提供了文件命名和数据读取的注意事项。
摘要由CSDN通过智能技术生成

写在前面

对于一个做防腐蚀涂层的化学材料人来说,
在做电化学实验的时候,我们会获得很多的电化学稳态阻抗谱(EIS),其中包含频率、实部、虚部,然后需要将这些EIS的数据进行平均值处理,接着模量等于实部和虚部的平方和再开根号,还有相位角是虚部除以实部的反正切函数的弧度转角度值,然后使用origin作图,作图后还要读取最低频率对应的模量值和负45°对应频率值来反应涂层的防腐蚀性能和抗阴极剥离能力。
在没有学习python用于办公自动化之前,都是采用漫长的复制黏贴,数据分列还有excel的多次函数才能实现,非常重复浪费时间,然后经过学习,我将这一个过程进行了自动化处理,使用glob对文件夹进行遍历,把数据整理好到excel的同时使用了matplotlib来进行数据可视化,做到了一键出图。
这个代码在Jupyter Notebook里面实现会比pycharm方便,因为只要在python3的文件的同个目录建立2个文件夹“Tafel”,丢进去即可,但是前提要先将每个电化学的txt文本数据进行统一的命名处理,类如EIS-blank WEP-30day-4.txt((EIS测试)(-)(样品名字)(-)(腐蚀时间)(-)(第几次数据)(.)(.)(txt))。
本文用的是CHI-660E电化学工作站得到的数据,如果不是,请研究一下如何用pandas.read_csv来读取你的测试的数据,并且将表头改为[‘0’, ‘1’, ‘2’],才可以套用这个代码。

本文仅作为记录自己的学习代码后结合自己科研的分享,转载请说明出处,欢迎评论和讨论。

正文开始

EIS-汇总-平均-1个表单

汇总EIS

#导入数据表,对数据包进行命名
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import xlwt
import glob
import xlrd
#关键参数
#存储文件夹为和本测试文件相同的,名叫EIS的文件夹
datadir= r".\EIS"
#*号为该文件夹下所有文件
datadir_all = r".\EIS\*.txt"
#excel的保存名字
save_to_excel_1 = savename = r".\EIS数据汇总.xls"

#找到这个文件夹的所有txt文件
l1 = glob.glob(datadir_all)
# print(l1)

#将文件名进行必要的取舍
fname_list = []
for item in l1:
    fname_list.append(item.split('\\')[-1])
# print(fname_list)
#'EIS-0.2fMX_WEP-10day-0.txt'
characterizaitonlist =[] #测试手段,EIS
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)
# print(immersionlist)
#这里要用样品名字和浸泡天数作一个新的集合
#因为EIS的作图会涉及到天数
new_samplenamelist =[]
for i in range(len(samplenamelist)):
    item_name = samplenamelist[i] + immersionlist[i]
    new_samplenamelist.append(item_name)
print(new_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=None,sep='\t', names=['0', '1', '2'])
    # print(f)
    # Freq/Hz, Z'/ohm, Z"/ohm 
    # 令其为names=['0','1','2']方便检索
    # 这个是表头
    # [73 rows x 3 columns]
    # print(fname + '有%d行' % (len(f.loc[:, '1'])))
    # print(fname + '有%d列' % (len(f.loc[0, :])))
    name = characterizaitonlist[h]+samplenamelist[h]+immersionlist[h]+repeatlist[h]
    # 创建workbook,style_compression:表示是否压缩,不常用。encoding="utf-8",可以输入中文
    sheet = book.add_sheet(name, cell_overwrite_ok=True)
    #写数据
    for i in range(len(f.loc[0, :])):
        if i == 2:
            # -Z"/ohm
            column = f.loc[:, '%d' % i] * -1
        else:
            column = f.loc[:, '%d' % i]
        for j in range(len(column)):
            sheet.write(j, i, column[j])
    h = h + 1
#保存excel    
book.save(savename)  # 保存名字或者路径,要给一个“”的字符串
#提示
print("汇总成功","从txt原始数据整理及保存到excel表格,以文件名作为excel表头")
print("-"*20)

平均EIS的前三列数据

import xlrd
import re
import xlwt
#要读取的excel表格为上面做的汇总表
savename = save_to_excel_1 = r".\EIS数据汇总.xls"
#打开表格
book = xlrd.open_workbook(savename)
#读取所有表单的名字
sheet_list = book.sheet_names()
print('表单列表')
print(sheet_list)
#计算表格的个数
number = len(sheet_list)
print('总共有多少个表单')
print(number)
#不重复的样品的列表,也就是最终要做的图线
print('不重复的样品的列表,也就是最终要做的图线')
#导入上一步的samplenamelist并且去重,得到样品数量
samples = list(set(new_samplenamelist))
print(samples)

#设置新的excel表格
save_to_excel_2 = save_newname = r".\EIS的所有单元格平均后汇总.xls"
#打开表格
newbook = xlwt.Workbook(encoding="utf-8", style_compression=0)

for sample in samples: #5个样品
    print(sample) # cd= '0.2MX_WEP' #举例
    lists = [] #开一个空的列表
    #找到所有的这个样品的数据,形成一个新的列表
    findBd = re.compile(r'.*(%s).*'%sample) #正则表达式
    for item in sheet_list:
        ls = re.match(findBd,item)
        if ls == None:
            continue
        text = ls.string
        # print(text)
        lists.append
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值