2017-08-08 14 views
-1

in Python3.6如何創建一個時間序列的「最後」字符串,似乎按日期順序排列:ticker,date,open,high,low,last,volume,openinterest我如何繪製收盤價?

import urllib 
import re 
import numpy as np 
import requests 
import pandas as pd 

ticker = 'NGU17' 

url='https://www.barchart.com/proxies/timeseries/queryeod.ashx?symbol=' +ticker + '&data=daily&maxrecords=960&volume=contract&backadjust=false&daystoexpiration=1&contractroll=expiration' 

data = urllib.request.urlopen(url).read() 

data_clean = str(data.split()[len(data.split())-100:]).replace("b", "").replace("'","") 

print(data_clean) #ticker, date, open, high, low, last, volume, openinterest 

回答

-1

此代碼需要一些一般的 「清洗」,請看這裏:

import requests 
import pandas as pd 
import matplotlib.pyplot as plt 

ticker = 'NGU17' 

url='https://www.barchart.com/proxies/timeseries/queryeod.ashx?symbol={}\ 
&data=daily&maxrecords=960&volume=contract&backadjust=false&\ 
daystoexpiration=1&contractroll=expiration'.format(ticker) 


df = pd.read_csv(url, header = None) 
df.columns = ['ticker', 'date', 'open', 'high', 'low', 'last', 'volume', 'openinterest'] 

series = df.set_index("date")["last"] # <-- timeseries with last 

series.plot() 
plt.show() 

enter image description here

這個類似,但大熊貓可以讀取網址CSV過。 Pandas read_csv from url


更新在這裏你創建你傳遞給格式字符串

import requests 
import pandas as pd 
import matplotlib.pyplot as plt 

params = {"symbol":'NGU17', 
      "data":"daily", 
      "maxrecords":960, 
      "volume": "contract", 
      "backadjust": False, 
      "daystoexpiration": 1, 
      "contractroll":"expiration" 
     } 

url='https://www.barchart.com/proxies/timeseries/queryeod.ashx?\ 
symbol={0[symbol]}&data={0[data]}&maxrecords={0[maxrecords]}&volume={0[volume]}&backadjust={0[backadjust]}&\ 
daystoexpiration={0[daystoexpiration]}&contractroll={0[contractroll]}'.format(params) 

df = pd.read_csv(url, header = None) 
df.columns = ['ticker', 'date', 'open', 'high', 'low', 'last', 'volume', 'openinterest'] 

serie = df.set_index("date")["last"] 

serie.plot() 
plt.show() 
詞典另一個例子