python pandas处理股票量化数据:笔记2

有一个同学用我的推荐链接注册了tushare社区帐号https://tushare.pro/register?reg=671815,现在有了170分积分。目前使用数据的频率受限制。不过可以在调试期间通过python控制台获取数据,将数据保存在本地以后使用不用高频率访问tushare数据接口,访问频率限制影响不大。

>>> data = pro.stock_basic(fields='ts_code,symbol,name,area,industry,list_date,market,is_hs,list_status,exchange,delist_date,curr_type')>>> type(data)
<class 'pandas.core.frame.DataFrame'>
>>> datats_code  symbol     name  area  ... list_status list_date delist_date is_hs
0     000001.SZ  000001     平安银行    深圳  ...           L  19910403        None     S
1     000002.SZ  000002      万科A    深圳  ...           L  19910129        None     S
2     000004.SZ  000004     国华网安    深圳  ...           L  19910114        None     N
3     000006.SZ  000006     深振业A    深圳  ...           L  19920427        None     S
4     000007.SZ  000007    *ST全新    深圳  ...           L  19920413        None     N
...         ...     ...      ...   ...  ...         ...       ...         ...   ...
5360  873726.BJ  873726     卓兆点胶    江苏  ...           L  20231019        None     N
5361  873806.BJ  873806      云星宇    北京  ...           L  20240111        None     N
5362  873833.BJ  873833     美心翼申    重庆  ...           L  20231108        None     N
5363  920002.BJ  920002     万达轴承  None  ...           L  20240530        None     N
5364  689009.SH  689009  九号公司-WD    北京  ...           L  20201029        None  None[5365 rows x 12 columns]
>>> data.info
<bound method DataFrame.info of         ts_code  symbol     name  area  ... list_status list_date delist_date is_hs
0     000001.SZ  000001     平安银行    深圳  ...           L  19910403        None     S
1     000002.SZ  000002      万科A    深圳  ...           L  19910129        None     S
2     000004.SZ  000004     国华网安    深圳  ...           L  19910114        None     N
3     000006.SZ  000006     深振业A    深圳  ...           L  19920427        None     S
4     000007.SZ  000007    *ST全新    深圳  ...           L  19920413        None     N
...         ...     ...      ...   ...  ...         ...       ...         ...   ...
5360  873726.BJ  873726     卓兆点胶    江苏  ...           L  20231019        None     N
5361  873806.BJ  873806      云星宇    北京  ...           L  20240111        None     N
5362  873833.BJ  873833     美心翼申    重庆  ...           L  20231108        None     N
5363  920002.BJ  920002     万达轴承  None  ...           L  20240530        None     N
5364  689009.SH  689009  九号公司-WD    北京  ...           L  20201029        None  None[5365 rows x 12 columns]>
>>> data.describe()ts_code  symbol  name  area  ... list_status list_date delist_date is_hs
count        5365    5365  5365  5358  ...        5365      5365           0  5364
unique       5365    5365  5364    32  ...           1      2727           0     3
top     000001.SZ  000001  三维股份    浙江  ...           L  20200727         NaN     N
freq            1       1     2   706  ...        5365        31         NaN  2481[4 rows x 12 columns]
>>> data.index
RangeIndex(start=0, stop=5365, step=1)
>>> data.columns
Index(['ts_code', 'symbol', 'name', 'area', 'industry', 'market', 'exchange','curr_type', 'list_status', 'list_date', 'delist_date', 'is_hs'],dtype='object')
>>> data.shape
(5365, 12)
>>> data.shape[0]
5365
>>> data.shape[1]
12
>>> data.values
array([['000001.SZ', '000001', '平安银行', ..., '19910403', None, 'S'],['000002.SZ', '000002', '万科A', ..., '19910129', None, 'S'],['000004.SZ', '000004', '国华网安', ..., '19910114', None, 'N'],...,['873833.BJ', '873833', '美心翼申', ..., '20231108', None, 'N'],['920002.BJ', '920002', '万达轴承', ..., '20240530', None, 'N'],['689009.SH', '689009', '九号公司-WD', ..., '20201029', None, None]],dtype=object)
>>> 
>>> print(data.dtypes)
ts_code        object
symbol         object
name           object
area           object
industry       object
market         object
exchange       object
curr_type      object
list_status    object
list_date      object
delist_date    object
is_hs          object
dtype: object
>>> 

