Pandas应用-股票分析实战

股票时间序列

时间序列:
金融领域最重要的数据类型之一
股价、汇率为常见的时间序列数据
趋势分析:
主要分析时间序列在某一方向上持续运动
在量化交易领域,我们通过统计手段对投资品的收益率进行时间序列建模,以此来预测未来的收益率并产生交易信
序列相关性:
金融时间序列的一个最重要特征是序列相关性
以投资品的收益率序列为例,我们会经常观察到一段时间内的收益率之间存在正相关或者负相关

Pandas时间序列函数

datetime:
时间序列最常用的数据类型
方便进行各种时间类型运算
loc:
Pandas中对DateFrame进行筛选的函数,相当于SQL中的where
groupby:
Pandas中对数据分组函数,相当于SQL中的GroupBy
读取数据

    def testReadFile(self):
        file_name = r"D:\lhjytest\demo.csv"
        df = pd.read_csv(file_name)

        print(df.info())
        print("-------------")
        print(df.describe())

image.png
image.png
时间处理

    def testTime(self):
        file_name = r"D:\lhjytest\demo.csv"
        df = pd.read_csv(file_name)
        df.columns = ["stock_id","date","close","open","high","low","volume"]
        df["date"] = pd.to_datetime(df["date"])
        df["year"] = df["date"].dt.year
        df["month"] = df["date"].dt.month
        print(df)

image.png
最低收盘价

    def testCloseMin(self):
        file_name = r"D:\lhjytest\demo.csv"
        df = pd.read_csv(file_name)
        df.columns = ["stock_id","date","close","open","high","low","volume"]

        print("""close min : {}""".format(df["close"].min()))
        print("""close min index : {}""".format(df["close"].idxmin()))
        print("""close min frame : {}""".format(df.loc[df["close"].idxmin()]))

image.png
每月平均收盘价与开盘价

    def testMean(self):
        file_name = r"D:\lhjytest\demo.csv"
        df = pd.read_csv(file_name)
        df.columns = ["stock_id","date","close","open","high","low","volume"]

        df["date"] = pd.to_datetime(df["date"])
        df["month"] = df["date"].dt.month

        print("""month close mean : {}""".format(df.groupby("month")["close"].mean()))
        print("""month open mean : {}""".format(df.groupby("month")["open"].mean()))

image.png
算涨跌幅

# 涨跌幅今日收盘价减去昨日收盘价
    def testRipples_ratio(self):
        file_name = r"D:\lhjytest\demo.csv"
        df = pd.read_csv(file_name)
        df.columns = ["stock_id","date","close","open","high","low","volume"]

        df["date"] = pd.to_datetime(df["date"])

        df["rise"] = df["close"].diff()
        df["rise_ratio"] = df["rise"] / df.shift(-1)["close"]

        print(df)

image.png
计算股价移动平均

def testMA(self):
    file_name = r"D:\lhjytest\demo.csv"
    df = pd.read_csv(file_name)
    df.columns = ["stock_id","date","close","open","high","low","volume"]

    df['ma_5'] = df.close.rolling(window=5).mean()
    df['ma_10'] = df.close.rolling(window=10).mean()
    df = df.fillna(0)

    print(df)

image.png

K线图

K线图
K线图蕴含大量信息,能显示股价的强弱、多空双方的力量对比,是技术分析最常见的工具

K线图实现

Matplotlib
一个Python 的 2D绘图库,窗以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形
matplotlib finance
python 中可以用来画出蜡烛图线图的分析工具,目前已经从 matplotlib 中独立出来
读取股票数据,画出K线图

    def testKLineChart(self):
        file_name = r"D:\lhjytest\demo.csv"
        df = pd.read_csv(file_name)
        df.columns = ["stock_id","date","close","open","high","low","volume"]

        fig = plt.figure()
        axes = fig.add_subplot(111)
        candlestick2_ochl(ax=axes,opens=df["open"].values,closes=df["close"].values,highs=df["high"].values,
                          lows=df["low"].values,width=0.75,colorup='red',colordown='green')
        plt.xticks(range(len(df.index.values)),df.index.values,rotation=30)
        axes.grid(True)
        plt.title("K-Line")
        plt.show()

