使用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爬虫入门教程之糗百图片爬虫代码分享
Sep 02 Python
Python实现堆排序的方法详解
May 03 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
Jan 24 Python
python3连接MySQL数据库实例详解
May 24 Python
PyTorch 1.0 正式版已经发布了
Dec 13 Python
python实现beta分布概率密度函数的方法
Jul 08 Python
基于Python实现拆分和合并GIF动态图
Oct 22 Python
Django mysqlclient安装和使用详解
Sep 17 Python
Python 利用argparse模块实现脚本命令行参数解析
Dec 28 Python
Python3使用tesserocr识别字母数字验证码的实现
Jan 29 Python
教你利用python实现企业微信发送消息
May 23 Python
Python+Pillow+Pytesseract实现验证码识别
May 11 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程序中的常见漏洞进行攻击
2006/10/09 PHP
yii操作cookie实例简介
2014/07/09 PHP
PHP判断数据库中的记录是否存在的方法
2014/11/14 PHP
PHP cURL初始化和执行方法入门级代码
2015/05/28 PHP
php实现读取和写入tab分割的文件
2015/06/01 PHP
php通过会话控制实现身份验证实例
2016/10/18 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
jquery 与NVelocity 产生冲突的解决方法
2011/06/13 Javascript
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
js菜单点击显示或隐藏效果的简单实例
2014/01/13 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
微信小程序左滑删除效果的实现代码
2017/02/20 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
Vue 表单控件绑定的实现示例
2017/08/11 Javascript
使用nvm管理不同版本的node与npm的方法
2017/10/31 Javascript
基于vue2实现左滑删除功能
2017/11/28 Javascript
jQuery中ajax获取数据赋值给页面的实例
2017/12/31 jQuery
angular 内存溢出的问题解决
2018/07/12 Javascript
vue Tab切换以及缓存页面处理的几种方式
2019/11/05 Javascript
JS+CSS实现3D切割轮播图
2020/03/21 Javascript
vue 实现图片懒加载功能
2020/12/31 Vue.js
[19:14]DOTA2 HEROS教学视频教你分分钟做大人-维萨吉
2014/06/24 DOTA
python实现文件快照加密保护的方法
2015/06/30 Python
如何用Python制作微信好友个性签名词云图
2019/06/28 Python
Python二次规划和线性规划使用实例
2019/12/09 Python
python Xpath语法的使用
2020/11/26 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
JustFab加拿大:女鞋、靴子、手袋和服装在线
2018/05/18 全球购物
电气工程自动化求职信
2014/03/14 职场文书
中国梦读书活动总结
2014/07/10 职场文书
上党课的心得体会
2014/09/02 职场文书
2014幼儿园大班工作总结
2014/11/10 职场文书
我的中国梦主题教育活动总结
2015/05/07 职场文书
入党转正申请报告
2015/05/15 职场文书
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python
Python实现查询剪贴板自动匹配信息的思路详解
2021/07/09 Python