1、DataFrame操作

tushare pro接口返回的数据类型<class 'pandas.core.frame.DataFrame'>

>>> type(data)
<class 'pandas.core.frame.DataFrame'>

从上面可以看到data = pro.stock_basic(fields='ts_code,symbol,name,area,industry,list_date,market,is_hs,list_status,exchange,delist_date,curr_type')返回的数据是[5365 rows x 12 columns]

pandas.DataFrame.info

打印一个DataFrame的简要介绍(index范围、columns的dtype、非空值的数量和内存的使用情况):

DataFrame.info(verbose=None, buf=None, max_cols=None, memory_usage=None, show_counts=None)[source]

verbose(adj 冗长的): bool, optional,决定是否打印完整的摘要, 如果为False,那么会省略一部分
buf: writable buffer, defaults to sys.stdout,,决定将输出发送到哪里,默认情况下, 输出打印到sys.stdout
max_cols: int, optional 从“详细输出”转换为“缩减输出”,如果DataFrame的列数超过max_cols,则缩减输出。
memory_usage: bool, str, optional 决定是否应显示DataFrame元素(包括索引)的总内存使用情况,默认情况下为True。True始终显示内存使用情况;False永远不会显示内存使用情况。
show_counts: bool, optional,是否显示非空值的数量,值为True始终显示计数,而值为False则不显示计数

>>> data.info(verbose=True)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5365 entries, 0 to 5364
Data columns (total 12 columns):
 #   Column       Non-Null Count  Dtype 
---  ------       --------------  ----- 
 0   ts_code      5365 non-null   object
 1   symbol       5365 non-null   object
 2   name         5365 non-null   object
 3   area         5358 non-null   object
 4   industry     5358 non-null   object
 5   market       5365 non-null   object
 6   exchange     5365 non-null   object
 7   curr_type    5365 non-null   object
 8   list_status  5365 non-null   object
 9   list_date    5365 non-null   object
 10  delist_date  0 non-null      object
 11  is_hs        5364 non-null   object
dtypes: object(12)
memory usage: 251.5+ KB
>>> data.info(verbose=False)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5365 entries, 0 to 5364
Columns: 12 entries, ts_code to is_hs
dtypes: object(12)
memory usage: 251.5+ KB
>>> 

>>> print(data.tail())
        ts_code  symbol     name  area  ... list_status list_date delist_date is_hs
5360  873726.BJ  873726     卓兆点胶    江苏  ...           L  20231019        None     N
5361  873806.BJ  873806      云星宇    北京  ...           L  20240111        None     N
5362  873833.BJ  873833     美心翼申    重庆  ...           L  20231108        None     N
5363  920002.BJ  920002     万达轴承  None  ...           L  20240530        None     N
5364  689009.SH  689009  九号公司-WD    北京  ...           L  20201029        None  None

[5 rows x 12 columns]
>>> print(data.head())
     ts_code  symbol   name area  ... list_status list_date delist_date is_hs
0  000001.SZ  000001   平安银行   深圳  ...           L  19910403        None     S
1  000002.SZ  000002    万科A   深圳  ...           L  19910129        None     S
2  000004.SZ  000004   国华网安   深圳  ...           L  19910114        None     N
3  000006.SZ  000006   深振业A   深圳  ...           L  19920427        None     S
4  000007.SZ  000007  *ST全新   深圳  ...           L  19920413        None     N

[5 rows x 12 columns]
>>> 

# 获得DataFrame行索引信息

data.index

# 获得DataFrame列索引信息

data.columns

# 获得DataFrame的size

data.shape

# 获得DataFrame的行数

data.shape[0]

# 获得DataFrame的 列数

data.shape[1]

# 获得DataFrame中的值

data.values

# 获得DataFrame中列值数据类型

data.dtypes

Pandas describe() 

Pandas describe()用于查看一些基本的统计详细信息,例如每列的均值、标准差、最大值、最小值和众数

>>> data.describe()
          ts_code  symbol  name  area  ... list_status list_date delist_date is_hs
count        5365    5365  5365  5358  ...        5365      5365           0  5364
unique       5365    5365  5364    32  ...           1      2727           0     3
top     000001.SZ  000001  三维股份    浙江  ...           L  20200727         NaN     N
freq            1       1     2   706  ...        5365        31         NaN  2481

