从CSV网址中清除文本,然后将其表示为Pandas Dataframe

时间:2018-11-01 00:34:09

标签: python pandas csv dataframe urllib

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中的信息以及如何调用放入数据框时更新的数据,那么将不胜感激。谢谢阅读!

2 个答案:

答案 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)