(1)打开Spyder软件,在目录D:\zwPython\zwrk\1_Quant_TensorFlow,新建文件
17-StockTimeFactorSplit.py
# -*- coding: utf-8 -*-
"""
Created on Thu Feb 13 11:48:04 2025
Program Function:Program Function:SMA Multi-Factor Calculation
@author: Administrator
"""
import sys, os
sys.path.append("topqt/")
import numpy as np
import pandas as pd
import tushare as ts
# TopQuant
import zsys
import zpd_talib2025 as zta
import ztools_str as zstr
import ztools_data as zdat
import ztools_datadown as zddown
import ztools_draw2025 as zdr
#----------
#1
fss='data/300766.csv'
print('\n#1,fss',fss)
df=pd.read_csv(fss,index_col=0)
df=df.sort_index(ascending=True);
print(df.tail())
#2
#
df['xtim']=df.index
df['xyear']=df['xtim'].apply(zstr.str_2xtim,ksgn='y')
df['xmonth']=df['xtim'].apply(zstr.str_2xtim,ksgn='m')
df['xday']=df['xtim'].apply(zstr.str_2xtim,ksgn='d')
#
df['xday_week']=df['xtim'].apply(zstr.str_2xtim,ksgn='dw')
df['xday_year']=df['xtim'].apply(zstr.str_2xtim,ksgn='dy')
#df['xday_month']=df['xtim'].apply(zstr.str_2xtim,ksgn='dm')
df['xweek_year']=df['xtim'].apply(zstr.str_2xtim,ksgn='wy')
#
df['xhour']=df['xtim'].apply(zstr.str_2xtim,ksgn='h')
df['xminute']=df['xtim'].apply(zstr.str_2xtim,ksgn='t')
print('\n#2,dateLst:',zsys.dateLst)
print('\ndf.tail')
print(df.tail())
#3
df=pd.read_csv(fss,index_col=0)
df=df.sort_index(ascending=True);
df['xtim']=df.index
df2=zdat.df_xtim2mtim(df,'xtim',True)
print('\n#3,df2.tail')
print(df2.tail())
(2)程序输出结果
runfile('D:/zwPython/zwrk/1_Quant_TensorFlow/17-StockTimeFactorSplit.py', wdir='D:/zwPython/zwrk/1_Quant_TensorFlow')
Reloaded modules: zsys, zpd_talib2025, ztools_str, ztools, ztools_web, ztools_data, ztools_tq, zpd_talib, ztools_datadown, ztools_draw2025
#1,fss data/300766.csv
open high low close volume
date
2025-02-06 34.70 34.70 34.11 34.70 780546.0
2025-02-07 36.39 41.60 35.85 39.94 1863298.0
2025-02-10 41.01 47.93 41.00 47.93 1251341.0
2025-02-11 50.48 57.52 47.91 52.07 1771705.0
2025-02-12 50.70 57.13 49.53 55.00 1553976.0
#2,dateLst: ['xyear', 'xmonth', 'xday', 'xday_week', 'xday_year', 'xweek_year']
df.tail
open high low close ... xday_year xweek_year xhour xminute
date ...
2025-02-06 34.70 34.70 34.11 34.70 ... 37 5 0 0
2025-02-07 36.39 41.60 35.85 39.94 ... 38 5 0 0
2025-02-10 41.01 47.93 41.00 47.93 ... 41 6 0 0
2025-02-11 50.48 57.52 47.91 52.07 ... 42 6 0 0
2025-02-12 50.70 57.13 49.53 55.00 ... 43 6 0 0
[5 rows x 14 columns]
#3,df2.tail
open high low close ... xday xday_week xday_year xweek_year
date ...
2025-02-06 34.70 34.70 34.11 34.70 ... 6 3 37 5
2025-02-07 36.39 41.60 35.85 39.94 ... 7 4 38 5
2025-02-10 41.01 47.93 41.00 47.93 ... 10 0 41 6
2025-02-11 50.48 57.52 47.91 52.07 ... 11 1 42 6
2025-02-12 50.70 57.13 49.53 55.00 ... 12 2 43 6
[5 rows x 12 columns]
(3)程序代码注释
# -*- coding: utf-8 -*-
# 指定文件编码为 UTF - 8,确保文件中包含的非 ASCII 字符(如中文注释)能被 Python 正确处理。
"""
Created on Thu Feb 13 11:48:04 2025
Program Function:Program Function:SMA Multi-Factor Calculation
@author: Administrator
"""
# 这是一个多行注释,记录了代码的创建时间、程序功能(简单移动平均线多因子计算)以及作者信息。
import sys, os
# 导入 Python 的标准库模块 sys 和 os。
# sys 模块提供了与 Python 解释器交互的功能,例如修改模块搜索路径等。
# os 模块提供了与操作系统交互的功能,如文件和目录操作、环境变量获取等。
sys.path.append("topqt/")
# 将 "topqt/" 目录添加到 Python 的模块搜索路径中。
# 这样在使用 import 语句导入模块时,Python 解释器会去该目录下查找相应的模块文件,方便引入自定义模块。
import numpy as np
# 导入 numpy 库,并将其重命名为 np。
# numpy 是一个用于科学计算的基础库,提供了高性能的多维数组对象和处理这些数组的工具。
import pandas as pd
# 导入 pandas 库,并将其重命名为 pd。
# pandas 是一个用于数据处理和分析的库,提供了 DataFrame 和 Series 等数据结构。
import tushare as ts
# 导入 tushare 库,并将其重命名为 ts。
# tushare 是一个免费、开源的 Python 财经数据接口包,可用于获取金融数据。
# TopQuant
import zsys
# 导入自定义模块 zsys,该模块可能包含一些系统级别的配置或工具函数。
import zpd_talib2025 as zta
# 导入自定义模块 zpd_talib2025,并将其重命名为 zta。
# 该模块可能包含使用 TA - Lib 进行技术分析的相关函数。
import ztools_str as zstr
# 导入自定义模块 ztools_str,并将其重命名为 zstr。
# 该模块可能包含字符串处理相关的函数。
import ztools_data as zdat
# 导入自定义模块 ztools_data,并将其重命名为 zdat。
# 该模块可能包含数据处理相关的函数。
import ztools_datadown as zddown
# 导入自定义模块 ztools_datadown,并将其重命名为 zddown。
# 该模块可能包含数据下载相关的函数。
import ztools_draw2025 as zdr
# 导入自定义模块 ztools_draw2025,并将其重命名为 zdr。
# 该模块可能包含数据可视化相关的函数。
#----------
#1
fss = 'data/300766.csv'
# 定义要读取的 CSV 文件路径,该文件可能包含股票的相关数据。
print('\n#1,fss', fss)
# 打印 CSV 文件的路径,方便确认读取的文件。
df = pd.read_csv(fss, index_col=0)
# 使用 pandas 的 read_csv 函数读取指定路径的 CSV 文件。
# index_col=0 表示将文件的第一列作为 DataFrame 的索引。
df = df.sort_index(ascending=True);
# 对 DataFrame 对象 df 按照索引进行升序排序,确保数据按索引顺序排列。
print(df.tail())
# 打印 DataFrame 对象 df 的最后几行数据,方便查看数据的基本情况。
#2
#
df['xtim'] = df.index
# 将 DataFrame 对象 df 的索引赋值给新的列 'xtim',方便后续对时间数据进行处理。
df['xyear'] = df['xtim'].apply(zstr.str_2xtim, ksgn='y')
# 调用 ztools_str 模块中的 str_2xtim 函数。
# 对 'xtim' 列的每个元素应用该函数,参数 ksgn='y' 表示提取年份信息。
# 将提取的年份信息作为新的列 'xyear' 添加到 DataFrame 对象 df 中。
df['xmonth'] = df['xtim'].apply(zstr.str_2xtim, ksgn='m')
# 同样调用 str_2xtim 函数,参数 ksgn='m' 表示提取月份信息。
# 将提取的月份信息作为新的列 'xmonth' 添加到 DataFrame 对象 df 中。
df['xday'] = df['xtim'].apply(zstr.str_2xtim, ksgn='d')
# 调用 str_2xtim 函数,参数 ksgn='d' 表示提取日期信息。
# 将提取的日期信息作为新的列 'xday' 添加到 DataFrame 对象 df 中。
#
df['xday_week'] = df['xtim'].apply(zstr.str_2xtim, ksgn='dw')
# 调用 str_2xtim 函数,参数 ksgn='dw' 表示提取星期几的信息。
# 将提取的星期几信息作为新的列 'xday_week' 添加到 DataFrame 对象 df 中。
df['xday_year'] = df['xtim'].apply(zstr.str_2xtim, ksgn='dy')
# 调用 str_2xtim 函数,参数 ksgn='dy' 表示提取一年中的第几天的信息。
# 将提取的一年中的第几天信息作为新的列 'xday_year' 添加到 DataFrame 对象 df 中。
#df['xday_month'] = df['xtim'].apply(zstr.str_2xtim, ksgn='dm')
# 这行代码被注释掉了,原本可能是想提取一个月中的第几天的信息。
df['xweek_year'] = df['xtim'].apply(zstr.str_2xtim, ksgn='wy')
# 调用 str_2xtim 函数,参数 ksgn='wy' 表示提取一年中的第几周的信息。
# 将提取的一年中的第几周信息作为新的列 'xweek_year' 添加到 DataFrame 对象 df 中。
#
df['xhour'] = df['xtim'].apply(zstr.str_2xtim, ksgn='h')
# 调用 str_2xtim 函数,参数 ksgn='h' 表示提取小时信息。
# 将提取的小时信息作为新的列 'xhour' 添加到 DataFrame 对象 df 中。
df['xminute'] = df['xtim'].apply(zstr.str_2xtim, ksgn='t')
# 调用 str_2xtim 函数,参数 ksgn='t' 表示提取分钟信息。
# 将提取的分钟信息作为新的列 'xminute' 添加到 DataFrame 对象 df 中。
print('\n#2,dateLst:', zsys.dateLst)
# 打印 zsys 模块中的 dateLst 列表,该列表可能包含一些日期相关的配置信息。
print('\ndf.tail')
# 打印提示信息,表示接下来要打印 DataFrame 对象 df 的最后几行数据。
print(df.tail())
# 打印 DataFrame 对象 df 的最后几行数据,方便查看添加新列后的情况。
#3
df = pd.read_csv(fss, index_col=0)
# 再次使用 pandas 的 read_csv 函数读取指定路径的 CSV 文件,并将第一列作为索引。
df = df.sort_index(ascending=True);
# 对 DataFrame 对象 df 按照索引进行升序排序,确保数据按索引顺序排列。
df['xtim'] = df.index
# 将 DataFrame 对象 df 的索引赋值给新的列 'xtim'。
df2 = zdat.df_xtim2mtim(df, 'xtim', True)
# 调用 ztools_data 模块中的 df_xtim2mtim 函数。
# 传入三个参数:DataFrame 对象 df、要处理的列名 'xtim' 和一个布尔值 True(具体含义取决于函数实现)。
# 该函数的作用可能是对 'xtim' 列的时间数据进行某种转换,并返回一个新的 DataFrame 对象 df2。
print('\n#3,df2.tail')
# 打印提示信息,表示接下来要打印 DataFrame 对象 df2 的最后几行数据。
print(df2.tail())
# 打印 DataFrame 对象 df2 的最后几行数据,方便查看转换后的结果。
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/907158
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!