使用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执行外部程序的常用方法小结
Mar 21 Python
Python基于pygame实现图片代替鼠标移动效果
Nov 11 Python
python3之微信文章爬虫实例讲解
Jul 12 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
Apr 10 Python
python爬虫之xpath的基本使用详解
Apr 18 Python
Python实现查找字符串数组最长公共前缀示例
Mar 27 Python
Python+selenium点击网页上指定坐标的实例
Jul 05 Python
Tensorflow累加的实现案例
Feb 05 Python
Pytest框架之fixture的详细使用教程
Apr 07 Python
Django celery异步任务实现代码示例
Nov 26 Python
python 实现的截屏工具
May 08 Python
Python如何导出导入所有依赖包详解
Jun 08 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&MYSQL服务器配置说明
2006/10/09 PHP
PHP mysql事务问题实例分析
2016/01/18 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
2016/04/30 PHP
B/S开发中常用javaScript技术与代码
2007/03/09 Javascript
Mootools 1.2教程 正则表达式
2009/09/15 Javascript
javascript中的new使用
2010/03/20 Javascript
Javascript面象对象成员、共享成员变量实验
2010/11/19 Javascript
两种常用的javascript数组去重方法思路及代码
2013/03/26 Javascript
JS函数重载的解决方案
2014/05/13 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
jQuery给指定的table动态添加删除行的操作方法
2016/10/12 Javascript
JavaScript实现隐藏省略文字效果的方法
2017/04/27 Javascript
View.post() 不靠谱的地方你知道多少
2017/08/29 Javascript
Thinkjs3新手入门之添加一个新的页面
2017/12/06 Javascript
Angular简单验证功能示例
2017/12/22 Javascript
详解Angular6 热加载配置方案
2018/08/18 Javascript
基于javascript的无缝滚动动画1
2020/08/07 Javascript
javascript贪吃蛇游戏设计与实现
2020/09/17 Javascript
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
Python unittest模块用法实例分析
2018/05/25 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
2018/12/11 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
Python中list的交、并、差集获取方法示例
2019/08/01 Python
numpy:np.newaxis 实现将行向量转换成列向量
2019/11/30 Python
新加坡领先的时尚生活方式零售品牌:CHARLES & KEITH
2018/01/16 全球购物
彪马荷兰官网:PUMA荷兰
2019/05/08 全球购物
司机职责范本
2014/03/08 职场文书
函授生自我鉴定
2014/03/25 职场文书
西岭雪山导游词
2015/02/06 职场文书
广告业务员岗位职责
2015/02/13 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
道歉信怎么写
2015/05/12 职场文书
爱国主义教育基地观后感
2015/06/18 职场文书
清洁工工作总结
2015/08/11 职场文书
利用Java设置Word文本框中的文字旋转方向的实现方法
2021/06/28 Java/Android