Python股票处理之五_直方图统计
Python 股票处理之五 _
直方图统计
1. 说明
直方图 (Histogram)
又称质量分布图。是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况(见下图)。
直方图是统计中的常用工具,在图像处理中,经常通过边缘或者颜色统计计算直方图,并通过直方图匹配实现图像识别;也可以据此判断颜色分布,以调节色彩均衡;还可以筛选出感兴趣的区域,并做进一步处理。
在股票数据处理中,也同理,统计出直方图后,可利用它和以往数据匹配,寻找近似的情况;统计有效数据集中区域,并聚焦于该区域进一步处理。
下面是一个最简单的实例:每天我们能看出大盘的整体涨跌,但并不了解各股涨跌情况的分布(比如:是普涨还是二八行情),下例分析并显示了昨天各股涨跌幅主要分布在哪些区间内。
2. 程序
1) 代码
123456789101112# -*- coding:utf-8 -*- import tushare as tsimport numpy as np import matplotlib.pyplot as plt e = ts.get_today_all()cc = e[u'c ...
Python股票处理之六_数据预处理A
Python 股票处理之六 _
数据预处理 A
1. 说明
在数据统计和预测的过程中,工程师基本都使用现成的算法,工程师的主要工作是根据具体业务逻辑预处理数据和选择算法。
首先要对数据预处理(数据清洗),包括数据的归一化,去除重复数据,修改错误数据,填充无效数据,抽象数据表示,筛选特征值,分配权重等等,以得到更准确的数据和更有效的结果。
继续上次关于股票直方图的话题,来看看简单的股票数据预处理。左图是昨天股票涨跌的直方图,从中看出,涨跌幅分布在
-10 到 50 的区间内。
涨幅超过 10% 是因为计入了新股的首日涨幅,跌涨超过
-10%,可能由于分红配送等原因引起。下面程序中将对此区域进行特殊处理。
对于当日停牌的数据,它的开盘价收盘价最高价最低价都是同一个值,如果加入统计,会在
0 附近形成一个无意义的峰值,在预处理中也把它去掉。
如果用左图结果做一个从 (-10,10) 共计 20
个区间的分类器,那么结果多半会落入 (-1,1)
的区间内,这并不是我们想要的。我们更希望看到的是将 3000
多支股票平均分布在这 20
个区域,每个区域股票数量相同,但是各区域大小不同。根据区域得 ...
Python股票处理之三_实时监测
Python 股票处理之三 _
实时监测
1. 说明
写个脚本帮你每天盯着某几支股票,达到预设值时响铃提醒。这是最简单的股票应用,虽然谈不上智能,但是自动化――老盯着就容易冲动操作。
本例中实现了每 5 秒取一次股票数据,并在上证指数高于 3200 点,或
601318 低于 49 元时响提醒。
2. 程序
1234567891011121314151617181920import osimport timeimport tushare as tsimport pandas as pddef check(code, low, high): df = ts.get_realtime_quotes(code) e = df[['code','name','price','time']] p = df[u'price'] print e if float(p[0]) > low and float(p[0]) < high: return True else : return ...
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
在数据存储, ...
图像处理之_卡尔曼滤波
图像处理之 _ 卡尔曼滤波
1. 用途
根据一些已知的量来预测未知的量。常用于运动预测。
2. 定义
卡尔曼滤波(Kalman
filtering)一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。
由于观测数据中包括系统中的噪声和干扰的影响,最优估计也可看作是滤波过程,因此叫作卡尔曼滤波。
3. 原理分析
1) 第一部分:预测值与误差
假设你和我两个人每天给同一头猪测体重,但两个称都不准。你测 x1
斤,正负误差在σ1
斤左右(假设预测成高斯分布,标准差反映了测量值好坏程度的不确定性),我测
x2 斤,正负误差在σ2 斤左右。结合两个人的预测,简单计算猪的体重是 x1 和
x2 的平均值。
图片.png
假如我的称更准,即误差更小,σ2<σ1,结合两个人的测量,应该以我为主,因此根据误差加权组合。
图片.png
(通过概率函数导数的最大值推出上述公式,不在此详述)
由公式可知:如果你的不确定性σ1 越大,我的测量值 x2
在新均值中占的比例越大(权值更大)。
后来你走了,用上一次的加权平均(x1,σ1)替代你的测量,我的测量 ...
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 ...