Python股票处理之二_数据存盘
Python 股票处理之二 _
数据存盘
1. 说明
有些历史数据不用每次下载,可以存储到本地。尤其在调试阶段,省去了每测一遍都要下载数据的时间和流量。
Python
存储数据非常方便,完全不用考虑数据库的格式,存进去是那个结构,取出来还是那个结构,屏蔽了所有细节。
具体使用 HDF
格式,该格式可以存储不同类型的图像和数码数据的文件格式。
2. 安装相关库
123$ sudo apt-get install libhdf5-dev$ sudo pip install h5py$ sudo pip install --upgrade tables
3. 程序
1) 存储
12345678import tushare as tsimport pandas as pde = ts.get_today_all()print eh5 = pd.HDFStore('data/tmp.h5','w')h5['data'] = e h5.close()
2) 读取
123456import pandas as pdh5 = pd.HDFSt ...
Python股票处理之四_股票筛选
Python 股票处理之四 _
股票筛选
一、说明
本例实现了股票筛选功能。
前一半是过滤出市盈率在 0-30 倍之间,且今日换手率>1%,涨幅超 2%
的股票。
后一半统计今日涨停和接近涨停的股票。
二、程序
1234567891011121314151617181920212223242526272829303132#! usr/bin/python #coding=utf-8import pandas as pdimport tushare as tse = ts.get_today_all()code = e[u'code']name = e[u'name']per = e[u'per'] # 市盈率tt = e[u'turnoverratio'] # 换手率cc = e[u'changepercent'] # 涨跌幅mm = e[u'mktcap'] # 总市值idx = len(name)total = 0while idx > 0: idx ...
Python股票处理之一_获取国内股票数据
Python 获取国内股票数据
1 安装支持库
12$ pip install panda$ pip install tushare
2 说明
Pandas 是数据分析工具包
TuShare
是国内股票数据抓取工具,除了股票的实时和历史数据,还有基本面数据,加上自然语言处理(比如情绪分析),或者机器学习,就比较有趣了。
3 程序
3.1 代码
123456import tushare as tsd = ts.get_tick_data('601318',date='2017-06-26')print de = ts.get_hist_data('601318',start='2017-06-23',end='2017-06-26')print e
3.2 执行结果
1234567891011…4758 09:30:01 50.02 0.03 1044 5226339 买盘4759 09:28:45 49.99 -- 0 0 卖盘4 ...
算法之_欧拉公式
算法之 _ 欧拉公式
#数学
##1. 引子
看傅立叶变换的时候,一直奇怪,幂指数是怎么映射成三角函数的?学习了一下欧拉公式,果然很神奇,用到了自然常数
e,圆周率π,虚数 i,三角函数
sin/cos,指数,还有泰勒展开.不是算法有多难,只是涉及基础太多,经常被卡住,总结如下.
##2. 泰勒展开
泰勒展开是用多项式逼近原函数,这么做是因为像 sin(x)
这样的函数,如果代入 x=4 很难算出结果,但是将 x 的值代入形如
f(x)=a0+a1x+a2x2+a3x3…的多项式就很容易计算。具体是用原函数的导数实现的,把函数展开成多项式,公式如下:
图片.png
其中 Rn(x) 是余项
##3. 自然常数 e
e 是自然常数 (欧拉数),它是一个约等于 2.718 的无理数,定义是
图片.png
它的含义可以通过复利来理解,假设你有 1 块钱,年利息是 1
块钱(100%),一年后可拿到两块钱
(1+1/1)^1=2;按利滚利计算,如果半年付一次利息
(1+1/2)2=2.25;一个月付一次息,(1+1/12)12=2.61;每天付一次息,(1+1/365)^365=2 ...
图像处理之_OpenCV入门
图像处理之 _OpenCV 入门
1. 带着问题看 OpenCV
1) 实现了哪些功能,如何调用?
OpenCV 实现了图像处理(类似
PhotoShop),校正,分割前景背景,视频监控,运动跟踪,人脸识别,手势识别等功能,并支持机器学习算法。和很多开源工具一样,它提供的是很基础的功能。程序开发者利用基本函数的组合,适配场景,实现具体功能。它本身只是一个工具集,不是具体问题的解决方案。
只在应用层面调用的话,知道基本的数据结构,函数接口,就可以了。
2) 如何应用数学知识?
可以把学习 OpenCV
看做应用“数学”的过程,空间,矩阵,微积分,统计等工具都在其中使用。图像处理是应用数学较多的领域,具体实现可以通过源码看到,更重要的是了解数学方法的具体用途,才能举一反三。
了解其中的数学方法,是较深入的层面,如果大学数学都已经忘记了,就很容易卡住,或者似乎明白了,又似乎不明白。不妨把它作为一个切入点,带着这些问题去看数学书,然后会发现数学很有用。OpenCV
还有一个好处是,它能很直观地看到操作之后的效果,用实例理解抽象的概念。
3) 如何组织和处理视觉信息?
OpenCV
在数据存储, ...
Python函数绘图
Python 函数绘图
最近看数学,发现有时候画个图还真管用,对理解和展示效果都不错。尤其是三维空间和一些复杂函数,相当直观,也有助于解题。
本来想用 mathlab,下载安装都太费事,杀鸡不用牛刀,Python
基本就能实现,三维图还可以拖动图像来回旋转。
下面分别在二维三维举例说明。
1. 二维绘图
描述:
绘制极坐标系中 r=1 和 r=2cosθ的相交部分(没画的时候,确实没看出
r=2cosθ也是正圆)
程序
123456789101112131415import numpy as npimport matplotlib.pyplot as pltplt.figure(1)ax = plt.subplot(111)x = np.linspace(0, np.pi * 2, 200) # 在0到2pi之间,均匀产生200点的数组 # r = 2cosθr = 2 * np.cos(x) # 半径ax.plot(r * np.cos(x), r * np.sin(x))# r = 1r = 1ax.plot(r * np.cos(x), r * np.sin ...
图像处理之_卡尔曼滤波
图像处理之 _ 卡尔曼滤波
1. 用途
根据一些已知的量来预测未知的量。常用于运动预测。
2. 定义
卡尔曼滤波(Kalman
filtering)一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。
由于观测数据中包括系统中的噪声和干扰的影响,最优估计也可看作是滤波过程,因此叫作卡尔曼滤波。
3. 原理分析
1) 第一部分:预测值与误差
假设你和我两个人每天给同一头猪测体重,但两个称都不准。你测 x1
斤,正负误差在σ1
斤左右(假设预测成高斯分布,标准差反映了测量值好坏程度的不确定性),我测
x2 斤,正负误差在σ2 斤左右。结合两个人的预测,简单计算猪的体重是 x1 和
x2 的平均值。
图片.png
假如我的称更准,即误差更小,σ2<σ1,结合两个人的测量,应该以我为主,因此根据误差加权组合。
图片.png
(通过概率函数导数的最大值推出上述公式,不在此详述)
由公式可知:如果你的不确定性σ1 越大,我的测量值 x2
在新均值中占的比例越大(权值更大)。
后来你走了,用上一次的加权平均(x1,σ1)替代你的测量,我的测量 ...
图像处理之_傅立叶变换
图像处理之 _ 傅立叶变换
#图形图像
1. 图像处理中的傅立叶变换
将一幅图像从其空间域(spatial domain)转换为频域(frequency
domain)。图像处理用到的主要是离散傅立叶变换(Discrete Fourier
Transform),下文中简称 DFT。
图片.png
如上图所示,左边是原始图像(左白右黑),中间是 DFT
变换,右侧为变换后生成的频谱图(幅度相位共同决定了图中点亮度)。
上图展示了红色点 (x,y) 的变换,在纵轴方向,它所在的列颜色值都为
0(黑色),因此组成它的波形也能量也都为
0,在横轴方向,如中间图所示,左则为 255(白色),右则为
0(黑色),将其拆分成正弦波的组合,再利用拆分后的各个波的幅度(亮度)相位(亮度)以及频率大小(位置)生成频谱图(上图中简化了相位)。
原始图中的每个像素点,是由不同频率波投射在该点的能量叠加而成的,而频谱图中的每个点是原始图中每个像素点在该频率上的能量叠加而成的。它们之间都是一对多的关系,不存在一一对应。
2. 如何理解公式
图片.png
以上公式分别是一维和二维 DFT 的定义(摘自《 ...
图像处理之_轮廓匹配
图像处理之 _ 轮廓匹配
1. 引子
图像识别可通过轮廓,直方图等方式实现,像人脸识别这种复杂应用,实现它的方法很多,通常是基础方法的改进版与机器学习组合。
基于轮廓的识别,需要把图像拆分通道,寻找边缘,转换为轮廓(多边形逼近,特性概括等),然后进行轮廓匹配(图像与图像匹配,图像与模板匹配)。
程序员根据不同情境,选择适合图像抽象方法和匹配方法。
轮廓的匹配主要是解决大小,位置,旋转角度,精度不同图像间的匹配问题。方法包括轮廓矩,成对几何直方图,凸包和凸缺陷,等级匹配等等,下面以轮廓矩为例,看看它是如何实现的,同时也了解一下矩在图像处理中的应用(基于统计的方法)。
2. 是什么矩(moment)
数学定义:实函数相对于值 c 的 n 阶矩为
图片.png
从上述公式可以看到,它就是一个加了权重的积分,而权重是 (x-c)^n,其中
n 是阶数(n 阶矩),如果把它想成一个平面直角系中,c 是 x
轴上的一点,(x-c)^n 是各个 x 点相对于 c 点值的 n
次方。以下是个积分的图示,只要想象一下,它的每个小方块再乘上权重:(xi-c)^n
即可得到矩。
图片.png
轮 ...
图像处理之_仿射变换与透视变换
图像处理之 _
仿射变换与透视变换
1. 仿射变换
1) 用途
旋转 (线性变换),平移 (向量加).缩放 (线性变换),错切,反转
2) 方法
仿射变换是一种二维坐标到二维坐标之间的线性变换,它保持了二维图形的“平直性”(直线经过变换之后依然是直线)和“平行性”(二维图形之间的相对位置关系保持不变,平行线依然是平行线,且直线上点的位置顺序不变)。任意的仿射变换都能表示为乘以一个矩阵
(线性变换),再加上一个向量 (平移) 的形式.
图片.png
以上公式将点 (x,y) 映射到 (x’,y’),在 OpenCV 中通过指定一个 2x3
矩阵实现此功能(公式中的 m 矩阵,是线性变换和平移的组合,m11,m12,m21,m22
为线性变化参数,m13,m23 为平移参数,其最后一行固定为 0,0,1,因此,将 3x3
矩阵简化为 2x3)
3) 举例
以原点为中心旋转,2x3 矩阵为:
12345[ cos(theta), -sin(theta), 0 ],[ sin(theta), cos(theta), 0 ]则x’ = x * cos(theta) - sin(thet ...