使用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执行子进程实现进程间通信的方法
Jun 02 Python
django站点管理详解
Dec 12 Python
Python简单实现两个任意字符串乘积的方法示例
Apr 12 Python
使用python绘制二元函数图像的实例
Feb 12 Python
Python基于机器学习方法实现的电影推荐系统实例详解
Jun 25 Python
在python plt图表中文字大小调节的方法
Jul 08 Python
用python生成与调用cntk模型代码演示方法
Aug 26 Python
Python读取表格类型文件代码实例
Feb 17 Python
keras中的History对象用法
Jun 19 Python
详解如何在PyCharm控制台中输出彩色文字和背景
Aug 17 Python
Python判断字符串是否为合法标示符操作
Sep 03 Python
pycharm 实现光标快速移动到括号外或行尾的操作
Feb 05 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/05 新手入门
基于php split()函数的用法详解
2013/06/05 PHP
PHP实现对站点内容外部链接的过滤方法
2014/09/10 PHP
php检测url是否存在的方法
2015/04/14 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
jquery实现图片等比例缩放以及max-width在ie中不兼容解决
2013/03/21 Javascript
JS保存和删除cookie操作 判断cookie是否存在
2013/11/13 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
jquery读取xml文件实现省市县三级联动的方法
2015/05/29 Javascript
js实现仿阿里巴巴城市选择框效果实例
2015/06/24 Javascript
简单谈谈JavaScript的同步与异步
2015/12/31 Javascript
微信小程序-详解数据缓存
2016/11/24 Javascript
select下拉框插件jquery.editable-select详解
2017/01/22 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
详解微信小程序实现仿微信聊天界面(各种细节处理)
2019/02/17 Javascript
vue中的.$mount('#app')手动挂载操作
2020/09/02 Javascript
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
python分割和拼接字符串
2013/11/01 Python
python中pylint使用方法(pylint代码检查)
2018/04/06 Python
windows下python和pip安装教程
2018/05/25 Python
Python 生成 -1~1 之间的随机数矩阵方法
2018/08/04 Python
pyqt5实现俄罗斯方块游戏
2019/01/11 Python
浅谈Python的条件判断语句if/else语句
2019/03/21 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
2019/07/04 Python
使用pyecharts生成Echarts网页的实例
2019/08/12 Python
Python之——生成动态路由轨迹图的实例
2019/11/22 Python
opencv3/C++ 平面对象识别&透视变换方式
2019/12/11 Python
Python进行特征提取的示例代码
2020/10/15 Python
CSS3之多背景background使用示例
2013/10/18 HTML / CSS
元旦联欢会主持词
2014/03/26 职场文书
Python 中random 库的详细使用
2021/06/03 Python
如何使用分区处理MySQL的亿级数据优化
2021/06/18 MySQL
Python连接Postgres/Mysql/Mongo数据库基本操作大全
2021/06/29 Python
对讲机的最大通讯距离是多少
2022/02/18 无线电
Vue elementUI表单嵌套表格并对每行进行校验详解
2022/02/18 Vue.js