使用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实现多线程暴力破解登陆路由器功能代码分享
Jan 04 Python
python实现12306抢票及自动邮件发送提醒付款功能
Mar 08 Python
Linux下python3.7.0安装教程
Jul 30 Python
python框架中flask知识点总结
Aug 17 Python
python 实现视频流下载保存MP4的方法
Jan 09 Python
python读写配置文件操作示例
Jul 03 Python
python join方法使用详解
Jul 30 Python
Python中有几个关键字
Jun 04 Python
python可以用哪些数据库
Jun 22 Python
Pycharm添加虚拟解释器报错问题解决方案
Oct 13 Python
python 实现全球IP归属地查询工具
Dec 18 Python
python中使用 unittest.TestCase单元测试的用例详解
Aug 30 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
咖啡界又出新概念,无需咖啡豆的分子咖啡
2021/03/03 咖啡文化
php设计模式 State (状态模式)
2011/06/26 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
php中mysql模块部分功能的简单封装
2011/09/30 PHP
PHP获取星期几的常用方法小结
2018/12/18 PHP
MacOS下PHP7.1升级到PHP7.4.15的方法
2021/02/22 PHP
javascript中的location用法简单介绍
2007/03/07 Javascript
js限制文本框为整数和货币的函数代码
2010/10/13 Javascript
jQuery 操作option的实现代码
2011/03/03 Javascript
javascript实现平滑无缝滚动
2020/08/09 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
Node.js Streams文件读写操作详解
2016/07/04 Javascript
jquery判断类型是不是number类型的实例代码
2016/10/07 Javascript
JS利用正则表达式实现简单的密码强弱判断实例
2017/06/16 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
2018/07/26 Javascript
AngularJS $http post 传递参数数据的方法
2018/10/09 Javascript
vue: WebStorm设置快速编译运行的方法
2018/10/18 Javascript
手动下载Chrome并解决puppeteer无法使用问题
2018/11/12 Javascript
flexible.js实现移动端rem适配方案
2020/04/07 Javascript
[50:38]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第二场 3月7日
2021/03/11 DOTA
Python过滤函数filter()使用自定义函数过滤序列实例
2014/08/26 Python
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
2016/07/02 Python
Python selenium 父子、兄弟、相邻节点定位方式详解
2016/09/15 Python
在keras中对单一输入图像进行预测并返回预测结果操作
2020/07/09 Python
Java面试题及答案
2012/09/08 面试题
应届毕业生求职信
2013/11/30 职场文书
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
《登鹳雀楼》教学反思
2014/04/09 职场文书
汽车技术服务与贸易专业求职信
2014/07/20 职场文书
个人四风对照检查材料
2014/09/26 职场文书
2014年个人工作总结报告
2014/11/27 职场文书
2015年清明节活动总结
2015/02/09 职场文书
大学团日活动总结书
2015/05/11 职场文书
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python
Python类方法总结讲解
2021/07/26 Python