我对python非常陌生,所以这可能是一个愚蠢的简单问题。我已经使用他们的API从EDGAR-Online导入了财务报表,并将其作为字典导入。我已经阅读了所有在词典中可以找到的内容,并了解了key:value关系。但是,数据采用以下格式:
“ {'result':{'totalrows':4,'rows':[{'rownum':1,'values':[{'field':'basicepsnetincome','value':0.77},{'字段”:“ costofrevenue”,“值”:432592000.0},{“字段”:“ dilutedepsnetincome”,“值”:0.76},{“字段”:“ ebit”,“值”:28455000.0},{“字段” :'grossprofit','value':186708000.0},{'field':'incomebeforeextraordinaryitems','value':22622000.0},{'field':'incomebeforetaxes','value':31356000.0},{'field':'所得税”,“值”:8734000.0},{“字段”:“ netincome”,“值”:22622000.0},...“
“字段”和“值”是我对词典的有限理解的键,但这意味着它们是同一键的重复。无论如何,我试图找出如何从上述数据中提取值,例如“ ebit”,其值为“ 28455000.0”。我认为应该是{'ebit':28455000.0},然后'ebit'是引用28455000.0的键。我们将非常感谢您提供有关如何从上述数据集中提取诸如ebit之类的数据点的任何帮助,这些帮助可以引用一个变量,然后在计算中使用。
使用过的requests.get
import pandas as pd
import requests
IS = requests.get(https://datafied.api.edgar-online.com/v1/corefinancials?
primarysymbols=MSFT&appkey={APPKEY}).json()
返回上面列出的数据。
指向EDGAR API文档的可能有用的链接-https://developer.edgar-online.com/docs/v1#nav8
从此站点返回的json具有一个奇怪的结构,但是您可以稍作努力就可以到达它:
import json
from jsonpath_ng import jsonpath, parse
IS = """[your json snippet above, converted into valid json]"""
target = json.loads(IS)
fields = []
values = []
jsonpath_expr = parse('result[*].rows[*].values')
for match in jsonpath_expr.find(target):
for i in match.value:
for index, element in enumerate(i.values()):
if index % 2 == 0:
fields.append(element)
else:
values.append(element)
for f, v in zip(fields,values):
print(f,' - ', v)
输出:
basicepsnetincome - 0.77
costofrevenue - 432592000.0
dilutedepsnetincome - 0.76
ebit - 28455000.0
grossprofit - 186708000.0
incomebeforeextraordinaryitems - 22622000.0
incomebeforetaxes - 31356000.0
incometaxes - 8734000.0
netincome - 22622000.0