提问人:Marcelo Carvalho 提问时间:1/11/2023 更新时间:1/11/2023 访问量:16
依次优化 2 个循环
Optmizing 2 loops in sequence
问:
我正在尝试在 API 中收集投资基金的数据,有一个基金代码列表和一个我想要的格式的天数列表。
我在 For by day 和 For by fund 之后创建了一个例程。但是要完成所有数据帧,这需要我 30 分钟。
我想知道如何优化它
下面是代码的一部分:
dataPosicao_list 是天数列表,fundo_id_list是 API 识别的按 ID 划分的资金列表
df_geral = pd.DataFrame()
df_day = pd.DataFrame()
for day in dataPosicao_list:
#df_day = pd.DataFrame()
for fundo_id in fundo_id_list:
try:
url_api = f'https://modal-pp.totvs.amplis.com.br/amplisapi/ws/v2/rendavariavel/avista/movimentos/carteira/{fundo_id}/data/{day}?pagina=0&tamanhoPagina=100'
session_api = requests.Session()
response = session_api.get(url_api, verify=False)
payload_api = ''
headers_api = {'Content-Type': 'application/json',
'charset': 'UTF-8',
'Authorization': token }
posicoes_api = session_api.request('GET', url_api, headers = headers_api, data = payload_api)
posicoes = json.loads(posicoes_api.text)
df_total = pd.DataFrame()
for linha in posicoes['conteudo']:
try:
bolsa = linha['bolsa']['codigo']
except:
bolsa = "None"
try:
ativo = linha['ativo']['codigo']
except:
ativo = "None"
try:
bolsa_internacional = linha['bolsa']['bolsaInternacional']
except:
bolsa_internacional = "None"
try:
localidade = linha['bolsa']['localidade']['codigo']
except:
localidade = "None"
try:
moeda = linha['bolsa']['moeda']['internationalCode']
except:
moeda = "None"
try:
fundo = linha['carteira']['administrador']['codigoB3']
except:
fundo = "None"
try:
Fundo_ou_Clube = linha['carteira']['administrador']['administradorClubeInvestimento']
except:
Fundo_ou_Clube = "None"
try:
carteira = linha['carteira']['administrador']['codigo']
except:
carteira = "None"
try:
class_fundo = linha['carteira']['classificacaoFundo']['classificacao']
except:
class_fundo = "None"
try:
cota_fidic = linha['carteira']['classificacaoFundo']['tipoCotaFIDC']
except:
cota_fidic = "None"
try:
mov_cetip = linha['carteira']['codAtivoMnemonicoCetip']
except:
mov_cetip = "None"
try:
controlador = linha['carteira']['controlador']['codigo']
except:
controlador = linha['carteira']['controlador']
try:
custodiante = linha['carteira']['custodiante']['nome']
except:
custodiante = "None"
try:
data = linha['data']
except:
data = "None"
try:
nome_fundo = fundo_id
except:
nome_fundo = "None"
try:
taxa_performance = linha['carteira']['taxaPerformance']
except:
taxa_performance = "None"
try:
mercado = linha['mercado']['descricao']
except:
mercado = "None"
try:
calculo_corretagem_emulamentos = linha['corretagem']['calculaCorretagemEmolumentos']
except:
calculo_corretagem_emulamento = "None"
try:
porcentagemDevolucaoCorretagemCorretora = linha['corretagem']['porcentagemDevolucaoCorretagemCorretora']
except:
porcentagemDevolucaoCorretagemCorretora = "None"
try:
modalidade = linha['modalidadeMovimento']['descricao']
except:
modalidade = "None"
try:
preco = linha['preco']
except:
preco = "None"
try:
quantidade = linha['quantidade']
except:
quantidade = "None"
try:
valor_bruto = linha['valorBruto']
except:
valor_bruto = "None"
try:
id = linha['id']
except:
id = 'None'
serie = {'id' : id, 'controlador': controlador,'taxa_performance': taxa_performance, 'nome_fundo': nome_fundo, 'modalidade':modalidade, 'mercado': mercado, 'preco': preco, 'quantidade':quantidade, 'valor_bruto': valor_bruto, 'cota_fidic': cota_fidic,'porcentagemDevolucaoCorretagemCorretora': porcentagemDevolucaoCorretagemCorretora, 'calculo_corretagem_emulamentos': calculo_corretagem_emulamentos, 'data': data, 'custodiante':custodiante, 'controlador': controlador, 'mov_cetip': mov_cetip, 'bolsa': bolsa, 'ativo' : ativo, 'bolsa_internacional': bolsa_internacional, 'localidade': localidade , 'moeda': moeda, 'fundo': fundo, 'Fundo_ou_Clube': Fundo_ou_Clube, 'carteira': carteira, ' class_fundo': class_fundo }
serie = pd.Series(serie)
df_total = df_total.append(serie, ignore_index=True)
#df_geral = df_geral.append(df_total, ignore_index=True)
df_day = df_day.append(df_total, ignore_index=True)
except:
continue
df_geral = df_geral.append(df_day, ignore_index=True)
df_geral = df_geral.drop_duplicates(subset=['id'])
df_geral.head()
print(df_geral)
答: 暂无答案
评论