使用python的pandas为你的股票绘制趋势图


Posted in Python onJune 26, 2019

前言

手里有一点点公司的股票, 拿不准在什么时机抛售, 程序员也没时间天天盯着看,不如动手写个小程序, 把股票趋势每天早上发到邮箱里,用 python 的 pandas, matplotlib 写起来很容易, 几十行代码搞定。

准备环境

python3 -m venv venv
source ./venv/bin/activate
pip install pandas
pip install pandas_datareader
pip install matplotlib

代码如下

绘制 2019 年到今天2019-02-15 的我司 ( Cisco ) 的股票趋势 ( open:开盘价, close: 收盘价, high 最高价:, low: 最低价,单位为美元)

$ vi stock.py

import matplotlib.pyplot as plt
import pandas as pd
pd.core.common.is_list_like = pd.api.types.is_list_like
import pandas_datareader.data as web
import matplotlib
import time
import matplotlib.pyplot as plt
import argparse
def drawStockTrend(inc, startDate, endDate, pngFile):
fig = matplotlib.pyplot.gcf()
fig.set_size_inches(18.5, 10.5)
df = web.DataReader(name=inc, data_source='iex', start=startDate, end=endDate)
print(df)
plt.style.use('seaborn-whitegrid')
plt.xticks(rotation=30)
plt.plot(df.index, df['open'], label='open', marker='o', linestyle=':', linewidth=1, markersize=3, color='gray')
plt.plot(df.index, df['high'], label='high', marker='o', linestyle=':', linewidth=1, markersize=3, color='green')
plt.plot(df.index, df['low'], label='low', marker='o', linestyle=':', linewidth=1, markersize=3, color='blue')
plt.plot(df.index, df['close'], label='close', marker='o', linestyle='-', linewidth=2, markersize=6, color='red')
for x, y in zip(df.index, df['close']):
plt.text(x, y + 0.3, '%.2f' % y, ha='center', va='bottom', color='red')
plt.legend()
plt.title("%s' stock trend" % company)
plt.show(block=True)
time.sleep(1)
if(not pngFile):
fig.savefig(pngFile)
plt.close()
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('-c', action='store', dest='company', help='specify company')
parser.add_argument('-s', action='store', dest='start', help='specify start date')
parser.add_argument('-e', action='store', dest='end', help='specify end date')
parser.add_argument('-f', action='store', dest='file', help='specify the filename')
args = parser.parse_args()
company = 'CSCO'
startDate = '2019-01-01'
endDate = '2019-02-19'
pngFile = None
if(args.company):
company = args.company
if (args.start):
startDate = args.start
if (args.end):
endDate = args.end
if (args.file):
pngFile = args.file
drawStockTrend(company, startDate, endDate, pngFile)
#example
# python stock.py -c GOOGL -s 2019-01-01 -e 2019-02-19 -f google_stock_trend.png
# python stock.py -c CSCO -s 2019-01-01 -e 2019-02-19 -f cisco_stock_trend.png
# python stock.py -c SINA -s 2019-01-01 -e 2019-02-19 -f sina_stock_trend.png
# python stock.py -c BIDU -s 2019-01-01 -e 2019-02-19 -f baidu_stock_trend.png
# python stock.py -c NTES -s 2019-01-01 -e 2019-02-19 -f netease_stock_trend.png

运行命令如下

python stock.py -c CSCO -s 2019-01-01 -e 2019-02-19 -f cisco_stock_trend.png

图表如下

cisco

使用python的pandas为你的股票绘制趋势图

cisco

看来最近股价涨势不错。

再看看其他公司

Google

使用python的pandas为你的股票绘制趋势图

google

Baidu

使用python的pandas为你的股票绘制趋势图

baidu

Netease

使用python的pandas为你的股票绘制趋势图

netease

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python笔记(叁)继续学习
Oct 24 Python
Python的time模块中的常用方法整理
Jun 18 Python
Python 循环语句之 while,for语句详解
Apr 23 Python
python中cPickle类使用方法详解
Aug 27 Python
详解Python3中ceil()函数用法
Feb 19 Python
python日期相关操作实例小结
Jun 24 Python
Django Form 实时从数据库中获取数据的操作方法
Jul 25 Python
使用python去除图片白色像素的实例
Dec 12 Python
python多线程使用方法实例详解
Dec 30 Python
python实现控制台输出彩色字体
Apr 05 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
Apr 24 Python
Python eval函数原理及用法解析
Nov 14 Python
python安装scipy的方法步骤
Jun 26 #Python
Python3.5以上版本lxml导入etree报错的解决方案
Jun 26 #Python
如何通过python画loss曲线的方法
Jun 26 #Python
python and or用法详解
Jun 26 #Python
python覆盖写入,追加写入的实例
Jun 26 #Python
通过cmd进入python的实例操作
Jun 26 #Python
python实现比较类的两个instance(对象)是否相等的方法分析
Jun 26 #Python
You might like
php header示例代码(推荐)
2010/09/08 PHP
PHP多进程编程之僵尸进程问题的理解
2017/10/15 PHP
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
jquery()函数的三种语法介绍
2013/10/09 Javascript
Ajax提交与传统表单提交的区别说明
2014/02/07 Javascript
js判断当前浏览器类型,判断IE浏览器方法
2014/06/02 Javascript
使用jQuery获得内容以及内容的属性
2015/02/26 Javascript
js右下角弹出提示框示例代码
2016/01/12 Javascript
Function.prototype.apply()与Function.prototype.call()小结
2016/04/27 Javascript
JS常用算法实现代码
2016/11/14 Javascript
Angularjs之filter过滤器(推荐)
2016/11/27 Javascript
AngularJS constant和value区别详解
2017/02/28 Javascript
Angularjs使用过滤器完成排序功能
2017/09/20 Javascript
vue内置指令详解
2018/04/03 Javascript
快速解决vue在ios端下点击响应延时的问题
2018/08/27 Javascript
JS回调函数 callback的理解与使用案例分析
2019/09/09 Javascript
Layui数据表格之单元格编辑方式
2019/10/26 Javascript
Javascript模块化机制实现原理详解
2020/04/02 Javascript
javascript前端和后台进行数据交互方法示例
2020/08/07 Javascript
Python实现的一个找零钱的小程序代码分享
2014/08/25 Python
python让图片按照exif信息里的创建时间进行排序的方法
2015/03/16 Python
Windows中安装使用Virtualenv来创建独立Python环境
2016/05/31 Python
详解Python的三种可变参数
2019/05/08 Python
python飞机大战pygame碰撞检测实现方法分析
2019/12/17 Python
Python&&GDAL实现NDVI的计算方式
2020/01/09 Python
css3 边框、背景、文本效果的实现代码
2018/03/21 HTML / CSS
html5的localstorage详解
2017/05/09 HTML / CSS
印度领先的眼镜电子商务网站:Lenskart
2019/12/16 全球购物
大学毕业生通用自我评价
2014/01/05 职场文书
运动会解说词100字
2014/01/31 职场文书
就业自我评价
2014/02/04 职场文书
前厅收银主管岗位职责
2014/02/04 职场文书
小学敬老月活动方案
2014/02/11 职场文书
秋季运动会广播稿大全
2014/02/17 职场文书
幼儿园儿童节活动主持词+串词大全
2014/03/21 职场文书
银行领导班子四风对照检查材料
2014/09/27 职场文书