使用baostock获取上市公司情况

news2024/9/24 3:30:06

起因是有个不知道什么专业的同学问了我一题在这里插入图片描述
结构
cs:

import baostock as bs
import pandas as pd
import datetime

'''
日线指标参数包括:'date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,peTTM,pbMRQ,psTTM,pcfNcfTTM,isST'
周、月线指标参数包括:'date,code,open,high,low,close,volume,amount,adjustflag,turn,pctChg'
分钟指标参数包括:'date,time,code,open,high,low,close,volume,amount,adjustflag'

adjustflag:复权类型,默认不复权:3;1:后复权;2:前复权。已支持分钟线、日线、周线、月线前后复权。
'''

# 是否删除停盘数据
DROP_SUSPENSION = True


def update_stk_list(date=None):
    # 获取指定日期的指数、股票数据
    stock_rs = bs.query_all_stock(date)
    stock_df = stock_rs.get_data()
    stock_df.to_csv('./stk_data/all_list.csv', encoding='gbk', index=False)
    stock_df.drop(stock_df[stock_df.code < 'sh.600519'].index, inplace=True)
    stock_df.drop(stock_df[stock_df.code > 'sh.600519'].index, inplace=True)
    stock_df = stock_df['code']
    stock_df.to_csv('./stk_data/stk_list.csv', encoding='gbk', index=False)
    return stock_df.tolist()


def load_stk_list():
    df = pd.read_csv('./stk_data/stk_list.csv')
    return df['code'].tolist()


def convert_time(t):
    H = t[8:10]
    M = t[10:12]
    S = t[12:14]
    return H + ':' + M + ':' + S


def download_data(stk_list=[], fromdate='2013-1-1', todate=datetime.date.today(),
                  datas='date,open,high,low,close,volume,amount,turn,pctChg',
                  frequency='d', adjustflag='2'):
    for code in stk_list:
        print("Downloading :" + code)
        k_rs = bs.query_history_k_data_plus(code, datas, start_date=fromdate, end_date=todate.strftime('%Y-%m-%d'),
                                            frequency=frequency, adjustflag=adjustflag)
        datapath = './stk_data/' + frequency + '/' + code + '.csv'
        out_df = k_rs.get_data()
        if DROP_SUSPENSION and 'volume' in list(out_df):
            out_df.drop(out_df[out_df.volume == '0'].index, inplace=True)
        # 做time转换
        if frequency in ['5', '15', '30', '60'] and 'time' in list(out_df):
            out_df['time'] = out_df['time'].apply(convert_time)
        out_df.to_csv(datapath, encoding='gbk', index=False)


if __name__ == '__main__':
    bs.login()

    # 首次运行
    stk_list = update_stk_list(datetime.date.today() - datetime.timedelta(days=31))
    # 非首次运行
    # stk_list = load_stk_list()

    # 下载日线
    download_data(stk_list)
    # 下载周线
    download_data(stk_list, frequency='w')
    # 下载月线
    download_data(stk_list, frequency='m')
    # 下载5分钟线
    download_data(stk_list, fromdate='2013-6-1', frequency='5',
                  datas='date,time,open,high,low,close,volume,amount,adjustflag')
    # 下载15分钟线
    download_data(stk_list, fromdate='2013-6-1', frequency='15',
                  datas='date,time,open,high,low,close,volume,amount,adjustflag')
    # 下载30分钟线
    download_data(stk_list, fromdate='2013-6-1', frequency='30',
                  datas='date,time,open,high,low,close,volume,amount,adjustflag')
    # 下载60分钟线
    download_data(stk_list, fromdate='2013-6-1', frequency='60',
                  datas='date,time,open,high,low,close,volume,amount,adjustflag')
    bs.logout()

cs2:

import pandas as pd
import matplotlib.pyplot as plt

# 从CSV文件中读取股票信息
df = pd.read_csv('./stk_data/m/sh.600519.csv')  # 请替换为你的CSV文件路径

# 将日期列转换为日期时间类型
df['date'] = pd.to_datetime(df['date'])

# 设置图表字体为支持中文的字体(例如SimHei或Microsoft YaHei)
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置中文字体
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示为方块的问题

