Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我在从json文件读取信息时遇到问题_Python_Json_Pandas - Fatal编程技术网

Python 我在从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

我将汽车电脑中的数据保存到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 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都包含在一个列表中,即
[{},{},{}]