我需要在Python中读取一个.dat文件。该文件共有3列,包含数百行数据。第二列和第三列分别由两个字符和一个浮点数组成,我想提取的就是这两个字符后面的浮点数——第二列总是以"SA"开头,第三列总是以"SC"开头。目前我是通过加载数据并逐行循环提取数值,但是否有更好的方法呢?
一旦数据清洗完成,我还想对结果进行一些计算操作,特别是计算平均值。
以下是该.dat文件中的两行示例:
9:01:15 SA7.998 SC7.968
9:01:16 SA7.998 SC7.968
这是我当前正在使用的代码:
import numpy as np
import os.path
from statistics import mean
time=[]
s_1=[]
s_2=[]
s1=[]
s2=[]
r1=[]
r2=[]
avgg=[]
# Reading data from file
with open('serial_2.dat','r') as f:
dat=f.readlines()
for i in dat:
y=i.split() # cleaning and getting columns without spaces
time.append(y[0])
s1.append(y[1])
s2.append(y[2])
#getting only numbers without strings (SA and SC)
for counter in (range(0,len(s1))):
S_1=s1[counter]
r1.append(S_1[2:])
r1_f=np.array(r1, dtype='float32')
S_2=s2[counter]
r2.append(S_2[2:])
r2_f=np.array(r2, dtype='float32')
avgg=r1_f+r2_f/2
print(np.mean(avgg))