从零学习量化交易018股票数据增强版指数索引

标准的股票数据格式在深度学习使用时无法使用,因此需要进行数据转换。

(1)打开Spyder软件,在目录D:\zwPython\zwrk\1_Quant_TensorFlow,新建文件
18-StockDataEnhancedIndex.py

# -*- coding: utf-8 -*-
"""
Created on Thu Feb 13 11:48:04 2025
Program Function:Stock Data Enhanced Index
@author: Administrator
"""

import sys, os
sys.path.append("topqt/")

import numpy as np
import pandas as pd
import tushare as ts


import math,arrow,ffn
import pypinyin 
import numpy as np
import pandas as pd
import pandas_datareader as pdr 
import matplotlib.pyplot as plt

import zsys 
import ztools as zt
import ztools_str as zstr
import ztools_data as zdat
import ztools_draw2025 as zdr
import ztools_tq as ztq
import zpd_talib2025 as zta


#1
fss='inx/inx_code.csv'
df=pd.read_csv(fss,dtype={'code' : str},encoding='GBK')
print('\n#1,fss,',fss)
print('\ndf.tail')
print(df.tail())

#2 
print('\n#2,data edit')
df2=pd.DataFrame()
for i, row in df.iterrows():
    css=row['name']
    ess=pypinyin.slug(css, style=pypinyin.FIRST_LETTER, separator='')
    row['ename']=ess.upper()+'_'+row['code']
    row['id']=int(i)
    df2=df2.append(row)
    
#3
df2['id']=df2['id'].astype(int)
fss='tmp/xinx_name.csv'
print('\n#3,fss,',fss)
df2.to_csv(fss,index=False,encoding='GBK')    
#
print('\ndf2.tail')
print(df2.tail())

(2)程序输出结果

runfile('D:/zwPython/zwrk/1_Quant_TensorFlow/18-StockDataEnhancedIndex.py', wdir='D:/zwPython/zwrk/1_Quant_TensorFlow')
d:\zwpython\py37\python-3.7.6.amd64\lib\site-packages\pandas_datareader\compat\__init__.py:7: FutureWarning: pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead.
  from pandas.util.testing import assert_frame_equal

#1,fss, inx/inx_code.csv

df.tail
      code  name        tim0
19  399106  深证综指  2000-01-01
20  399107  深证A指  2000-01-01
21  399108  深证B指  2000-01-01
22  399333  中小板R  2007-01-01
23  399606  创业板R  2011-01-01

#2,data edit

#3,fss, tmp/xinx_name.csv

df2.tail
      code        ename  id  name        tim0
19  399106  SZZZ_399106  19  深证综指  2000-01-01
20  399107  SZAZ_399107  20  深证A指  2000-01-01
21  399108  SZBZ_399108  21  深证B指  2000-01-01
22  399333  ZXBR_399333  22  中小板R  2007-01-01
23  399606  CYBR_399606  23  创业板R  2011-01-01

(3)程序代码注释

# -*- coding: utf-8 -*-
# 这行代码指定了文件的编码格式为 UTF-8,确保代码文件可以正确处理包含中文等非 ASCII 字符的内容

"""
Created on Thu Feb 13 11:48:04 2025
Program Function:Stock Data Enhanced Index
@author: Administrator
"""
# 这是一个多行注释,包含了代码的创建时间、程序功能描述以及作者信息
# 创建时间为 2025 年 2 月 13 日星期四 11:48:04
# 程序功能是股票数据增强指数
# 作者为 Administrator

import sys, os
# 导入 sys 和 os 模块
# sys 模块提供了一些与 Python 解释器和系统相关的功能,例如操作 Python 解释器的路径等
# os 模块提供了与操作系统进行交互的功能,例如文件和目录操作等

sys.path.append("topqt/")
# 将 "topqt/" 目录添加到 Python 的模块搜索路径中
# 这样 Python 在导入模块时会搜索该目录,方便使用该目录下的自定义模块

import numpy as np
# 导入 numpy 库,并将其重命名为 np
# numpy 是一个用于科学计算的基础库,提供了高性能的多维数组对象和处理这些数组的工具

import pandas as pd
# 导入 pandas 库,并将其重命名为 pd
# pandas 是一个用于数据处理和分析的强大库,提供了 DataFrame 和 Series 等数据结构

import tushare as ts
# 导入 tushare 库
# tushare 是一个免费、开源的 python 财经数据接口包,可用于获取金融数据

import math,arrow,ffn
# 导入 math、arrow 和 ffn 库
# math 模块提供了数学运算相关的函数
# arrow 是一个用于处理日期和时间的库,提供了更加简洁和人性化的 API
# ffn 是一个用于金融数据分析的库,提供了一系列金融分析工具

import pypinyin 
# 导入 pypinyin 库
# pypinyin 是一个用于将中文转换为拼音的库

import numpy as np
# 再次导入 numpy 库,这行代码是多余的,因为前面已经导入过了

