然后处理这些数据中的异常值,因为它会影响存储过程的正常进行。
# 将df中所有的inf和Nan数据表示为0.00
df = df.replace([np.inf, -np.inf], np.nan)
df = df.fillna(0)
最后一步是在数据库表中存储这些数据。在这一步中,我识别了国泰君安股票交易界面api,股票代码的后缀是“SH”还是“SZ“获取相应的国泰君安股票交易界面api。股票类型是上海证券交易所还是深圳证券交易所,并存储在数据表中的相应股票类型中。获得的其他数据也存储在相应的地方。代码如下:
res = np.array(df)
# print(res)
conn = constants.connection()
cursor = conn.cursor()
sql = "INSERT INTO pe_ratio(ts_code, stock_type,trade_date,turnover_rate,volume_ratio,pe,pb) VALUES(%s, %s, %s, %s, %s, %s, %s)"
# 股票类型是通过股票代码的后缀来识别的,并将获得的数据存储在市盈率表中
for i in range(len(res)):
if res[i][0][7:] == "SH":
cursor.execute(sql, [escape_string(res[i][0][:6]), escape_string(上证), escape_string(res[i][1]), res[i][2], res[i][3], res[i][4], res[i][5]])
else:
cursor.execute(sql, [escape_string(res[i][0][:6]), escape_string(深证”), escape_string(res[i][1]), res[i][2], res[i][3], res[i][4], res[i][5]])
conn.commit() # 将所有操作保存到数据库中
d1 = datetime.timedelta(days=1) # 日期成为当前日期的后一天
cursor.close()
conn.close()
下一步是用python调用tushare数据接口获取数据,代码如下:
# 导入tushare
import datetime
import tushare as ts
import numpy as np
from pymysql.converters import escape_string
from tradingSystem import constants
# pro界面的初始化
pro = ts.pro_api(constants.token)
# 获取股票历史市盈率数据
def getHistoryPERatio():
d1 = datetime.date(2023,2,15) # 起始日期
d2 = datetime.date(2023,5,12) # 终止日期
while d1 <= d2:
y, m, d = str(d1)[:10].split("-")
day = y m d
# 调用ProAPI接口获取所需数据
df = pro.daily_basic(**{"trade_date": day},
fields=[
"ts_code", # 股票代码
"trade_date", # 交易日期
"turnover_rate", # 换手率
"volume_ratio", # 量比
"pe", # 市盈率(总市值/净利润, 失去的PE为空)
"pb" # 市净率(总市值/净资产)
])
print(df)
这一步获得的数据如下:
文章为作者独立观点,不代表股票配资公司观点