2017-02-26 68 views
-1

基本上我有一个输出格式为.raw的机械测试数据,我想用Python访问它。阅读和分裂一个.raw文件进行数据处理

该文件需要使用分隔符分隔“;”所以它包含13列。 通过这样做的想法是索引和拉出所需的信息,在我的情况下是“扩展mm”和“加载N”值作为数组在第41行,以创建情节。

我从来没有使用.raw文件,我不知道该怎么做。

文件可以在这里下载: https://drive.google.com/file/d/0B0GJeyFBNd4FNEp0elhIWGpWWWM/view?usp=sharing

希望有人能帮助我在那里!

回答

1

你的文件看起来基本上像.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 
.... 
+0

但是为什么它会使负载N中的最后多个值有两个点? 像最后一行: 853 310.378 -8.992.958 这使我麻烦,因为我想将每列定义为包含整数而不是另一个问题的字符串。 –

+0

也可以在您自己的输出中看到,Extension中的值不对应于实际值。不知何故代码将11.8284转换为118.284。你知道如何解决这个问题吗? –

+0

我很惊讶。如果你用文本编辑器打开文件,你可以看到'Extension mm'的firts值是-118.284。其余部分,这些值与文件中的完全相同。 pandas有一个函数允许你改变列的类型(例如'df ['Load N'] = df ['Load N']。astype(int)')。但这些价值观并不那么简单。也许是另一个问题的主题。 –

1

您可以将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.

+0

可以使用行[2]获取扩展值和行[3]以获取加载N值 – Rednivrug