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'>
>>> data
        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.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"]

>>> df
   X  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 stock

CREATE 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

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

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

相关文章

【Spring】Spring事务相关源码分析

目录&#xff1a; 1.讲述事务的一些基础概念。 2.讲述事务的生命周期源码 3.配置事务&#xff0c;以及事务注解的源码 1.前言 具体事务中Spring是怎么管理事务&#xff0c;怎么去管理、创建、销毁等操作的呢&#xff1f;这一次来分解一下。 2.事务概述&#xff08;复习&a…

Vscode中使用make命令

前言 需要注意&#xff0c;如下操作需要进行网络代理&#xff0c;否则会出现安装失败的情况 安装 第一步 — 安装MingGW &#xff08;1&#xff09;进入官网下载 &#xff08;2&#xff09;下载完成之后&#xff0c;双击exe文件 &#xff08;3&#xff09;点击Install &#x…

Python设计模式 - 简单工厂模式

定义 简单工厂模式是一种创建型设计模式&#xff0c;它通过一个工厂类来创建对象&#xff0c;而不是通过客户端直接实例化对象。 结构 工厂类&#xff08;Factory&#xff09;&#xff1a;负责创建对象的实例。工厂类通常包含一个方法&#xff0c;根据输入参数的不同创建并返…

通信协议—Modbus

1、modbus简介 Modbus服务器&#xff1a;接收处理来自客户端的请求&#xff0c;并返回相应的响应&#xff1b; Modbus客户端&#xff1a;向Modbus服务器发送请求&#xff0c;并接收服务器返回的响应的设备或程序&#xff1b; 2、modbus poll调试工具下载 modbus poll用于测…

SpringCloud跨服务远程调用

随着项目的使用者越来越多&#xff0c;项目承担的压力也会越来越大&#xff0c;为了让我们的项目能服务更多的使用者&#xff0c;我们不得不需要把我们的单体项目拆分成多个微服务&#xff0c;就比如把一个商城系统拆分成用户系统&#xff0c;商品系统&#xff0c;订单系统&…

从设备匠心到啤酒体验的全方位指南

从小型手工酿酒坊到大型现代化生产线&#xff0c;我们在经营之前&#xff0c;每一套设备的选择都是基于对精酿啤酒市场需求的洞察和自身品牌的定位。无论是追求传统风味的复刻&#xff0c;还是创新口味的实验&#xff0c;设备的灵活性与可控性都是决定成品能否达到预期的关键。…

【SpringCloud】创建新工程

前言 本文使用的是jdk17&#xff0c;mysql8。 以下用两个服务做演示&#xff1a; 订单服务&#xff1a;提供订单ID&#xff0c;获取订单详细信息。 商品服务&#xff1a;提供商品ID&#xff0c;获取商品详细信息。 对于订单服务和商品服务分别建立数据库&#xff1a; -- 订单服…

一款不写代码的开源爬虫工具!!【送源码】

爬虫&#xff0c;也被称为网络爬虫或网络蜘蛛&#xff0c;是一种自动化的网络机器人&#xff0c;其主要功能是按照一定的规则&#xff0c;自动浏览互联网并从网页中提取信息。 作为一个开发人员&#xff0c;相信大家都尝试过写一些爬虫&#xff0c;合理的利用一些爬虫工具&…

【代码随想录】【算法训练营】【第35天】[134]加油站 [135]分发糖果 [860]柠檬水找零 [406]根据身高重建队列

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 day 35&#xff0c;连休两天~ 题目详情 [134] 加油站 题目描述 134 加油站 解题思路 前提&#xff1a;数组 思路&#xff1a;全局贪心算法&#xff1a;最小累加剩余汽油为负数&#xff0c;说明…

博客没人看啊?我分析是这些原因

1.封面 主题封面还是个性化封面&#xff1f;主题封面对系列化很友好&#xff0c;如下图左&#xff1a; 在目录中什么主题一目了然&#xff0c;个性化封面在目录中就略显杂乱。但是通过观察CSDN主页发现热榜文章清一色个性化封面。如果使文字封面就会显得很无聊。 所以从提高浏…

Orange_Pi_AIpro运行蜂鸟RISC-V仿真