[4 rows x 12 columns]

>>> type(data.describe())
<class 'pandas.core.frame.DataFrame'>
>>> 

describe()的输出也是DataFrame

>>> import pandas as pd
>>> import pdb
>>> 
dict_data={"X":list("abcdef"),"Y":list("defghi"),"Z":list("ghijkl")}
df=pd.DataFrame.from_dict(dict_data)
df.index=["A","B","C","D","E","F"]>>> dfX  Y  Z
A  a  d  g
B  b  e  h
C  c  f  i
D  d  g  j
E  e  h  k
F  f  i  l
>>> df.describe()X  Y  Z
count   6  6  6
unique  6  6  6
top     a  d  g
freq    1  1  1
>>> 
>>> type(df.describe())
<class 'pandas.core.frame.DataFrame'>
>>> 
>>> # A 行 X 列数据,必须两个数据都输入,否则报错
print(df.at["A","X"]) 
# 第二 行 第二 列数据,序号从0开始
print(df.iat[2,2]) 
a
i
>>>
>>> # 指定行名和列名的方式,和at的用法相同
print(df.loc["A","X"],"\n","*"*20)# 可以完整切片,这是 at 做不到的
print(df.loc[:,"X"],"\n","*"*20)# 可以从某一行开始切片
print(df.loc["B":,"X"],"\n","*"*20)# 可以只切某一列
print(df.loc["B",:],"\n","*"*20)# 和指定上一条代码效果是一样的
print(df.loc["B"],"\n","*"*20)
a ********************
A    a
B    b
C    c
D    d
E    e
F    f
Name: X, dtype: object ********************
B    b
C    c
D    d
E    e
F    f
Name: X, dtype: object ********************
X    b
Y    e
Z    h
Name: B, dtype: object ********************
X    b
Y    e
Z    h
Name: B, dtype: object ********************
>>> 
>>> # 指定行号和列号的方式,和 loc 的用法相同
print(df.iloc[0,0],"\n","*"*20)# 可以完整切片
print(df.iloc[:,0],"\n","*"*20)# 可以从某一行开始切片
print(df.iloc[1:,0],"\n","*"*20)# 可以只切某一列
print(df.iloc[1,:],"\n","*"*20)# 和指定上一条代码效果是一样的
print(df.iloc[1],"\n","*"*20)
a ********************
A    a
B    b
C    c
D    d
E    e
F    f
Name: X, dtype: object ********************
B    b
C    c
D    d
E    e
F    f
Name: X, dtype: object ********************
X    b
Y    e
Z    h
Name: B, dtype: object ********************
X    b
Y    e
Z    h
Name: B, dtype: object ********************
>>>

DataFrame索引数据 

at 函数:通过行名和列名来取值

loc函数主要通过 行标签 索引行数据

iloc函数主要通过行号、索引行数据

导出数据

dataframe可以使用to_csv方法方便地导出到csv文件中,如果数据中含有中文,一般encoding指定为”utf-8″,否则导出时程序会因为不能识别相应的字符串而抛出异常,index指定为False表示不用导出dataframe的index数据。

>>> data.to_csv("C:\\Users\\Downloads\\stock.csv", index=False)
>>> data.to_csv("C:\\Users\\Downloads\\stock_indx.csv", index=True)

index为False和True时区别如下

从文件读取数据到pandas

pandas在读取csv文件是通过read_csv这个函数读取 

base_data = pd.read_csv("C:\\Users\\Downloads\\stock.csv")

base_data1 = pd.read_csv("C:\\Users\\Downloads\\stock_idx.csv") #比上一个文件多一列

mysql数据库

