阅读和分裂一个.raw文件进行数据处理
基本上我有一个输出格式为.raw的机械测试数据,我想用Python访问它。阅读和分裂一个.raw文件进行数据处理
该文件需要使用分隔符分隔“;”所以它包含13列。 通过这样做的想法是索引和拉出所需的信息,在我的情况下是“扩展mm”和“加载N”值作为数组在第41行,以创建情节。
我从来没有使用.raw文件,我不知道该怎么做。
文件可以在这里下载: https://drive.google.com/file/d/0B0GJeyFBNd4FNEp0elhIWGpWWWM/view?usp=sharing
希望有人能帮助我在那里!
你的文件看起来基本上像.tsv,有40行要跳过。你可以试试吗?
import csv
#export your file.raw to tsv
with open('TST0002.raw') as infile, open('new.tsv', 'w') as outfile:
lines = infile.readlines()[40:]
for line in lines:
outfile.write(line)
或者,如果你想直接做一些数据分析的两列:
import pandas as pd
df = pd.read_csv("TST0002.raw", sep="\t", skiprows=40, usecols=['Extension mm', 'Load N'])
print(df)
输出:
Extension mm Load N
0 -118.284 0.1365034
1 -117.779 -0.08668576
2 -117.274 -0.1142517
3 -116.773 -0.1092401
4 -116.271 -0.1144083
5 -11.577 -0.1314806
6 -115.269 -0.03609632
7 -114.768 -0.06334914
....
您可以将RAW文件转换成CSV文件,然后使用csv模块记得设置delimeter ='',否则默认它将逗号作为分隔符
import csv with open('TST0002.csv', 'r') as csvfile: reader = csv.reader(csvfile, delimiter=' ') for row in reader: //this will read each row line by line print (row[0]) //you can use row[0] to get first element of that row.
可以使用行[2]获取扩展值和行[3]以获取加载N值 – Rednivrug
但是为什么它会使负载N中的最后多个值有两个点? 像最后一行: 853 310.378 -8.992.958 这使我麻烦,因为我想将每列定义为包含整数而不是另一个问题的字符串。 –
也可以在您自己的输出中看到,Extension中的值不对应于实际值。不知何故代码将11.8284转换为118.284。你知道如何解决这个问题吗? –
我很惊讶。如果你用文本编辑器打开文件,你可以看到'Extension mm'的firts值是-118.284。其余部分,这些值与文件中的完全相同。 pandas有一个函数允许你改变列的类型(例如'df ['Load N'] = df ['Load N']。astype(int)')。但这些价值观并不那么简单。也许是另一个问题的主题。 –