使用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的Flask框架中@app.route的用法教程
Mar 31 Python
Python中获取对象信息的方法
Apr 27 Python
python实现同时给多个变量赋值的方法
Apr 30 Python
python3.6数独问题的解决
Jan 21 Python
详解小白之KMP算法及python实现
Apr 04 Python
Python爬虫:url中带字典列表参数的编码转换方法
Aug 21 Python
Python操作SQLite/MySQL/LMDB数据库的方法
Nov 07 Python
使用sklearn的cross_val_score进行交叉验证实例
Feb 28 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
Feb 29 Python
Python 定义只读属性的实现方式
Mar 05 Python
pytorch 限制GPU使用效率详解(计算效率)
Jun 27 Python
Python绘制分类图的方法
Apr 20 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 正则表达式小结
2009/08/31 PHP
php 短链接算法收集与分析
2011/12/30 PHP
利用PHP实现图片等比例放大和缩小的方法详解
2013/06/06 PHP
Bootstrap+PHP实现多图上传功能实例详解
2018/04/08 PHP
PHP按一定比例压缩图片的方法
2018/10/12 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
2019/09/30 PHP
Firefox 无法获取cssRules 的解决办法
2006/10/11 Javascript
jQuery的运行机制和设计理念分析
2011/04/05 Javascript
js中方法重载如何实现?以及函数的参数问题
2013/08/01 Javascript
js简单实现HTML标签Select联动带跳转
2013/10/23 Javascript
js实现人才网站职位选择功能的方法
2015/08/14 Javascript
AngularJS中使用HTML5手机摄像头拍照
2016/02/22 Javascript
jQuery实现的精美平滑二级下拉菜单效果代码
2016/03/28 Javascript
jQuery+CSS实现一个侧滑导航菜单代码
2016/05/09 Javascript
详解Angular.js指令中scope类型的几种特殊情况
2017/02/21 Javascript
JS检测是否可以访问公网服务器功能代码
2017/06/19 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
2017/08/08 jQuery
详解webpack 打包文件体积过大解决方案(code splitting)
2018/04/10 Javascript
vue+express 构建后台管理系统的示例代码
2018/07/19 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
浅析js实现网页截图的两种方式
2019/11/01 Javascript
python压缩文件夹内所有文件为zip文件的方法
2015/06/20 Python
利用python将图片转换成excel文档格式
2017/12/30 Python
numpy数组广播的机制
2019/07/12 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
2019/07/23 Python
Python参数传递实现过程及原理详解
2020/05/14 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
2020/09/01 Python
基于Html5实现的语音搜索功能
2019/05/13 HTML / CSS
AmazeUI折叠式卡片布局,整合内容列表、表格组件实现
2020/08/20 HTML / CSS
Nisbets法国:英国最大的厨房和餐饮设备供应商
2019/03/18 全球购物
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
《挑山工》的教学反思
2014/02/16 职场文书
公开服务承诺制度
2014/03/26 职场文书
老兵退伍标语
2014/10/07 职场文书
毕业论文致谢范文
2015/05/14 职场文书
如何将numpy二维数组中的np.nan值替换为指定的值
2021/05/14 Python