我有一个JSON数据类型raw.JSON
{"time": 12.640, "name": "machine1", "value": 24.0}
{"time": 12.645, "name": "machine2", "value": 0.0}
{"time": 12.65002, "name": "machine3", "value": true}
{"time": 12.66505, "name": "machine4", "value": 1.345}
{"time": 12.67007, "name": "machine5", "value": 5.068}
{"time": 12.67508, "name": "machine4", "value": 1.075}
{"time": 12.6801, "name": "machine5", "value": 2.0868}
{"time": 12.6851, "name": "machine4", "value": 0.0}
{"time": 12.6901, "name": "machine5", "value": 12.633}
{"time": 12.69512, "name": "machine5", "value": 13.13}
{"time": 12.70013, "name": "machine3", "value": false}
{"time": 12.70515, "name": "machine3", "value": false}
{"time": 12.71016, "name": "machine3", "value": false}
{"time": 12.71517, "name": "machine5", "value": 131.633}
因此,在我的python脚本中,我能够生成逐行读取并生成一个列表
import json
data = [];
timestamp =[];
with open('raw.json') as f:
for line in f:
data.append(json.loads(line))
f.close()
for idx, val in enumerate(data):
time = data[idx]['time']
name = data[idx]['name']
value = data[idx]['value']
data_list = idx+1, time, name, value
print data_list
输出:
(1, 12.64, u'machine1', 24.0)
(2, 12.645, u'machine2', 0.0)
(3, 12.65002, u'machine3', True)
(4, 12.66505, u'machine4', 1.345)
(5, 12.67007, u'machine5', 5.068)
(6, 12.67508, u'machine4', 1.075)
(7, 12.6801, u'machine5', 2.0868)
(8, 12.6851, u'machine4', 0.0)
(9, 12.6901, u'machine5', 12.633)
(10, 12.69512, u'machine5', 13.13)
(11, 12.70013, u'machine3', False)
(12, 12.70515, u'machine3', False)
(13, 12.71016, u'machine3', False)
(14, 12.71517, u'machine5', 131.633)
我希望对这些数据进行排序,以便可以使用单独的列表(数组)。e、 g
machine1 = [12.640, 24.0];
machine2 = [12.645, 0.0];
machine3 = [
12.65002,true
12.70013,false
12.70515,false
12.71016,false
];
machine4 = [
12.66505 1.345
12.67508 1.075
12.6851 0.0
];
除此之外,我还可以如何直接搜索这个元组或列表来生成元数据,如machine1、machine 2等的sum/average
Sum_Machine1 = 24;
Sum_Machine2 = 0;....
第一种解决方案
下面是我如何处理这个问题的:
讨论
data
是一个dict
列表,其中包含name,time。。。defaultdict
是一种很好的计数方法。如果尚未创建int值,则将创建该值并将其赋值为0,非常方便。你应该查一下。第二种解决方案
这里有一种不同的方法:既然您的数据看起来像一个表,为什么不使用数据库来处理您的数据。这种方法的优点是你不必自己计算。
输出
讨论
SUM
、COUNT
和AVG
。添加到第一个解决方案
要回答这个问题:给定machine5,如何获取最后一个值?这样,我假设您希望将数据筛选到包含machine5的数据,然后按时间排序并选择最后一行。对于第一个解决方案,附加以下代码块并运行它:
不要忘记在脚本开头添加以下内容:
输出
讨论
如果不想按时间对行进行排序,请删除
sorted()
行,这将为您提供未排序的输出。使每一行成为一个类(不是严格必要但很好),重载cmp并使用sort
sort还有一个可选的比较函数。。
有更奇特的方法。。https://wiki.python.org/moin/HowTo/Sorting 但保持简单明了是件好事。
相关问题 更多 >
编程相关推荐