python怎么读取csv⽂件做股票成交量图-Python利⽤Numpy读
取CSV⽂件绘制股票K线
今天测试了⼀下利⽤Python绘制股票K线的功能,⽹上有很多⼈已经分享了这⽅⾯的源码,直接拿来⽤就可以了,不过我在测试的过程中发现了⼏个问题:
⼀、matplotlib.finance的问题
⽹上的源码基本上都是这样写的:
from matplotlib.finance import quotes_historical_yahoo_ohlc, candlestick_ohlc
可是在我的电脑上运⾏都会提⽰:ModuleNotFoundError: No module named 'matplotlib.finance'
原因是:从matplotlib 2.2.0版本开始,matplotlib.finance已经从matplotlib中剥离了,如果你要使⽤的话,需要单独安装这个包。
安装⽅法:
安装后,就可以直接使⽤from mpl_导⼊了。
⼆、numpy从CSV导⼊数据
最开始导⼊的时候,⽼是提⽰我:ValueError: could not convert string to float: 'close'
后来才发现,原来是我放了⼀⾏标题栏在⽂件中,删除后就可以了。
或者使⽤skiprows=1跳过⾸⾏就可以了。当然这个skiprows还可以跳过其他的⾏。
附CSV⽂件的格式:
三、最终源码
import datetime
import csv
import matplotlib.pyplot as plt
import mpl_finance as mpf
python怎么读取桌面上的文件import matplotlib.dates as mpd
import numpy as np
str2date =lambda x: mpd.date2num(datetime.datetime.strptime(x, '%Y/%m/%d').date())
data_list = np.loadtxt("nmp.csv",str,delimiter=",", skiprows=1)
columns = data_list[0]
quotes = [[str2date(d[0])] + [float(v) for v in d[1:-1]] for d in data_list[1:]]
fig,ax = plt.subplots(figsize=(6,4), facecolor=(0.5, 0.5, 0.5))
fig.subplots_adjust(bottom=0.2)
mpf.candlestick_ohlc(ax,quotes,width=0.4,colorup='r',colordown='g')
ax.xaxis_date()
ax.autoscale_view()
plt.a().get_xticklabels(), rotation=30)
plt.title("Shanghai Index")
plt.xlabel("Date")
plt.ylabel("Price")
plt.show()
附:
我将它改成了利⽤numpy读取csv⽂件的形式。另外,我将⽇期那⾥由原来的%m/%d/%Y改成了:%Y/%m/%d,这样和我从ricequant 下载的⽇期格式⼀致。
另外,还有读取特定列的功能:
四、成果展⽰:
平安银⾏⽇K线:
五、待完善的地⽅
这个代码不能产⽣5分钟的K线图,需要完善。
六、升级版本
下⾯是通过聚宽平台直接获取⽇线数据,然后⽣成K线。当然也可以获取分钟数据。
import pandas
import matplotlib
import mpl_finance
import matplotlib.pyplot as plt
from jqdatasdk import *
matplotlib.style.use('ggplot')
auth('138xxxxxxxx','a4')
stock_code = '600031.XSHG'
start_date = '2018-08-17'
end_date = '2019-08-17'
def getData():
"""通过聚宽平台获取数据"""
quotes = get_price(stock_code, start_date, end_date, frequency='daily',skip_paused=False,fq='pre') return quotes
def stockPricePlot(df):
#获取ohlc,同样带了时间的index
ohlc = df[['open', 'high', 'low', 'close']]
ohlc.index.name = 'timestamp'
print(ohlc.head())
ohlc = set_index()
print(ohlc.head())
ohlc['timestamp'] = ohlc['timestamp'].map(matplotlib.dates.date2num)
#⽣成100天均线数据
df['100ma'] = df['close'].rolling(window=100,min_periods=0).mean()
ax1 = plt.subplot2grid((6,1),(0,0),rowspan=5,colspan=1)
ax2 = plt.subplot2grid((6,1),(5,0),rowspan=5,colspan=1,sharex=ax1)
mpl_finance.candlestick_ohlc(ax=ax1, quotes=ohlc.values, width=0.20, colorup='g', colordown='r') ax1.plot(df.index,df['100ma'])
ax2.bar(df.index,df['volume'])
plt.show()
df = getData()
stockPricePlot(df)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论