第 二 篇
- 一、自定义数据处理模块
-
- (一)、自定义获取所有A股列表模块
- (二)、自定义获取单个股票行情行情数据模块
- (三)、自定义导出股票相关数据模块
- (四)、自定义初始化股票行情数据库
- (五)、自定义以增量补全的方式获取行情数据模块
- (六)、自定义读取【 C S V 】数据模块
- (七)、自定义按时间读取 【 C S V 】 数据模块
- (八)、自定义读取【 E x c e l 】数据模块
- (九)、自定义按时间读取【 E x c e l 】数据模块
- (十)、自定义将数据转换股票行情指定周期模块
- (十 一)、自定义获取单个股票财务指标模块
- (十 二)、自定义获取单个股票估值指标模块
- (十 三)、自定义获取单个股票资产负债指标数据模块
- (十 四)、自定义获取单个利润数据指标数据模块
- (十 五)、自定义获取单个股票券商业专项指标数据模块
- (十 六)、自定义获取单个股票保险业专项指标数据模块
- (十 七)、自定义获取单个股票现金流指标数据模块
- (十 八)、自定义获取单个股票银行业专项指标模块
- (十 九)、自定义涨跌幅计算模块
- (二十)、自定义获取股池模块
- 总结
一、自定义数据处理模块
(一)、自定义获取所有A股列表模块
代码如下:
# 获取所有A股列表模块
def get_stock_list():
"""
这是获取所有股票代码的函数
"""
# 使用获取股票基本信息函数——获取所有股票代码
All_Stock_ID_List = list(get_all_securities(['stock']).index)
# 返回所有股票代码
return All_Stock_ID_List
(二)、自定义获取单个股票行情行情数据模块
代码如下:
# 获得单个股票行情数据模块
def get_single_price(stock_code,start_date = None, end_date =None, timefrequency='1d'):
"""
stock_code :'股票代码'
timefrequency : '1d'(每日)、'1m'(每分钟)
start_date : '年-月-日'(开始时间)
end_date : '年-月-日'(结束时间)
"""
# 如果 start_date 为 None 时,则 start_date 取 上市时间
if start_date is None:
start_date = get_security_info(stock_code).start_date
if end_date is None:
end_date = datetime.datetime.today()
# 使用获取行情函数
data = get_price(security = stock_code, start_date = start_date, end_date = end_date, frequency = timefrequency, fill_paused = True, panel = True)
# 返回目标行情数据
return data
(三)、自定义导出股票相关数据模块
代码如下:
# 导出股票相关数据模块
def export_data(data,filename,type,mode = None):
"""
type : 存储的文件夹的名称[Finace/Price]
filename : 文件名称
data : 数据
"""
finaPath = absolutePath + type + '\\' + filename + '.csv'
data.index.names=['date']
if mode == 'a':
data.to_csv(finaPath, mode = mode ,header = False )
# # 删除重复值
# 读取已存在数据
data = pd.read_csv(finaPath)
# 删除重复值
data = data.drop_duplicates(subset = ['date'])
# 存储非重复数据
data.to_csv(finaPath,index=False)
else:
data.to_csv(finaPath)
print(f'股票 :【 {
filename} 】 数据封装成功,封装路径:',finaPath)
(四)、自定义初始化股票行情数据库
代码如下:
def init_db():
"""
注意 : 什么都不用填
"""
# 获取所有股票代码
stocks_codes = get_stock_list()
# 存储为CSV文件
for stock_code in stocks_codes:
data = get_single_price(stock_code = stock_code)
export_data(data = data,filename= stock_code, type = 'Price')
(五)、自定义以增量补全的方式获取行情数据模块
代码如下:
# 以增量补全的方式获取行情数据模块
def add_price_data(stock_Code, type):
"""
(1)finaPath : 文件路径名
(2)判断文件是否存在 : 情况1,文件存在时以增量方式获取数据
情况2,文件不存在时全下载
"""
# 查询文件存在情况
finaPath = absolutePath + type + '\\' + stock_Code + '.csv'
if os.path.exists(finaPath):
# 获取已有行情数据的最新日期
start_date = pd.read_csv(finaPath, usecols = ['date'])['date'].iloc[-1]
# 判断最新日期
print(start_date)
if start_date == '2022-05-13':
print(f'当前{
stock_Code}行情数据为最新数据,不需要重复下载')
else:
# 获取已有行情数据的最新日期到当日时间的数据
data = get_single_price(stock_code = stock_Code, start_date = start_date, end_date = datetime.datetime.today())
# 以增量方式添加已有文件当中
export_data(data = data, filename = stock_Code, type = type, mode = 'a')
print(f'当前{
stock_Code}行情数据已为最新数据')
else:
data = get_single_price(stock_code = stock_Code)
export_data(data = data, filename = stock_Code, type = 'Price')
print(f'当前{
stock_Code}行情数据已为最新数据')
(六)、自定义读取【 C S V 】数据模块
代码如下:
# 读取【 C S V 】数据模块
def get_csv_data(filename,type = 'Price'):
"""
name : 文件名称
type : 存储的文件夹的名称[Finace/Price]
"""
finaPath = absolutePath + type + '\\' + filename + '.csv'
return pd.read_csv(finaPath)
(七)、自定义按时间读取 【 C S V 】 数据模块
代码如下:
# 按时间读取 【 C S V 】 数据模块
def get_time_csv_data