使用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实现代码行数统计示例分享
Feb 10 Python
Python读写文件方法总结
Jun 09 Python
Python编程实现使用线性回归预测数据
Dec 07 Python
python多个模块py文件的数据共享实例
Jan 11 Python
Python函数中参数是传递值还是引用详解
Jul 02 Python
Django REST framework内置路由用法
Jul 26 Python
python3 Scrapy爬虫框架ip代理配置的方法
Jan 17 Python
python连接PostgreSQL过程解析
Feb 09 Python
详解python logging日志传输
Jul 01 Python
python基于exchange函数发送邮件过程详解
Nov 06 Python
利用python爬取有道词典的方法
Dec 08 Python
Python之qq自动发消息的示例代码
Feb 18 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学习之输出字符串(echo,print,printf,print_r和var_dump)
2011/04/17 PHP
php提取字符串中网站url地址的方法
2014/12/03 PHP
PHP中使用正则表达式提取中文实现笔记
2015/01/20 PHP
PHP实现的随机IP函数【国内IP段】
2016/07/20 PHP
JS中彻底删除JSON对象组成的数组中的元素
2020/09/22 PHP
JS中简单的实现像C#中using功能(有源码下载)
2007/01/09 Javascript
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
基于Asp.net与Javascript控制的日期控件
2010/05/22 Javascript
javascript基础知识大全 便于大家学习,也便于我自己查看
2012/08/17 Javascript
在线所见即所得HTML编辑器的实现原理浅析
2015/04/25 Javascript
JS触摸与手势事件详解
2017/05/09 Javascript
Mac系统下Webstorm快捷键整理大全
2017/05/28 Javascript
详解vue 组件之间使用eventbus传值
2017/10/25 Javascript
react-native动态切换tab组件的方法
2018/07/07 Javascript
利用JS动态生成隔行换色HTML表格的两种方法
2018/10/09 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
详解vue-cli 脚手架 安装
2019/04/16 Javascript
Python设计模式之单例模式实例
2014/04/26 Python
Python中的id()函数指的什么
2017/10/17 Python
Python实现的选择排序算法示例
2017/11/29 Python
Django使用httpresponse返回用户头像实例代码
2018/01/26 Python
python实现csv格式文件转为asc格式文件的方法
2018/03/23 Python
基于pycharm导入模块显示不存在的解决方法
2018/10/13 Python
python 链接sqlserver 写接口实例
2020/03/11 Python
Python视频编辑库MoviePy的使用
2020/04/01 Python
python如何处理程序无法打开
2020/06/16 Python
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
博柏利美国官方网站:Burberry美国
2020/11/19 全球购物
室内设计专业个人的自我评价
2013/10/19 职场文书
英语分层教学实施方案
2014/06/15 职场文书
作风建设年活动总结
2014/08/27 职场文书
党的群众路线教育实践活动自我剖析材料
2014/10/08 职场文书
银行员工考核评语
2014/12/31 职场文书
道歉的话怎么说
2015/05/12 职场文书
Redis字典实现、Hash键冲突及渐进式rehash详解
2021/09/04 Redis
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android