Python 我在从json文件读取信息时遇到问题
我将汽车电脑中的数据保存到json文件中。(例如,每分钟发动机转数。) 我的文件json如下所示:Python 我在从json文件读取信息时遇到问题,python,json,pandas,Python,Json,Pandas,我将汽车电脑中的数据保存到json文件中。(例如,每分钟发动机转数。) 我的文件json如下所示: {"Clock": "17:37:42", "Value": 801.0} {"Clock": "17:37:43", "Value": 791.0} {"Clock": "17:37:45", "Value": 766.0} {"Clock": "17:37:46", "Value": 788.0} {"Clock": "17:37:47", "Value": 792.0} .... def
{"Clock": "17:37:42", "Value": 801.0}
{"Clock": "17:37:43", "Value": 791.0}
{"Clock": "17:37:45", "Value": 766.0}
{"Clock": "17:37:46", "Value": 788.0}
{"Clock": "17:37:47", "Value": 792.0}
....
def animate(i):
data=[]
with open('rpm.json') as f:
data=json.dumps(f)
data = pb.DataFrame(data)
clock=data[(data['Ora']=='%H:%M:%S')]
clock["datestamp"]=np.array(clock['%H:%M:%S']).astype("datetime64[s]")
dateClock=(clock["datesteam"]).tolist()
value = data[(data['Value'] == rpm.value.magnitude)]
value["datestamp"] = np.array(value[rpm.value.magnitude]).astype("datetime64[s]")
datevValue = (value["datesteam"]).tolist()
a.clear()
a.plot_date(dateClock, clock["Clock"])
a.plot_date(dateValue, value["Value"])
我必须阅读这些信息并将其放在图表中。
你能帮我一把吗?我会非常感激的
我将python语言用于特定的库:tkinter、matplotlib等
我的代码部分如下所示:
{"Clock": "17:37:42", "Value": 801.0}
{"Clock": "17:37:43", "Value": 791.0}
{"Clock": "17:37:45", "Value": 766.0}
{"Clock": "17:37:46", "Value": 788.0}
{"Clock": "17:37:47", "Value": 792.0}
....
def animate(i):
data=[]
with open('rpm.json') as f:
data=json.dumps(f)
data = pb.DataFrame(data)
clock=data[(data['Ora']=='%H:%M:%S')]
clock["datestamp"]=np.array(clock['%H:%M:%S']).astype("datetime64[s]")
dateClock=(clock["datesteam"]).tolist()
value = data[(data['Value'] == rpm.value.magnitude)]
value["datestamp"] = np.array(value[rpm.value.magnitude]).astype("datetime64[s]")
datevValue = (value["datesteam"]).tolist()
a.clear()
a.plot_date(dateClock, clock["Clock"])
a.plot_date(dateValue, value["Value"])
正如@Josh Gordon在评论中指出的,您没有有效的json文件。一种解决方案是通过如下方式封装dicts来修复格式
{"data":[
{"Clock": "17:37:42", "Value": 801.0},
{"Clock": "17:37:43", "Value": 791.0},
{"Clock": "17:37:45", "Value": 766.0},
{"Clock": "17:37:46", "Value": 788.0},
{"Clock": "17:37:47", "Value": 792.0}
]}
另一种选择是逐个解析字典。如果您希望最后有一个数据帧,可以使用ast
模块中的literal\u eval
函数来读取每一行
import ast
data = pd.DataFrame()
f = open('rpm.json')
for line in f:
data = data.append(ast.literal_eval(line), ignore_index=True)
f.close()
您应该得到如下所示的数据帧,从那里可以很容易地绘制图形
In [1]: data
Out[1]:
Clock Value
0 17:37:42 801.0
1 17:37:43 791.0
2 17:37:45 766.0
3 17:37:46 788.0
4 17:37:47 792.0
正如@Josh Gordon在评论中指出的,您没有有效的json文件。一种解决方案是通过如下方式封装dicts来修复格式
{"data":[
{"Clock": "17:37:42", "Value": 801.0},
{"Clock": "17:37:43", "Value": 791.0},
{"Clock": "17:37:45", "Value": 766.0},
{"Clock": "17:37:46", "Value": 788.0},
{"Clock": "17:37:47", "Value": 792.0}
]}
另一种选择是逐个解析字典。如果您希望最后有一个数据帧,可以使用ast
模块中的literal\u eval
函数来读取每一行
import ast
data = pd.DataFrame()
f = open('rpm.json')
for line in f:
data = data.append(ast.literal_eval(line), ignore_index=True)
f.close()
您应该得到如下所示的数据帧,从那里可以很容易地绘制图形
In [1]: data
Out[1]:
Clock Value
0 17:37:42 801.0
1 17:37:43 791.0
2 17:37:45 766.0
3 17:37:46 788.0
4 17:37:47 792.0
您好,请尝试一下,您的json文件实际上是这样的吗?因为这不是有效的json。请尝试
json.load(f)
。dumps函数用于将对象写入JSON字符串。John Gordon,是的,这就是JSON文件的外观各个字典的语法都很好;问题是它们在文件中是独立的对象,json不允许这样做。它需要一个(并且只有一个)顶级对象。在这种情况下,您可能希望将所有dict都包含在一个列表中,即[{},{},{}]
Hi try这就是json文件的实际外观吗?因为这不是有效的json。请尝试json.load(f)
。dumps函数用于将对象写入JSON字符串。John Gordon,是的,这就是JSON文件的外观各个字典的语法都很好;问题是它们在文件中是独立的对象,json不允许这样做。它需要一个(并且只有一个)顶级对象。在这种情况下,您可能希望将所有dict都包含在一个列表中,即[{},{},{}]