Orange_Pi_AIpro运行蜂鸟RISC-V仿真 突发奇想&#xff0c;试一试Orange Pi AIpro上运行蜂鸟RISC-V的仿真。 准备 默认已经有一个Orange Pi AIpro&#xff0c;并且对设备进行一定的初始化配置&#xff0c;可以参考上一篇博文开源硬件初识——Orange Pi AIpro&#xff08;8T&a…

零代码本地搭建AI大模型,详细教程!普通电脑也能流畅运行,中文回答速度快,回答质量高

这篇教程主要解决&#xff1a; 1). 有些读者朋友&#xff0c;电脑配置不高&#xff0c;比如电脑没有配置GPU显卡&#xff0c;还想在本地使用AI&#xff1b; 2). Llama3回答中文问题欠佳&#xff0c;想安装一个回答中文问题更强的AI大模型。 3). 想成为AI开发者&#xff0c;开…

运行时类型识别RTTI(typeid dynamic_cast)和虚函数机制的关系

1.typeid 2.dynamic_cast 指针类型决定了可以操作的内存范围大小 子类指针转化为父类类型的指针的一般是合法的&#xff1a; 父类的指针类型转化为子类类型指针&#xff0c;超过合法操作范围&#xff0c;不安全 两种转换&#xff1a;编译期的转换&#xff0c;运行时的转化 编译…

【Java】图书管理系统-控制台输出

项目原码压缩包在我主页的资源中免费领取。&#xff08;在IDEA中运行&#xff0c;启动类在src -> Main 中运行&#xff09; 图书管理系统 设计一个简单的控制台输出的图书管理系统&#xff0c;我们首先需要明确其基本功能、设计内容以及设计要求。这个系统可以包括以下几个…

解决Windows中端口占用导致服务启动失败

解决Windows中端口占用导致服务启动失败 在cmd窗口中使用netstat -ano | findstr "3306"来查看哪个线程占用了3306端口。 下面的图片里面表示一个pid为5196的进程占用了端口 接着可以在cmd窗口中使用tasklist | findstr "5196" 根据pid查询进程名称 通过…

LVS三种负载均衡模式:NAT、Tunneling和DR的技术对比

1. LVS-NAT 模式的特性 IP使用&#xff1a;RS&#xff08;Real Server&#xff09;应使用私有地址&#xff0c;RS的网关必须指向DIP&#xff08;Director IP&#xff09;。网络范围&#xff1a;DIP和RIP必须在同一个网段内。数据包处理&#xff1a;请求和响应报文都需要经过Di…

[DDR4] DDR1 ~ DDR4 发展史导论

依公知及经验整理&#xff0c;原创保护&#xff0c;禁止转载。 专栏 《深入理解DDR4》 内存和硬盘是电脑的左膀右臂&#xff0c; 挑起存储的大梁。因为内存的存取速度超凡地快&#xff0c; 但内存上的数据掉电又会丢失&#xff0c;一直其中缓存的作用&#xff0c;就像是我们的工…

基于System-Verilog的FPGA设计与仿真

一、System-Verilog System Verilog的发展 SystemVerilog 的出现是为了因应日益复杂的数位电路设计和验证需求。虽然Verilog HDL 在早期的数位电路设计中得到了广泛应用&#xff0c;但随着技术的发展和电路复杂度的增加&#xff0c;Verilog HDL 在某些方面已经显得有些不足以满…

线稳源极跟随 线性电源前端降压

功率MOSFET线性电源涉及跟随.ms14 根本原理是Vgs对Id的控制&#xff0c;Vgs越大&#xff0c;Id越大&#xff0c;反之亦然。 观察转移特性曲线&#xff0c;结合接线图可知&#xff0c;电路稳定后&#xff0c;如果负载电阻增大&#xff0c;则Vsgnd增大&#xff0c;由于Vggnd有稳…

【数据挖掘】机器学习中相似性度量方法-余弦相似度

写在前面&#xff1a; 首先感谢兄弟们的订阅&#xff0c;让我有创作的动力&#xff0c;在创作过程我会尽最大能力&#xff0c;保证作品的质量&#xff0c;如果有问题&#xff0c;可以私信我&#xff0c;让我们携手共进&#xff0c;共创辉煌。 路虽远&#xff0c;行则将至&#…