一、读取与保存文件
1、读取文件格式
numpy.loadtxt(
文件名,
delimiter = 分割符,
usecols = 选择列,
unpack = 是否解包(True/False),
dtype = 目标类型,
converters = 转换器
)
- unpack = False:最终会输出一个二维数组
- unpack = True:一列一维数组的集合
2、保存文件格式
numpy.savetxt(
文件名,
二维数组,
delimiter = 分隔符,
fmt=格式
)
3、练习代码
import numpy as np
a = np.arange(1, 10).reshape(3, 3)
v1, v2 = np.loadtxt(r"0=数据源/test1.csv", delimiter=',', usecols=(0, 2), unpack=True, dtype='i4')
print(v1, v2)
二、将数据文件制成K线图
1、K线图概念
From秒懂百科:
股市及期货市场中的K线图的画法包含四个数据,即开盘价、最高价、最低价、收盘价,所有的k线都是围绕这四个数据展开,反映大势的状况和价格信息。如果把每日的K线图放在一张纸上,就能得到日K线图,同样也可画出周K线图、月K线图。
2、数据文件的准备
我们都知道,Numpy默认支持的就是csv文件,这种数据文件是以“,”逗号分隔开字段的,也就是在同一行里面,逗号分隔开的就是不同列。
3、测试代码
import datetime as dt
import numpy as np
import matplotlib.pylab as mp
import matplotlib.dates as md
def dmy2ymd(dmy):
dmy = str(dmy, encoding='utf-8')
date = dt.datetime.strptime(dmy, '%d-%m-%Y').date()
ymd = date.strftime('%Y-%m-%d')
return ymd
dates, opening_prices, highest_prices, lowest_prices, closing_prices = np.loadtxt(
'0=数据源/beer_price.csv', delimiter=',',
usecols=(0, 1, 2, 3, 4), unpack=True,
dtype='M8[D], f8, f8, f8, f8',
converters = {0:dmy2ymd}
)
mp.figure('CandleStick', facecolor='lightgray')
mp.title('CandleStick', fontsize=20)
mp.xlabel('Date', fontsize=14)
mp.ylabel('Price', fontsize=14)
ax = mp.gca()
ax.xaxis.set_major_locator(
md.WeekdayLocator(byweekday=md.MO)
)
ax.xaxis.set_minor_locator(
md.DayLocator()
)
ax.xaxis.set_major_formatter(md.DateFormatter('%d %b %Y'))
mp.tick_params(labelsize=10)
mp.grid(linestyle=':')
dates = dates.astype(md.datetime.datetime)
rise = closing_prices - opening_prices >= 0.01
fall = opening_prices - closing_prices >= 0.01
fc = np.zeros(dates.size, dtype='3f4')
ec = np.zeros(dates.size, dtype='3f4')
fc[rise], fc[fall] = (1, 1, 1), (0, 0.5, 0)
ec[rise], ec[fall] = (1, 0, 0), (0, 0.5, 0)
mp.bar(dates, highest_prices-lowest_prices, 0, lowest_prices, color=fc, edgecolor=ec)
mp.bar(dates, closing_prices-highest_prices, 0.8, opening_prices, color=fc, edgecolor=ec)
mp.gcf().autofmt_xdate()
mp.show()
4、测试效果
最终就绘制成这样一个K线图
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)