python resample转换日K数据 (二)

2023-11-08 04:40
文章标签 python 数据 转换 resample

本文主要是介绍python resample转换日K数据 (二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

通过PythonAPI获取股票数据

聚宽

在这里插入图片描述

在这里插入图片描述

代码示例
获取平安银行的股票信息


from jqdatasdk import *
auth('','')#获取平安银行按1分钟为周期以“2015-01-30 14:00:00”为基础前4个时间单位的数据
df = get_price('000001.XSHE', end_date='2015-01-30 14:00:00',count=4, frequency='minute', fields=['open','close','high','low','volume','money'])
print(df)

在这里插入图片描述

可以看到官网有对每个API的介绍:
XSHG-上海证券交易所;XSHE-深圳证券交易所。

如何获取所有A股的行情数据


from jqdatasdk import *
import time#将所有股票列表转换成数组
stocks = list(get_all_securities(['stock']).index)for stock_code in stocks:print("正在获取股票行情数据,股票代码为:", stock_code)df = get_price(stock_code, end_date='2021-05-30 14:00:00',count=5, frequency='1d', fields=['open','close','high','low','volume','money'])print(df)time.sleep(3)

使用Resample函数转换 “”“日K”数据

一、什么是resample函数?
它是Python数据分析库Pandas的方法函数。

它主要用于转换时间序列的频次。可以做一些统计汇总的工作。

什么叫转换时间序列的频次呢?

比如说股票的日k和周k,

假设我只能获取到股票日K的数据,比如说11月1号到11月5号,那怎么样将它转换为以周为单位的K线呢?

在这里插入图片描述
首先我们要明确,周K的开盘、收盘、最高、最低是什么。每周的开盘价是当周第一天的开盘价,收盘价是当周最后一天的收盘价,它的最高价是这周最高的价格,最低价是本周所有最低价中最低的价格。所以你去看炒股平台,它的周k都是以周五的交易日为记录的时间点位置。开盘、收盘、最高、最低是按照我刚刚讲解的这个规则来计算的。至于月K、年K的选取规则也是一样的。月K的周期是一个月,年K的周期是一年。

这个计算准确性你也可以通过网上的数据进行验证。这个计算规则,包括开盘、收盘、最高、最低的计算,收拾resample函数可以做到的事情。此外Resample还有个功能,就是做统计汇总,比如说我想计算一支股票总的周成交量,就可以使用Resample.sum函数去把周一到周五的成交量加起来。

为了方便大家记忆 ,你也可以把resample理解为Excel表格中的透视表功能。你可以按照日期做各种筛选和汇总统计的。最重要的是他可以按照日期。

二、实战Resample函数
1.日K 转换为 周K
Resample是属于Pandas DataFrame下面的方法。
这里我们只对2个常用参数讲解,一个是rule,另一个是closed。

  • rule表示的是你放一个什么样的周期性指标在里面,用m代表Month,Y代表Year,w代表Week,
  • closed代表你取哪一个分界线,举例来说,比如说我把日k转换为周k,到底我是取周一为分界线还是周五为分界线呢?这就是通过closed来确定的。
from jqdatasdk import *
import pandas as pd#获取平安银行按1分钟为周期以“2015-01-30 14:00:00”为基础前4个时间单位的数据
df = get_price('000001.XSHE', end_date='2015-01-30 14:00:00',count=20, frequency='1d', fields=['open','close','high','low','volume','money'])
print(df)

在这里插入图片描述

可以看到获取到了4月28号到5月28号的所有数据。为了更方便理解 我们再添加一列数据,就是当前日期是星期几的列

from jqdatasdk import *
import pandas as pd#获取平安银行按1分钟为周期以“2015-01-30 14:00:00”为基础前4个时间单位的数据
df = get_price('000001.XSHE', end_date='2015-01-30 14:00:00',count=20, frequency='1d', fields=['open','close','high','low','volume','money'])
df["weekday"]=df.index.weekday
print(df)

在这里插入图片描述

这里0代表周一,这里如何转换为按“周”统计呢
.volume(成交量)和money(成交额)转换为总成交量和总成交额

from jqdatasdk import *
import pandas as pd#获取平安银行按1分钟为周期以“2015-01-30 14:00:00”为基础前4个时间单位的数据
df = get_price('000001.XSHE', end_date='2015-01-30 14:00:00',count=20, frequency='1d', fields=['open','close','high','low','volume','money'])
df["weekday"]=df.index.weekday
print(df)df_week = pd.DataFrame()
df_week['open'] = df['open'].resample('W').first()
df_week['close'] = df['close'].resample('W').last()
df_week['high'] = df['high'].resample('W').max()
df_week['low'] = df['low'].resample('W').min()
df_week['volume(sum)'] = df['volume'].resample('W').sum()
df_week['money(sum)'] = df['money'].resample('W').sum()print(df_week)

在这里插入图片描述

可以看到这里的2021-05-30是一个礼拜的最后一天。它对应的开盘价确实是这个数字。说明我们计算的周K数据是正确的。

收盘价就是每周收盘价最后一天的数据。

最高价就是每周收盘价的最大值。

最低价就是每周收盘价的最小值。

日K 转换为 月K

假设我有一年的数据,如果想转换为月K应该怎么转?
只需要改2个地方:

  • 添加start_date获取到一整年的数据
  • 将resample的参数改为M即可,M代表Month
#获取平安银行按1分钟为周期以“2015-01-30 14:00:00”为基础前4个时间单位的数据
df = get_price('000001.XSHE', end_date='2021-05-30 14:00:00', start_date='2020-05-30',frequency='1d', fields=['open','close','high','low','volume','money'])
df["weekday"]=df.index.weekday
print(df)df_week = pd.DataFrame()
df_week['open'] = df['open'].resample('M').first()
df_week['close'] = df['close'].resample('M').last()
df_week['high'] = df['high'].resample('M').max()
df_week['low'] = df['low'].resample('M').min()
df_week['volume(sum)'] = df['volume'].resample('M').sum()
df_week['money(sum)'] = df['money'].resample('M').sum()print(df_week)

在这里插入图片描述

这篇关于python resample转换日K数据 (二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/367934

相关文章

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Python Websockets库的使用指南

《PythonWebsockets库的使用指南》pythonwebsockets库是一个用于创建WebSocket服务器和客户端的Python库,它提供了一种简单的方式来实现实时通信,支持异步和同步... 目录一、WebSocket 简介二、python 的 websockets 库安装三、完整代码示例1.

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专