# 绘制股票信息的图表
plt.figure(figsize=(12, 6))
plt.plot(df['date'], df['close'], marker='o', linestyle='-', color='b', label='收盘价')
plt.plot(df['date'], df['open'], marker='o', linestyle='-', color='g', label='开盘价')

# 自定义图表标签和标题
plt.xlabel('日期')
plt.ylabel('价格')
plt.title('股票收盘价和开盘价')
plt.xticks(rotation=45)  # 旋转x轴标签,使其更易读

# 添加图例
plt.legend()

# 显示图表
plt.tight_layout()  # 自动调整图表布局,防止标签重叠
plt.show()

请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CompletableFuture的理解

CompletableFuture 是 JDK1.8 里面引入的一个基于事件驱动的异步回调类。简单来说&#xff0c;就是当使用异步线程去执行一个任务的时候&#xff0c;我们希望在任务结束以后触发一个后续的动作。而 CompletableFuture 就可以实现这个功能。 业务问题 举个简单的例子&#xff0…

最长公共子序列(LCS)与最长上升子序列(LIS)问题的相互转换

在此只做直观理解&#xff0c;不做严格证明 参考&#xff1a;LCS 问题与 LIS 问题的相互关系&#xff0c;以及 LIS 问题的最优解证明 LCS转LIS LCS转LIS只能对特殊情况适用。即当LCS中两个数组有一个不存在重复元素的情况下才能进行转换。 我们以一个例子进行说明&#xff0c…

leetCode 76. 最小覆盖子串 + 滑动窗口 + 哈希Hash

我的往期文章&#xff1a;此题的其他解法&#xff0c;感兴趣的话可以移步看一下&#xff1a; leetCode 76. 最小覆盖子串 滑动窗口 图解&#xff08;详细&#xff09;-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/134042115?spm1001.2014.3001.5501 力…

XJ+Nreal 高精度地图+Nreal眼镜SDK到发布APK至眼镜中

仅支持Anroid平台 Nreal套装自带的计算单元&#xff0c;其实也是⼀个没有显示器的Android设备 新建unity⼯程&#xff0c;将⼯程切换Android平台。 正在上传…重新上传取消正在上传…重新上传取消 Cloud XDK Unity User Manual for Nreal ARGlasses 该XDK是针对 NReal AR 眼镜…

mysql源码安装

Linux环境 1、mysql下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/5.7.html#downloads 下载参考&#xff1a; 2、把下载的 MySQL 压缩包上传到 Linux 服务器 3、解压mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz tar -zxvf mysql-5.7.39-linux-glibc2.12-x86…

【UE】Rider编辑器错误 .NET SDK 的版本 6.0300 至少需要 MBuild 的 17.00 版本,当前可用的 MSuld 版本

异常&#xff1a;.NET SDK 的版本 6.0300 至少需要 MBuild 的 17.00 版本&#xff0c;当前可用的 MSuld 版本为 16.1.2.50704请在 global.json 中指定的 .NET SDK 更为需要当前可用的 MSBuld 版本的版本 解决 切换当前使用的MBuild版本 File->Settings…打开设置窗口 找到…

基于web和mysql的图书管理系统

系统分为用户端和管理员端 用户端功能如下 登陆注册数据一栏个人信息修改个人信息修改密码图书查询借阅信息借阅状态安全退出 管理员端功能如下 登录个人信息修改个人信息修改密码读者管理书籍管理借阅管理借阅状态安全退出 用户 管理员 源码下载地址 支持&#xff1a;远程…

javaswing/gui+mysql的学生信息管理系统

使用了Java Swing作为前端界面的开发工具&#xff0c;而 MySQL 作为后端数据库管理系统。这个系统主要用于学生信息的管理&#xff0c;包括班级和学生的增删改查操作。 在系统开发过程中&#xff0c;首先设计了数据库表结构&#xff0c;包括班级表和学生表&#xff0c;并定义了…

损失函数总结(九):SoftMarginLoss、MultiLabelSoftMarginLoss

损失函数总结&#xff08;九&#xff09;&#xff1a;SoftMarginLoss、MultiLabelSoftMarginLoss 1 引言2 损失函数2.1 SoftMarginLoss2.2 MultiLabelSoftMarginLoss 3 总结 1 引言 在前面的文章中已经介绍了介绍了一系列损失函数 (L1Loss、MSELoss、BCELoss、CrossEntropyLos…

