如何绘制收盘价?

2024-05-08 21:45:28 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python3.6中,如何从这个字符串中创建一个“last”的时间序列,它似乎是按日期排列的: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

Tags: importcleanurldatadateasopenurllib
1条回答
网友
1楼 · 发布于 2024-05-08 21:45:28

这段代码需要一些常规的“清理”,请看这里:

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

与此类似,但熊猫也可以从url读取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()

相关问题 更多 >