使用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 相关文章推荐
django自定义Field实现一个字段存储以逗号分隔的字符串
Apr 27 Python
Python操作MySQL简单实现方法
Jan 26 Python
Python psutil模块简单使用实例
Apr 28 Python
python发送邮件功能实现代码
Jul 15 Python
python验证码识别的示例代码
Sep 21 Python
解决Python 爬虫URL中存在中文或特殊符号无法请求的问题
May 11 Python
用Python中的turtle模块画图两只小羊方法
Apr 09 Python
Python实现微信消息防撤回功能的实例代码
Apr 29 Python
手把手教你使用Python创建微信机器人
Apr 29 Python
pandas计算最大连续间隔的方法
Jul 04 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
Mar 31 Python
python3定位并识别图片验证码实现自动登录功能
Jan 29 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
建立文件交换功能的脚本(一)
2006/10/09 PHP
使用PHP遍历文件夹与子目录的函数代码
2011/09/26 PHP
thinkPHP简单实现多个子查询语句的方法
2016/12/05 PHP
PHP实现的统计数据功能详解
2016/12/06 PHP
PHP智能识别收货地址信息实例
2019/01/05 PHP
刷新时清空文本框内容的js代码
2007/04/23 Javascript
JavaScript this调用规则说明
2010/03/08 Javascript
JavaScript自执行闭包的小例子
2013/06/29 Javascript
基于jquery编写的横向自适应幻灯片切换特效的实例代码
2013/08/06 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
js鼠标点击图片实现随机变换图片的方法
2015/02/16 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
javascript弹出拖动窗口
2015/08/11 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
2016/06/17 Javascript
AngularJS基础 ng-src 指令简单示例
2016/08/03 Javascript
微信小程序 HTTPS报错整理常见问题及解决方案
2016/12/14 Javascript
jQuery实现分页功能(含ajax请求、后台数据、附完整demo)
2017/04/03 jQuery
vue实现裁切图片同时实现放大、缩小、旋转功能
2018/03/02 Javascript
js判断在哪个浏览器打开项目的方法
2020/01/21 Javascript
vue中提示$index is not defined错误的解决方式
2020/09/02 Javascript
[02:04]2020年夜魇暗潮预告片
2020/10/30 DOTA
在Django框架中运行Python应用全攻略
2015/07/17 Python
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
简单了解python调用其他脚本方法实例
2020/03/26 Python
如何在mac版pycharm选择python版本
2020/07/21 Python
CSS3制作酷炫的条纹背景
2017/11/09 HTML / CSS
美国鲍勃商店:Bob’s Stores
2018/07/22 全球购物
PHP如何调用MYSQL存储过程
2014/05/30 面试题
医生实习工作总结的自我评价
2013/09/27 职场文书
玲玲的画教学反思
2014/02/04 职场文书
文化宣传方案
2014/03/13 职场文书
2014年会计个人工作总结
2014/11/24 职场文书
先进个人申报材料
2014/12/30 职场文书
2019年暑期法院实习报告
2019/12/18 职场文书
mysql5.6主从搭建以及不同步问题详解
2021/12/04 MySQL
SQL Server数据库的三种创建方法汇总
2023/05/08 MySQL