NCCL后端

"NCCL" 代表 "NVIDIA Collective Communications Library"&#xff0c;"NVIDIA 集体通信库"&#xff0c;它是一种由 NVIDIA 开发的用于高性能计算的通信库。NCCL 专门设计用于加速 GPU 群集之间的通信&#xff0c;以便在并行计算和深度学习等领域…

智能直播,助力新营销战场 !降本增效,新消费市场唾手可得

在当今竞争激烈的全球商业环境中&#xff0c;企业们迫切需要降低成本、提高效率&#xff0c;物联网&#xff08;IoT&#xff1a;Internet of Things&#xff09;的快速崛起为企业提供了全新的增长动力。它直接改变了人们的生活方式&#xff0c;其中最突出的表现就是网购&#x…

每日一题 2558. 从数量最多的堆取走礼物(简单,heapq)

怎么这么多天都是简单题&#xff0c;不多说了 class Solution:def pickGifts(self, gifts: List[int], k: int) -> int:gifts [-gift for gift in gifts]heapify(gifts)for i in range(k):heappush(gifts, -int(sqrt(-heappop(gifts))))return -sum(gifts)

2023MathorCup(妈妈杯) 数学建模挑战赛 解题思路

云顶数模最新解题思路免费分享~~ 2023妈妈杯数学建模A题B题思路&#xff0c;供大家参考~~ A题 B题

ReentrantLock 是如何实现锁公平和非公平性的 ?

公平和非公平 公平&#xff0c;指的是竞争锁资源的线程&#xff0c;严格按照请求顺序来分配锁。非公平&#xff0c;表示竞争锁资源的线程&#xff0c;允许插队来抢占锁资源。ReentrantLock 默认采用了非公平锁的策略来实现锁的竞争逻辑。 ReentrantLock ReentrantLock 内部使…

C程序设计(第五版)谭浩强

目录 目录 第1章程序设计和C语言 ​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑第2章算法——程序的灵魂 ​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编…

Java面向对象(进阶)-- this关键字的使用

文章目录 一、引子&#xff08;1&#xff09; this是什么&#xff1f;&#xff08;2&#xff09;什么时候使用this1.实例方法或构造器中使用当前对象的成员2. 同一个类中构造器互相调用 二、探讨&#xff08;1&#xff09;问题&#xff08;2&#xff09;解决 三、this关键字&am…

sql---慢查询和语句耗时

查看当前会话的所有的sql语句耗时情况 profile 开启 查询指定sql的各个阶段耗时 查看执行计划指令 Explain Explain select * from 表 Index 和 all 属于性能不太好 在不扫描得的情况下才可能为null&#xff0c;index表示使用了索引但是扫描了所有的索引&#xff…

Java 入门指南:使用 Docker 创建容器化 Spring Boot 应用程序

文章目录 步骤 1: 准备工作步骤 2: 克隆 Spring Boot 应用程序步骤 3: 创建 Dockerfile步骤 4: 构建 Docker 映像步骤 5: 运行容器步骤 6: 链接到本地数据库步骤 7: 使用 Docker Compose 运行多个容器步骤 8: 设置 CI/CD 管道结论 &#x1f388;个人主页&#xff1a;程序员 小侯…

《SpringBoot项目实战》第三篇—留下用户调用接口的痕迹

系列文章导航 第一篇—接口参数的一些弯弯绕绕 第二篇—接口用户上下文的设计与实现 第三篇—留下用户调用接口的痕迹 第四篇—接口的权限控制 第五篇—接口发生异常如何统一处理 本文参考项目源码地址&#xff1a;summo-springboot-interface-demo 前言 大家好&#xff01;…

【QT开发(17)】2023-QT 5.14.2实现Android开发

1、简介 搭建Qt For Android开发环境需要安装的软件有&#xff1a; JAVA SDK &#xff08;jdk 有apt install 安装&#xff09; Android SDK Android NDKQT官网的介绍&#xff1a; Different Qt versions depend on different NDK versions, as listed below: Qt versionNDK…