最近,我开始使用Python评估一些数据。但是,评估和处理我记录的数据似乎很复杂。
例如,我的.txt文件包含:
1551356567 0598523403 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1551356567 0598523436 0000003362 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1551356567 0598523469 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1551356567 0598523502 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1551356567 0598523535 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1551356567 0598523766 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1551356567 0598523799 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1551356567 0598523832 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1551356567 0598523865 0000003314 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1551356567 0598523898 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1551356567 0598523931 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1551356568 0598524756 0000003384 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
重要的值仅是第三列(带有3362)和第一列(1551 ...),其中第三列应为x轴,第一列为y轴。只有值不等于0的行才重要。这个想法是创建一个循环,在第三列中搜索值,如果有一个值== 0,则此值应保存在x列表(x)中,而相应的y值保存在y-list中(y)。
目前,我用于读取和操作数据的脚本如下:
import numpy as np
rawdata = np.loadtxt("file.txt")
num_lines = sum(1 for line in open("file.txt"))
with open("file.txt") as hv:
line = hv.readline()
x = list()
y = list()
i = 1
j = 0
while line != num_lines:
if rawdata[j][2] != 0:
x = x.append(rawdata[j][2])
y = x.append(rawdata[j][0])
else:
j += 1
if i == num_lines:
break
i += 1
print(x)
print(y)
我认为存在一些局部和全局变量问题,但是我无法解决它们,只能说出用新值“更新”我的列表。最后应该只有一个列表:
[3362, 3314, 3384] for x and
[1551356567, 1551356567, 1551356568] for y
您对我如何“更新”列表有任何建议吗?
答案 0 :(得分:1)
在阅读每一行时,请在空白处将其拆分,并将每一列转换为整数:
x = []
y = []
with open('file.txt') as f:
for line in f:
data = [int(col) for col in line.split()]
if data[2] != 0:
x.append(data[2])
y.append(data[0])
print(x)
print(y)
输出:
[3362, 3314, 3384]
[1551356567, 1551356567, 1551356568]