使用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 文件重命名工具代码
Jul 26 Python
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
Dec 06 Python
使用Python构建Hopfield网络的教程
Apr 14 Python
Python实现一个转存纯真IP数据库的脚本分享
May 21 Python
Python入门之三角函数tan()函数实例详解
Nov 08 Python
Python制作词云的方法
Jan 03 Python
使用Python处理Excel表格的简单方法
Jun 07 Python
解决Python print输出不换行没空格的问题
Nov 14 Python
Python2.7实现多进程下开发多线程示例
May 31 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
Jun 24 Python
VSCode配合pipenv搞定虚拟环境的实现方法
May 17 Python
python的html标准库
Apr 29 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 XML备份Mysql数据库
2009/05/27 PHP
PHP获取网址的顶级域名函数代码
2012/09/24 PHP
深入eAccelerator与memcached的区别详解
2013/06/06 PHP
php操作xml入门之xml标签的属性分析
2015/01/23 PHP
php中使用base HTTP验证的方法
2015/04/20 PHP
php中header跳转使用include包含解决参数丢失问题
2015/05/08 PHP
PHP设置进度条的方法
2015/07/08 PHP
thinkphp5实现无限级分类
2019/02/18 PHP
在 Laravel 中动态隐藏 API 字段的方法
2019/10/25 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
javascript 多浏览器 事件大全
2010/03/23 Javascript
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
2014/08/03 NodeJs
JS实现两表格里数据来回转移的方法
2015/05/28 Javascript
javascript编写贪吃蛇游戏
2015/07/07 Javascript
js实现prototype扩展的方法(字符串,日期,数组扩展)
2016/01/14 Javascript
javascript截图 jQuery插件imgAreaSelect使用详解
2016/05/04 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
在Vue methods中调用filters里的过滤器实例
2018/08/30 Javascript
基于Vue中使用节流Lodash throttle详解
2019/10/30 Javascript
通过实例解析jQ Ajax操作相关原理
2020/09/23 Javascript
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
2014/06/09 Python
Python中声明只包含一个元素的元组数据方法
2014/08/25 Python
python实现两个文件合并功能
2018/04/01 Python
python+numpy+matplotalib实现梯度下降法
2018/08/31 Python
Django web框架使用url path name详解
2019/04/29 Python
Python 获取指定文件夹下的目录和文件的实现
2019/08/30 Python
python torch.utils.data.DataLoader使用方法
2020/04/02 Python
使用iframe+postMessage实现页面跨域通信的示例代码
2020/01/14 HTML / CSS
巴西最大的珠宝连锁店:Vivara
2019/04/18 全球购物
世界汽车零件:World Car Parts
2019/09/04 全球购物
怎样有效的进行自我评价
2013/10/06 职场文书
财务部出纳岗位职责
2013/12/22 职场文书
人民调解员先进事迹材料
2014/05/08 职场文书
毕业感言怎么写
2015/07/31 职场文书
公司档案管理制度
2015/08/05 职场文书