image.png

 def testKLineByVolume(self):
        file_name = r"D:\lhjytest\demo.csv"
        df = pd.read_csv(file_name)
        df.columns = ["stock_id","date","close","open","high","low","volume"]
        df = df[["date","close","open","high","low","volume"]]
        df["date"] = pd.to_datetime(df["date"])
        df = df.set_index('date')

        my_color = mpf.make_marketcolors(
            up = 'red',
            down = 'green',
            wick = 'i',
            volume = {'up':'red','down':'green'},
            ohlc = 'i'
        )

        my_style  = mpf.make_mpf_style(
            marketcolors = my_color,
            gridaxis = 'both',
            gridstyle = '-.',
            rc = {'font.family':'STSong'}
        )

        mpf.plot(
            df,
            type = 'candle',
            title = 'K-LineByVolume',
            ylabel = 'price',
            style = my_style,
            show_nontrading = False,
            volume = True,
            ylabel_lower = 'volume',
            datetime_format = '%Y-%m-%d',
            xrotation = 45,
            linecolor = '#00ff00',
            tight_layout = False
        )

image.png
K线图带交易量及均线

   def testKLineByMA(self):
        file_name = r"D:\lhjytest\demo.csv"
        df = pd.read_csv(file_name)
        df.columns = ["stock_id","date","close","open","high","low","volume"]
        df = df[["date","close","open","high","low","volume"]]
        df["date"] = pd.to_datetime(df["date"])
        df = df.set_index('date')

        my_color = mpf.make_marketcolors(
            up = 'red',
            down = 'green',
            wick = 'i',
            volume = {'up':'red','down':'green'},
            ohlc = 'i'
        )

        my_style  = mpf.make_mpf_style(
            marketcolors = my_color,
            gridaxis = 'both',
            gridstyle = '-.',
            rc = {'font.family':'STSong'}
        )

        mpf.plot(
            df,
            type = 'candle',
            mav = [5,10],
            title='K-LineByVolume',
            ylabel='price',
            style=my_style,
            show_nontrading=False,
            volume=True,
            ylabel_lower='volume',
            datetime_format='%Y-%m-%d',
            xrotation=45,
            linecolor='#00ff00',
            tight_layout=False
        )

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/350509.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ECharts 中 Legend自定义可以使用svg标签

效果图: legend图例加载svg标签 在ECharts中,图例(legend)组件的formatter属性允许你自定义图例文本的格式。但是,formatter属性不支持直接加载SVG标签或Html。它接受一个字符串或者一个函数作为输入,并不能解析或渲染SVG。 如果…

白居易上班摸鱼闲不住,花非花,雾非雾

所有的成功都不是偶然的,一定有不为人知的付出。白居易,字乐天,号香山居士、醉吟先生。白居易小时候读书读到口舌生疮,练字练到手生茧子。 白居易的诗,通俗易懂,不识字的老妇人都听得懂。白居易写了大约30…

python小项目:口令保管箱

代码&#xff1a; #! python3 # python 编程-----口令保管箱passwords{emails: F7minlBDDuvMJuxESSKHFhTxFtjVB6,blog:VmALvQyKAxiVH5G8v01if1MLZF3sdt,luggage:12345,} import sys,pyperclip if len(sys.argv)<2:print(usage:python python3文件[accout]-copy accout pass…

KernelGPT: LLM for Kernel Fuzzing

KernelGPT: Enhanced Kernel Fuzzing via Large Language Models 1.Introduction2.Background2.1.Kernel and Device Drivers2.2.Kernel Fuzzing2.2.1.Syzkaller规约2.2.2.规约生成 3.Approach3.1.Driver Detection3.2.Specification Generation3.2.1.Command Value3.2.2.Argum…

【Java基础】聊聊你不知道的注解那些事

在实际的开发中&#xff0c;我们大量使用了注解&#xff0c;无论是spring、还是本身jdk提供的&#xff0c;注解都是围绕一个java程序员的开发生活&#xff0c;所以本篇主要介绍注解相关的概念、理论、实践。 定义注解 注解和异常非常相似&#xff0c;都可以自定义&#xff0c…

CDR绘图软件|安装教程来了(小白福利:有红包封面领取哦!)

前言 今天给小伙伴们讲讲&#xff1a;如何安装CDR软件。 如果未来的你想从事平面设计/广告行业&#xff0c;那应该就会接触到CDR这款软件。 CorelDRAW Graphics Suite是加拿大Corel公司的平面设计软件&#xff1b;该软件是Corel公司出品的矢量图形制作工具软件&#xff0c;这…

ShardingSphere之ShardingJDBC客户端分库分表上

目录 什么是ShardingSphere&#xff1f; 客户端分库分表与服务端分库分表 ShardingJDBC客户端分库分表 ShardingProxy服务端分库分表 ShardingSphere实现分库分表的核心概念 ShardingJDBC实战 什么是ShardingSphere&#xff1f; ShardingSphere是一款起源于当当网内部的应…

