使用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 25 Python
django 常用orm操作详解
Sep 13 Python
深入理解Django的自定义过滤器
Oct 17 Python
python logging日志模块以及多进程日志详解
Apr 18 Python
python实现随机梯度下降法
Mar 24 Python
对python 匹配字符串开头和结尾的方法详解
Oct 27 Python
详解pandas的外部数据导入与常用方法
May 01 Python
kali中python版本的切换方法
Jul 11 Python
Python图像处理之图片文字识别功能(OCR)
Jul 30 Python
python基于socket模拟实现ssh远程执行命令
Dec 05 Python
Python urllib request模块发送请求实现过程解析
Dec 10 Python
Python基于爬虫实现全网搜索并下载音乐
Feb 14 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
Laravel5中Cookie的使用详解
2017/05/03 PHP
Laravel中10个有用的用法小结
2019/05/06 PHP
JS宝典学习笔记(下)
2007/01/10 Javascript
javascript让setInteval里的函数参数中的this指向特定的对象
2010/01/31 Javascript
JQuery EasyUI 日期控件如何控制日期选择区间
2014/05/05 Javascript
js打造数组转json函数
2015/01/14 Javascript
JavaScript AOP编程实例
2015/06/16 Javascript
AngularJS页面带参跳转及参数解析操作示例
2017/06/28 Javascript
JavaScript实现图片切换效果
2017/08/12 Javascript
谈谈vue中mixin的一点理解
2017/12/12 Javascript
详解如何在nuxt中添加proxyTable代理
2018/08/10 Javascript
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
使用vue-cli3+typescript的项目模板创建工程的教程
2020/02/28 Javascript
解决vue2中使用elementUi打包报错的问题
2020/09/22 Javascript
微信小程序入门之指南针
2020/10/22 Javascript
Python实现的多线程端口扫描工具分享
2015/01/21 Python
最基础的Python的socket编程入门教程
2015/04/23 Python
Python用Pillow(PIL)进行简单的图像操作方法
2017/07/07 Python
在scrapy中使用phantomJS实现异步爬取的方法
2018/12/17 Python
对python:循环定义多个变量的实例详解
2019/01/20 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
利用Tensorflow的队列多线程读取数据方式
2020/02/05 Python
Python ATM功能实现代码实例
2020/03/19 Python
python实现数学模型(插值、拟合和微分方程)
2020/11/13 Python
Django url 路由匹配过程详解
2021/01/22 Python
CSS3实现文字波浪线效果示例代码
2016/11/20 HTML / CSS
日本最大的购物网站乐天市场国际版:Rakuten Global Market(支持中文)
2020/02/03 全球购物
汽车销售顾问求职自荐信
2014/01/01 职场文书
美术教师岗位职责
2014/03/18 职场文书
精神文明建设先进工作者事迹材料
2014/05/02 职场文书
校车安全责任书
2014/08/25 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
中秋节主题班会
2015/08/14 职场文书
Python基础之pandas数据合并
2021/04/27 Python
聊一聊Redis与MySQL双写一致性如何保证
2021/06/26 Redis
SQL Server数据库查询出现阻塞之性能调优
2022/04/10 SQL Server