mysql -u root -p
alter user root@localhost identified by 'password';create database stock;
use stockCREATE TABLE `stock_basic` (`index` int(11) DEFAULT NULL,`ts_code` varchar(12) DEFAULT NULL,`symbol` varchar(10) DEFAULT NULL,`name` varchar(10) DEFAULT NULL,`area` varchar(10) DEFAULT NULL,`industry` varchar(50) DEFAULT NULL,`market` varchar(10) DEFAULT NULL,`exchange` varchar(10) DEFAULT NULL,`curr_type` varchar(10) DEFAULT NULL,`list_status` varchar(5) DEFAULT NULL,`list_date` varchar(10) DEFAULT NULL,`delist_date` varchar(20) DEFAULT NULL,`is_hs` varchar(5) DEFAULT NULL,KEY `ix_stock_basic_index` (`index`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;mysql> show tables;
+-----------------+
| Tables_in_stock |
+-----------------+
| stock_basic     |
+-----------------+
1 row in set (0.00 sec)mysql>quit

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

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

相关文章

Mybatis用Map接收返回值可能出现的问题

先看一个示例 明明定义了Map<String,String> 实际内部存放的是Integer resultType是Map 也就是说Mybatis是通过反射将类型放进去的 躲过了编辑器检查 但是这样取值时候就会报类型转换错误 解决方式 resultMap 另外一种方式 用Number Integer和Double的父类 Ma…

Excel/WPS《超级处理器》功能介绍与安装下载

超级处理器是基于Excel或WPS开发的一款插件&#xff0c;拥有近300个功能&#xff0c;非常简单高效的处理表格数据&#xff0c;安装即可使用。 点击此处&#xff1a;超i处理器安装下载 Excel菜单&#xff0c;显示如下图所示&#xff1a; WPS菜单显示&#xff0c;如下图所示&am…

15.混合专家模型(MoEs)技术揭秘

混合专家模型&#xff08;MoEs&#xff09;技术揭秘 混合专家模型&#xff08;Mixture-of-Experts, MoEs&#xff09;技术发展简史 Mixtral 8x7B &#xff1a;质效并举的稀疏混合专家模型 Mixtral 8x7B &#xff1a;质效并举的稀疏混合专家模型 MoEs 技术发展简史 MoEs 开山…

matplotlib twinx多y轴但单个图例

matplotlib 用 twinx 画多 y 轴参考 [1]。现想在画图例时&#xff0c;多个 y 轴的图例画在一起&#xff0c;写法参考 [2]。本文展示一个简例&#xff0c;效果&#xff1a; Code 要手动指定颜色&#xff0c;否则原 y 轴的用色和新 y 轴会重合。 import matplotlib.pyplot as…

永磁同步直线电机(PMLSM)控制与仿真2-永磁同步直线电机数学模型搭建

文章目录 1、公式总结2、电压方程模型3、运动方程4、推力方程5、转化关系 写在前面&#xff1a;原本为一篇文章写完了永磁同步直线电机数学模型介绍&#xff0c;永磁同步直线电机数学模型搭建&#xff0c;以及永磁同步直线电机三环参数整定及三环仿真模型搭建&#xff0c;但因为…

TCP及UDP协议

tcp是点到点的&#xff0c;只有一条路径&#xff0c;到达顺序和发送顺序是相同的 回复的确认号是序发送端的序列号加上data的长度 1910 发送端的序列号也是那么算的 ack和下一个seq一样 那就没问题 三次握手四次挥手&#xff1a; 为啥是三次呢&#xff1f; 假如一次&#xf…

关于Linux ping 不通外网

网关为第三段为137那么子网ip第三段必须为137且IPaddr必须为137 将主机虚拟适配器连接到此网络必须勾上&#xff0c;不然vmnet适配器在windows将找不到 ping www.baidu.com不行的话试着勾上桥接模式应该是不行在勾上取消勾上桥接模式最后勾上nat模式

【2024亲测无坑】在Centos.7虚拟机上安装Oracle 19C

目录 一、安装环境准备 1、linux虚拟机安装 2、虚拟机快照 3、空间检查&软件上传 二、Oracle软件安装 1.preinstall安装及其他配置准备 2.oracle安装 三、数据库实例的安装 1.netca——网络配置助手 2.dbca——数据库配置助手 四、ORACLE 19C 在linux centos 7上…

Linux rm命令由于要删的文件太多报-bash: /usr/bin/rm:参数列表过长,无法删除的解决办法

银河麒麟系统&#xff0c;在使用rm命令删除文件时报了如下错误&#xff0c;删不掉&#xff1a; 查了一下&#xff0c;原因就是要删除的文件太多了&#xff0c;例如我当前要删的文件共有这么多&#xff1a; 查到了解决办法&#xff0c;记录在此。需要使用xargs命令来解决参数列表…

誉天教育近期开班计划(6月15日更新)

云计算HCIP 周末班 2024/6/15 田老师 售前IP-L3 周末班 2024/6/15 陈老师 RHCA442 晚班 2024/6/17邹老师 数通HCIE 晚班 2024/6/24阮老师 云计算HCIE直通车晚班 2024/6/25 曾老师 售前IT-L3 周末班 2024/6/29 伍老师 数通HCIP 晚班 2024/7/1杨老师 存储直通车 晚班 2024/7/1 高…

【NoSQL数据库】Redis Cluster集群(含redis集群扩容脚本)

Redis Cluster集群 Redis ClusterRedis 分布式扩展之 Redis Cluster 方案功能数据如何进行存储 redis 集群架构集群伸缩向集群中添加一个新的master节点&#xff0c;并向其中存储 num10 .脚本对redis集群扩容缩容&#xff0c;脚本参数为redis集群&#xff0c;固定从6001移动200…

了解统计学中不同类型的分布

目录 一、说明 二、均匀分布&#xff1a; 三、机器学习和数据科学中的均匀分布示例&#xff1a; 3.1 对数正态分布&#xff1a; 3.2 机器学习和数据科学中的对数正态分布示例&#xff1a; 四、 帕累托分布 4.1 什么是幂律&#xff1f; 4.2 机器学习和数据科学中的帕累托分布示例…

如何清除anaconda3缓存?

如果长期使用anaconda不清理缓存&#xff0c;会导致anaconda占用磁盘空间越来越多&#xff0c;甚至系统磁盘撑爆。 清除包缓存&#xff1a; 打开 Anaconda Prompt 或者命令行窗口。运行以下命令清除包缓存&#xff1a;conda clean --all这会清除所有的包缓存&#xff0c;释放磁…

docker下载ridis

1、执行 docker pull redis:4.0.1 命令&#xff0c;下载 redis 镜像 &#xff08;需确保装有并启动bocker&#xff09; 通过docker启动redis 分配端口和端口映射 密码等 rootiZf8z985hmyc9bkejcfmqrZ:~# docker run --rm -d --name redis6379 -p 6379:6379 redis:4.0.1 --req…

1.个人博客系统项目

一、项目介绍 个人博客系统 相关技术&#xff1a; SpringBootSpringMvcMybatisMysqlRedis项目简介&#xff1a;本项目为一个功能完善的个人博客系统&#xff0c;支持文章的编辑、修改、删除和发布&#xff0c;以及作者个人信息的展示等功能。项目描述&#xff1a; 采用前后端…

利用钉钉机器人和PHP开发一款免费的网站可用性检测工具,单节点版

前言 手里有几套系统正在运维&#xff0c;需要保障正常运行&#xff0c;所以可用性检测就必不可少啦&#xff0c; 以前本来是用的阿里官方的云监控&#xff0c;但现在价格感觉太贵了&#xff0c;不划算 那就自己手搓一个简易版的监控吧。 成品效果展示 代码展示 <?php …

微信小程序毕业设计-实验室管理系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

centos环境上:k8s 简单安装教程

本次演示安装3节点k8s环境&#xff0c;无需多言&#xff0c;直接上操作步骤&#xff1a; 1、环境准备 k8s部署前&#xff0c;首先需要准备好环境&#xff0c;除了1.4 步骤&#xff0c;其他步骤在所有&#xff08;3个&#xff09;节点上都要执行&#xff1a; 1.1 关闭防火墙 s…

【工具】新手如何正确使用Pycharm?

1. 什么是JetBrains Toolbox JetBrains Toolbox是一个管理工具&#xff0c;用于安装、更新和管理JetBrains开发工具的所有版本。它可以简化多个IDE的管理&#xff0c;并确保你总是使用最新版本的软件。 2. 安装JetBrains Toolbox 步骤1&#xff1a;下载Toolbox 访问JetBrai…

非关系型数据库NoSQL数据层解决方案 之 redis springboot整合与读写操作 2024详解以及window版redis5.0.14下载百度网盘

redis下载安装以及基本使用 下载地址 链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;0410 一个名对应一个数值 内存级 在内存里进行操作 准备启动 我们现在就有一个redis客户端的服务器了 我们再启动一个cmd 操作redis数据库 redis里面的基本数据类型有五种 …