HubSpot数字化推广:突破传统,拓展创新的边界

在当今数字化时代&#xff0c;营销策略的创新成为企业取得竞争优势的关键。HubSpot作为数字化推广领域的领军者&#xff0c;不断开辟着创新营销之路&#xff0c;引领着数字化推广的新篇章。运营坛今天将深入探讨HubSpot是如何在数字化推广中实现创新&#xff0c;并为企业开启新…

如何在Vue项目中应用TypeScript?

文章目录 一、前言二、使用Componentcomputed、data、methodspropswatchemit 三 、总结 一、前言 与link类似 在VUE项目中应用typescript&#xff0c;我们需要引入一个库vue-property-decorator&#xff0c; 其是基于vue-class-component库而来&#xff0c;这个库vue官方推出…

体验华为云对话机器人服务 CBS

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 前言一、开通…

幻兽帕鲁服务器一键搭建脚本

前言 幻兽帕鲁刚上线就百万在线人数。官方服务器的又经常不稳定。所以这里给大家带来最快捷的搭建教程。废话不多说直接开始。 服务器配置要求 这里推荐腾讯云的轻量云服务器 测试环境&#xff1a; CPU &#xff1a; 2核 内存&#xff1a;4GB 系统&#xff1a;Debian 12 64…

nginx反向代理负载均衡

一&#xff0c;kali作为负载服务器 打开kali nginx服务&#xff0c;访问页面如下 使用docker拉取nginx&#xff0c;并做出端口映射 ┌──(root?kali)-[/etc/nginx] └─# docker pull nginx ┌──(root㉿kali)-[/etc/nginx] └─# docker run -p 11111:80 --name Jdr -d ng…

开源模型部署及使用

开源模型部署及使用 1.Langchain-Chatchat1.环境2.运行3.效果 2.facefusion1.环境2.运行3.效果 3.Aquila1.环境2.运行 1.Langchain-Chatchat Langchain-Chatchat这里面可以调用许多模型&#xff0c;我本地下载了chatglm3模型文件&#xff0c;所以就用这个模型。 1.环境 根据…

蓝桥杯(C++ 左移右移 买二增一 松散子序列 填充 有奖问答 更小的数 )

目录 左移右移 思路&#xff1a; 代码&#xff1a; 买二增一 思路&#xff1a; 代码&#xff1a; 松散子序列 思路&#xff1a; 代码&#xff1a; 填充 思路&#xff1a; 代码 &#xff1a; 有奖问答 思路&#xff1a; 代码&#xff1a; 更小的数 思路&#…

Java强训day4(选择题编程题)

选择题 接口中的方法是为了让重写编程题 题目 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int a_b sc.nextInt();int b_c sc.nextInt();int ab sc.nextInt();int bc sc.nextInt();for(in…

面向社交网络语言隐写分析

论文&#xff1a;Linguistic Steganalysis Toward Social Network 发表在&#xff1a;IEEE Transactions on Information Forensics & Security是网络与信息安全领域的国际两大顶级期刊之一&#xff0c;中国计算机学会&#xff08;CCF&#xff09;推荐的A类期刊&#xff0c…

Git 删除已经 Push 到远程多余的文件

例如要删除 data/log 文件 1. 在当前项目下打开终端 2. 查看有哪些文件夹 dir 3. 预览将要删除的文件&#xff08;如果不清楚该目录下是否存在不应该删除的文件&#xff09; git rm -r -n --cached 文件/文件夹名称 加上 -n 这个参数&#xff0c;执行命令时&#xff0c;是不会…

ubuntu设置右键打开terminator、code

前言&#xff1a; 这里介绍一种直接右键打开本地目录下的terminator和vscode的方法。 一&#xff1a;右键打开terminator 1.安装terminator sudo apt install terminator 2.安装nautilus-actions filemanager-actions sudo apt-get install nautilus-actions filemanager…

Open CASCADE学习|圆柱螺旋线绘制原理探究

1、圆柱螺旋线绘制原理 在OCC中&#xff0c;圆柱面的参数方程为&#xff1a; 设P为&#xff08;x0,y0,z0&#xff09;,则 xx0r*cos(u) yy0r*sin(u) zz0v 但u、v之间有关系时&#xff0c;此方程表达为圆柱螺旋线&#xff0c;u、v之间为线性关系时是等螺距螺旋线&#xff0…

数位dp,HDU 4151 The Special Number

一、题目 1、题目描述 In this problem, we assume the positive integer with the following properties are called ‘the special number’: 1) The special number is a non-negative integer without any leading zero. 2) The numbers in every digit of the special nu…