2. 控制台复位

有时,由于脚本代码或者其他原因,可能引发严重错误,比如系统运行时出现死循环或崩溃问题。

如图 3-4 所示,单击 IDE 右侧中部的“ Restart”下拉菜单和按钮,控制台重新复位即可。

3.2 案例3-2:增强版“hello,zwiang”

下面我们运行一个增强版的“ hello,ziwang”。

 单击工具栏的“读取”按钮,打开“ py_demo\”目录下的 py302.py脚本文件。

 单击工具栏中部的绿色“ ▶”运行按钮。

案例 3-2.py 脚本文件很简单,核心程序才十几行,不过功能非常强大,除输出文字“ hello”等信息外,还提供中文输出,以及检测系统多个重量级模块(比如 Opencv、 Plotly、 Pygame、 Pandas 等)是否安装成功和版本是多少。

# -*- coding: utf-8 -*-
import sys,os,re
import cv2
import arrow,plotly
import pandas as pd
import tushare as ts
import pygame
print("hello,zwPython 2017")
print("hello,TopQuant,TopFootball")
print("极宽量化回溯系统,极宽足彩量化分析系统")
print("")
print("Python ver:",sys.version)
print("")
print("re ver:",re.__version__)
print("arrow:",arrow.__version__)
print("plotly:",plotly.__version__)
print("")
print("pandas ver:",pd.__version__)
print("tushare ver:",ts.__version__)
print("")
print("pygame ver:",pygame.ver)
print("opencv ver:",cv2.__version__)

如果案例 3-2 运行无误,输出面板,则结果如下(不同版本,细节略有差别):
 

hello,zwPython 2017
hello,TopQuant,TopFootball
极宽量化回溯系统,极宽足彩量化分析系统
Python ver: 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55)
[MSC v.1900 64 bit (AMD64)]
re ver: 2.2.1
arrow: 0.10.0
plotly: 2.0.0
pandas ver: 0.19.1
tushare ver: 0.6.2
pygame ver: 1.9.2b1
opencv ver: 3.1.0

案例 3-2 表明,即使是初学者,采用 Basic 的过程模式编写简单代码,也能完成很复杂的功能。

3.3 案例3-3:列举系统模块库清单

案例 3-3 文件名是 py_demo\py303mlst.py,代码很简单,如下所示:

# -*- coding: utf-8 -*-
import numpy as np
import scipy as sp
import pandas as pd
import pip
# =======================
x10=pip.get_installed_distributions();
df=pd.DataFrame();
df['name']=x10
print(df.head())
df.to_csv('tmp/m10.csv',index=False)
运行结果如下:
name
0 3to2 1.1.1
1 zope.interface 4.3.2
2 zipline-cn-databundle 0.4
3 zict 0.1.0
4 zarr 2.1.3

运行后,会在 tmp 目录生成一个名称为 m10.csv 的数据文件,文件里面是当前 zwPython 所安装的第三方模块库名称和版本号。在《 zwPython用户手册》中, 《 zwPy3.5 内置模块库列表》就是这样完成的。
案例 3-3 代码虽然简单,但调用了 Pandas(潘达思)数据分析模块,以及很少在程序中直接调用的 pip 模块库,来获取内置模块清单。

案例 3-3 是笔者在编程中实际使用的脚本程序,大家可以自行保存,用于日常查看自己的 Python 运行环境的模块库安装情况。

3.4 案例3-4:常用绘图风格

可视化计算是数据分析的重要组成部分, Python 可视化计算、数据分析和量化分析最重要的模块是: Matplotlib。

如今,虽然新一代绘图模块 Plotly 横空出世,且在互动性方面具有压倒性的优势,但由于历史原因, Pandas(潘达思)数据分析模块和很多第三方内置的绘图模块还是使用 Matplotlib,绘制一般的简单图形,还是使用Matplotlib 比较方便。

老版本的 Matplotlib 默认的绘图风格与现代设计风格有些差距,因此,需要增加一些扩展风格包。 2017 年 1 月,期待已久的 Matplotlib 2.0 终于发布,在风格方面有所优化。

通常, Matplotlib 的绘图风格只有几种:

'bmh','dark_background','fivethirtyeight','ggplot','grayscale
','default'。
zwPython 将 Matplotlib 的绘图风格增加到 20 多种:
'dark_background', 'seaborn-colorblind', 'classic', 'grayscale',
'seaborn-dark-palette','seaborn-ticks','fivethirtyeight','seaborn
-paper','seaborn-poster','seaborn-white','seaborn-muted','seaborn
-notebook','seaborn-dark','bmh','ggplot','seaborn-darkgrid','seab
orn-whitegrid','seaborn-bright','seaborn-pastel','seaborn-talk','
seaborn-deep'

以上风格,除 Matplotlib 调用外,也可直接应用到 Pandas 绘图语句当中,需要注意的是,使用不同的版本、处于不同的 Python 运行环境时,以上具体参数在细节方面会有所差异。