import pandas as pd
# 再次导入 pandas 库,这行代码是多余的,因为前面已经导入过了

import pandas_datareader as pdr 
# 导入 pandas_datareader 库,并将其重命名为 pdr
# pandas_datareader 是一个用于从各种在线数据源获取金融数据的库

import matplotlib.pyplot as plt
# 导入 matplotlib.pyplot 模块,并将其重命名为 plt
# matplotlib 是一个用于绘制图表的库,pyplot 是其提供的一个子模块,提供了类似于 MATLAB 的绘图接口

import zsys 
# 导入自定义模块 zsys
# 可能是项目中自定义的与系统相关的工具模块

import ztools as zt
# 导入自定义模块 ztools,并将其重命名为 zt
# 可能是项目中自定义的通用工具模块

import ztools_str as zstr
# 导入自定义模块 ztools_str,并将其重命名为 zstr
# 可能是项目中自定义的字符串处理工具模块

import ztools_data as zdat
# 导入自定义模块 ztools_data,并将其重命名为 zdat
# 可能是项目中自定义的数据处理工具模块

import ztools_draw2025 as zdr
# 导入自定义模块 ztools_draw2025,并将其重命名为 zdr
# 可能是项目中自定义的绘图工具模块

import ztools_tq as ztq
# 导入自定义模块 ztools_tq,并将其重命名为 ztq
# 可能是项目中自定义的与 tushare 相关的工具模块

import zpd_talib2025 as zta
# 导入自定义模块 zpd_talib2025,并将其重命名为 zta
# 可能是项目中自定义的与 talib 相关的工具模块

#1
fss='inx/inx_code.csv'
# 定义一个变量 fss,存储要读取的 CSV 文件的路径
# 文件名为 inx_code.csv,位于 inx 目录下

df=pd.read_csv(fss,dtype={'code' : str},encoding='GBK')
# 使用 pandas 的 read_csv 函数读取指定路径的 CSV 文件
# dtype={'code' : str} 表示将 'code' 列的数据类型指定为字符串
# encoding='GBK' 表示文件的编码格式为 GBK

print('\n#1,fss,',fss)
# 打印换行符和 #1 标记,以及文件路径 fss
# 用于提示当前执行到步骤 1,并显示读取的文件路径

print('\ndf.tail')
# 打印换行符和 'df.tail' 提示信息
# 用于提示接下来将打印 DataFrame 的最后几行数据

print(df.tail())
# 打印 DataFrame df 的最后几行数据
# 方便查看读取的数据的基本情况

#2 
print('\n#2,data edit')
# 打印换行符和 #2 标记,以及 'data edit' 提示信息
# 用于提示当前执行到步骤 2,开始进行数据编辑

df2=pd.DataFrame()
# 创建一个空的 DataFrame 对象 df2
# 用于存储处理后的数据

for i, row in df.iterrows():
    # 遍历 DataFrame df 的每一行
    # i 是行索引,row 是当前行的数据(Series 对象)
    css=row['name']
    # 从当前行中获取 'name' 列的值,并赋值给变量 css
    # 假设 'name' 列存储的是中文名称
    
    ess=pypinyin.slug(css, style=pypinyin.FIRST_LETTER, separator='')
    # 使用 pypinyin 库的 slug 函数将中文名称 css 转换为拼音首字母
    # style=pypinyin.FIRST_LETTER 表示只取拼音的首字母
    # separator='' 表示拼音首字母之间不使用分隔符
    
    row['ename']=ess.upper()+'_'+row['code']
    # 在当前行中添加一个新的列 'ename'
    # 该列的值为拼音首字母大写后加上下划线和 'code' 列的值
    
    row['id']=int(i)
    # 在当前行中添加一个新的列 'id'
    # 该列的值为当前行的索引 i 转换为整数类型
    
    df2=df2.append(row)
    # 将处理后的当前行添加到 DataFrame df2 中

#3
df2['id']=df2['id'].astype(int)
# 将 DataFrame df2 中的 'id' 列的数据类型转换为整数类型

fss='tmp/xinx_name.csv'
# 定义一个变量 fss,存储要保存的 CSV 文件的路径
# 文件名为 xinx_name.csv,位于 tmp 目录下

print('\n#3,fss,',fss)
# 打印换行符和 #3 标记,以及文件路径 fss
# 用于提示当前执行到步骤 3,并显示保存的文件路径

df2.to_csv(fss,index=False,encoding='GBK')    
# 使用 pandas 的 to_csv 函数将 DataFrame df2 保存为 CSV 文件
# index=False 表示不保存行索引
# encoding='GBK' 表示文件的编码格式为 GBK

#
print('\ndf2.tail')
# 打印换行符和 'df2.tail' 提示信息
# 用于提示接下来将打印 DataFrame df2 的最后几行数据

print(df2.tail())
# 打印 DataFrame df2 的最后几行数据
# 方便查看处理后的数据的基本情况

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/907156
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 3分钟前
下一篇 2分钟前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注