Очистка текста из URL-адреса в виде CSV, а затем представление его в виде кадра данных Pandas - PullRequest
0 голосов
/ 01 ноября 2018
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, но когда он вызывает информацию по таймеру, который я сделал, он повторяет то, что было вызвано ранее, и не обновляется. Данные, которые я получаю, также очень запутанные и запутанные, поэтому я не смог даже индексировать время для начала.

Если бы я мог указать направление, в котором я могу узнать, как очистить информацию в кадре данных и как вызывать данные, которые обновляются при помещении в кадр данных, это было бы очень полезно. Спасибо за прочтение!

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Похоже, данные с сайта представлены в формате 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) 
0 голосов
/ 01 ноября 2018

Во-первых, это было похоже на настоящий ключ 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 , на мой взгляд, неплох.

...