python 读文件数据并画图
程序员文章站
2022-06-11 14:37:58
...
python 读文件数据并画图代码如下:
import pandas as pd
import matplotlib.pyplot as plt
import re
import os
import glob
filedir = os.listdir('./')
fileref = glob.glob(r'C:\Users\admin\Desktop\算例网格文件\qblcb参考\*.txt')
x='0_iL_12'
targetfile = [name for name in filedir if x in name]
for filename in targetfile:
keyword = re.search('x_(\d+\.\d+?|\d+?)_y',filename).group(1)
targetfileref = [name for name in fileref if keyword in name]
datafile = pd.read_csv(filename,sep = ' ',encoding = 'utf-8')
datafileref = pd.read_csv(targetfileref[0], sep = '\s{3}',names='01',skiprows=[0,1,2,3], encoding = 'ANSI',engine='python')
datafile.columns=['1','2','3','4','5','6','7','8']
plt.plot(datafile.iloc[10:,0],datafile.iloc[10:,4],'b-')
plt.plot(datafileref.iloc[:,0],(datafileref.iloc[:,1]+40)/100,'bo',markersize=12,markerfacecolor='none')
plt.xlabel('time(s)')
plt.ylabel('eta(m)')
sub=max(datafile.iloc[10:,4])-min(datafile.iloc[10:,4])
plt.xlim(33,39)
plt.ylim(0.35,0.45)
plt.title(keyword)
plt.savefig(keyword+'.png')
plt.show()
1.python 读数据文件比如text或者其他形式
os.listdir()函数读文件路径下所有文件,参数为函数路径
glob.blob()函数读目录下特定格式文件,参数为文件格式后缀
具体用法如:
filedir = os.listdir('./')
fileref = glob.glob(r'C:\Users\admin\Desktop\算例网格文件\qblcb参考\*.txt')
2.从文件列表中选择包含特定字符的文件组成列表
x='0_iL_12'
targetfile = [name for name in filedir if x in name]
targetfile所有文件都包含‘0_iL_12’字符。
3.读特定包含字符的文件数据,采用正则表达式
keyword = re.search('x_(\d+\.\d+?|\d+?)_y',filename).group(1)
#'x_(\d+\.\d+?|\d+?)_y'匹配整数或者浮点型数据
4.读文件数据
datafileref = pd.read_csv(targetfileref[0], sep = '\s{3}',names='01',skiprows=[0,1,2,3], encoding = 'ANSI',engine='python')
pd.read_csv()函数,返回类型为DataFrame类型
第一个参数为待读取目标文件,
sep参数:文件数据分隔符,本例数据为列间间隔为三个空格‘\s{3}’。如果不指定参数,则会尝试使用逗号分隔。分隔符长于一个字符并且不是‘\s+’,将使用python的语法分析器。
names参数给DataFrame列命名。用于结果的列名列表,如果数据文件中没有列标题行,就需要执行 header=None。names属性在header之前运行默认列表中不能出现重复,除非设定参数mangle_dupe_cols=True。
skiprows参数:跳过特定行读数据。需要忽略的行数(从文件开始处算起),或需要跳过的行号列表(从0开始)。
encoding参数:数据文件编码格式
engine=‘python’解决报错错误
ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support regex separators (separators > 1 char and different from '\s+' are interpreted as regex); you can avoid this warning by specifying engine='python'.
datafileref = pd.read_csv(targetfileref[0], sep = '\s{3}',names='01',skiprows=[0,1,2,3], encoding = 'ANSI')
5. plt.show()在plt.savefig(keyword+'.png') 下一行,否则保存图片为空白。
下一篇: C#模拟链表数据结构的实例解析