案例 3-4 文件名为 py304dr.py, 代码使用 Matplotlib 绘图指令进行绘图,全部代码如下:
 

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import pandas as pd
def dr_xtyp(_dat):
#xtyp=['bmh','dark_background','fivethirtyeight','ggplot',
'grayscale','default'];
for xss in plt.style.available:
plt.style.use(xss);print(xss)
plt.plot(_dat['Open'])
plt.plot(_dat['Close'])
plt.plot(_dat['High'])
plt.plot(_dat['Low'])
fss="tmp\\stk001_"+xss+".png";plt.savefig(fss);
plt.show()
# =======================
df = pd.read_csv('dat\\appl2014.csv',index_col=0,parse_dates=
[0],encoding='gbk')
d30=df[:30];
dr_xtyp(d30);

如图 3-5 所示,运行后会在 tmp 目录下生产一系列各种不同风格的图形,可以保存一下,作为日后编程绘图的参考。

3.5 案例3-5:Pandas常用绘图风格

案例 3-5 文件名为 py305drpd.py,使用 Pandas(潘达思)数据分析模块内置的 plot 命令绘制图形,代码如下:

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import pandas as pd
def dr_xtyp(_dat):
#xtyp=['bmh','dark_background','fivethirtyeight','ggplot',
'grayscale','default'];
for xss in plt.style.available:
plt.style.use(xss);print(xss)
_dat['Open'].plot();
_dat['Close'].plot();
_dat['High'].plot();
_dat['Low'].plot();
fss="tmp\\stk001_"+xss+"_pd.png";plt.savefig(fss);
plt.show()
# =======================
df = pd.read_csv('dat\\appl2014.csv',index_col=0,parse_dates=
[0],encoding='gbk')
d30=df[:30];
dr_xtyp(d30);
案例 3-5 的运行结果与案例 3-4 类似,在此不再赘述。
比较案例 3-4 和案例 3-5 两段程序,只有以下语句不同:
plt.plot(_dat['Open'])
plt.plot(_dat['Close'])
plt.plot(_dat['High'])
plt.plot(_dat['Low'])
_dat['Open'].plot();
_dat['Close'].plot();
_dat['High'].plot();
_dat['Low'].plot();

运行后截图,除 Pandas 优化的细节外,两者风格大体相同。具体细节,请读者自己参看 tmp 目录下的相关图片。

Pandas(潘达思)数据分析模块是最重要的数据分析工具,大家必须了解其基本功能和常用的函数命令。

所以,笔者特意增加了案例 3-5,强调 Padnas(潘达思)数据分析软件的使用,如果还有读者对于案例 3-5 有困惑,请补习一下 Padnas(潘达思)基础知识,再继续深入学习。

3.6 案例3-6:常用颜色表cors

下面我们再介绍一些常用的颜色组合,在极宽 zsys 模块中内置了多种常用的颜色组合,以下是 zsys 模块颜色组合设置的部分相关代码:

import matplotlib.colors
from matplotlib import cm
cors_brg=cm.brg(np.linspace(0,1,10))
cors_hot=cm.hot(np.linspace(0,1,10))
cors_hsv=cm.hsv(np.linspace(0,1,10))
cors_jet=cm.jet(np.linspace(0,1,10))
cors_prism=cm.prism(np.linspace(0,1,10))
cors_Dark2=cm.Dark2(np.linspace(0,1,10))

需要注意的是,以上的颜色组合代码没有使用常规的 rgb 参数设置模式,而是使用的 np.linspace 函数,从 Matplotlib 的 Corlormap 中提取 10 个颜色,组成一个系列的 10 种颜色,如果用户的参数超过 10 种,系统会自动循环使用每组的 10 个颜色。

大家也可以参考上面的 np.linspace 函数,并在案例 3-6 中使用 20、 30、50 等其他参数,看看具体效果有什么不同。

案例 3-6 文件名为 py306_cors.py,说明如何绘制 Matplotlib 内置的颜色图谱,以及极宽量化模块内置的颜色组合。

颜色是图表设计的一个核心部分,事实上,现代图表与传统图表的一个重要差异就是颜色的组合, Matplotlib 2.0 升级版本,其中最重要的升级之一就是颜色体系更加适合现代的设计风格。

案例 3-6 内置了以下两个函数。        

 dr_cormap()函数:绘制 Matplotlib 内置的颜色图谱,不同的 Python环境,因 Matplotlib 版本和辅助模块的差异,具体数目会有所不同。

 dr_cors_sys()函数: 绘制极宽量化模块内置的颜色组合,一共有 8 种。dr_cormap()函数代码如下:

def dr_cormap(fcor='dat/cormap.dat'):
#font = FontProperties(fname=r"c:\windows\fonts\simsun.
ttc", size=14)
clst=zt.f_lstRdTxt(fcor);
ds=pd.Series(range(5,25));
for xc,cor in enumerate(clst):
css=cor[0]
xss='cm.'+str(css)+'(np.linspace(0,1,10))'
print(xc,'#',css,xss)
cor2=eval(xss)
#print(css,xss,cor2)
ds.plot(kind='bar',rot=0,color=cor2)
plt.savefig('tmp/cm_'+css+'.png')

程序运行后,会在 tmp 目录下生成数十个不同的颜色组合图形文件,大家可以选择自己喜欢的图形,参考极宽的颜色设置代码,添加自己喜欢的颜色组合。

案例 3-6 也是笔者在工作中实际使用的代码程序,大家可以浏览 dat/ cormap.dat 文件,查看相关的颜色参数数据,保存好输出的图形文件,特别是自己喜欢的一些颜色效果,以供日后编程参考。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