欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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')   下一行,否则保存图片为空白。