import csv
import numpy as np
import pandas as pd
import urllib.request
import time
x = urllib.request.urlopen("https://forex.1forge.com/1.0.3/quotes?pairs=EURUSD,EURJPY,GBPUSD,USDCAD,GBPJPY,USDJPY,AUDUSD,&api_key=KEY")
df = pd.read_csv(x,header=None, sep=',',
infer_datetime_format=True)
starttime=time.time()
while True:
print (df)
time.sleep(60.0 - ((time.time() - starttime) % 60.0))
我编写此代码的目的是从URL中提取数据并将其放置在Pandas Dataframe中。然后,每隔一分钟,用时间索引将信息从URL更新到数据框。目前,我能够将原始数据提取到dataFrame中,但是当我所使用的计时器正在调用他的信息时,它将重复之前被调用的内容,而不是进行更新。我获得的数据也非常复杂且混乱,因此我什至无法索引开始时间。
如果我能指出我在哪里可以学习如何清理datframe中的信息以及如何调用放入数据框时更新的数据,那么将不胜感激。谢谢阅读!
答案 0 :(得分:0)
首先,它看起来像一个真正的API密钥,您不应共享它。
您共享的代码不会重复请求URL。仅while True
循环中的行会重复执行。在您的代码中,以下是发出请求并根据响应建立DataFrame
的行:
x = urllib.request.urlopen("https://forex.1forge.com/1.0.3/quotes?pairs=EURUSD,EURJPY,GBPUSD,USDCAD,GBPJPY,USDJPY,AUDUSD,&api_key=KEY")
df = pd.read_csv(x,header=None, sep=',',
infer_datetime_format=True)
编辑:关于您有关如何开始清除数据的问题,我认为pandas
official cheat sheet不错。
答案 1 :(得分:0)
该网站的数据看起来像是JSON格式。
另外,您提取数据的操作不在while循环之外,因此您只提取了一次但每分钟打印一次。
尝试一下:
import pandas as pd
import time
while True:
df = pd.read_json("https://forex.1forge.com/1.0.3/quotes?pairs=EURUSD,EURJPY,GBPUSD,USDCAD,GBPJPY,USDJPY,AUDUSD,&api_key=KEY")
print (df)
time.sleep(60)