def queryPerformanceExpressReportByCode(code, starDate): list = [] data = query_performance_express_report(code, start_date=starDate) while (data.error_code == '0') & data.next(): list.append(data.get_row_data()) data = pd.DataFrame(list, columns=data.fields) return data
def get_performance_express_data(stock_number, stock_name, start_date, end_date): print('==========================================================') print("开始进行: " + stock_name + "(" + stock_number + ")" + "的数据处理") print("尝试登陆baostock") #####login##### lg = bs.login(user_id="anonymous", password="******") if (lg.error_code == '0'): print("登陆成功") else: print("登录失败") #####get stock data##### rs = bs.query_performance_express_report(stock_number, start_date, end_date) print('请求历史数据返回代码:' + rs.error_code) print('请求历史数据返回信息:' + rs.error_msg) data_list = [] while (rs.error_code == '0') & rs.next(): data_list.append(rs.get_row_data()) result = pd.DataFrame(data_list, columns=rs.fields) bs.logout() print(stock_name + "(" + stock_number + ")" + "的数据处理完成") print('==========================================================') return result
def getPerformanceReport(id: str, begin: str = None, end: str = None): data = BaoStock.query_performance_express_report(id, begin, end).get_data() result = [] for row in data.iterrows(): result.append({getPerformanceReportMap[key][0]: getPerformanceReportMap[key][1]( row[1][key]) for key in data.keys() if key in getPerformanceReportMap}) return result
def query_performance_express_report(code, start_date, end_date): """ 季频公司业绩快报 方法说明:通过API接口获取季频公司业绩快报信息,可以通过参数设置获取起止年份数据,提供2006年至今数据。 返回类型:pandas的DataFrame类型。 参数含义: code:股票代码,sh或sz.+6位数字代码,或者指数代码,如:sh.601398。sh:上海;sz:深圳。此参数不可为空; start_date:开始日期,发布日期或更新日期在这个范围内; end_date:结束日期,发布日期或更新日期在这个范围内。 """ lg = bs.login() if lg.error_code != '0': logger.error('login respond error_msg:' + lg.error_msg) rs = bs.query_performance_express_report(code, start_date=start_date, end_date=end_date) if rs.error_code != '0': logger.error( 'query_performance_express_report respond error_msg:' + rs.error_msg) result_list = [] while (rs.error_code == '0') & rs.next(): result_list.append(rs.get_row_data()) result = pd.DataFrame(result_list, columns=rs.fields) bs.logout() return result
def quarter_performance_express_report(self, code, end_date, start_date='2006-01-01'): self.getStockInstance() rs = bs.query_performance_express_report(code, start_date, end_date) self._test_rs(rs) return rs
def query_performance_express_report(self, code, start_date, end_date): ''' code:股票代码,sh或sz.+6位数字代码,或者指数代码,如:sh.601398。sh:上海;sz:深圳。此参数不可为空; start_date:开始日期,发布日期或更新日期在这个范围内; end_date:结束日期,发布日期或更新日期在这个范围内。 ''' rs = bs.query_performance_express_report(code, start_date=start_date, end_date=end_date) self.log('query_performance_express_report respond error_msg:', rs) result_list = [] while (rs.error_code == '0') & rs.next(): result_list.append(rs.get_row_data()) result = pd.DataFrame(result_list, columns=rs.fields) return result
def query_performance_express_report(start_date, end_date): """ 季频公司业绩快报:query_performance_express_report() 方法说明:查询季频公司业绩快报信息,可以通过参数设置获取起止年份数据,提供2006年至今数据。 返回类型:pandas的DataFrame类型。 """ all_stock = pd.read_csv(path + "all_stock.csv") all_stock.drop_duplicates(subset=['code'], keep='first', inplace=True) #### 登陆系统 #### lg = bs.login() # 显示登陆返回信息 #print('login respond error_code:'+lg.error_code) #print('login respond error_msg:'+lg.error_msg) #### 获取公司业绩快报 #### result_all = pd.DataFrame([]) for code in all_stock.code: rs = bs.query_performance_express_report(code, start_date=start_date, end_date=end_date) #print('query_performance_express_report respond error_code:'+rs.error_code) #print('query_performance_express_report respond error_msg:'+rs.error_msg) result_list = [] while (rs.error_code == '0') & rs.next(): result_list.append(rs.get_row_data()) # 获取一条记录,将记录合并在一起 result = pd.DataFrame(result_list, columns=rs.fields) result_all = result_all.append(result) #### 结果集输出到csv文件 #### performance_express_report = pd.read_csv(path + "performance_express_report.csv") result_all = result_all.append(performance_express_report) result_all.drop_duplicates(subset=[ 'code', 'performanceExpPubDate', 'performanceExpStatDate', 'performanceExpUpdateDate' ], keep='first', inplace=True) result_all.to_csv(path + "performance_express_report.csv", encoding="gbk", index=False) #print(result) #### 登出系统 #### bs.logout()
def get_forcast(code,start='2019-01-01',end='2020-02-02'): result_list = [] rs_forecast_list = [] # print(code,start, end) rs = bs.query_performance_express_report(code, start_date=start, end_date=end) while (rs.error_code == '0') & rs.next(): result_list.append(rs.get_row_data()) result = pd.DataFrame(result_list, columns=rs.fields) rs_forecast = bs.query_forecast_report(code, start_date=start, end_date=end) while (rs_forecast.error_code == '0') & rs_forecast.next(): rs_forecast_list.append(rs_forecast.get_row_data()) result_forecast = pd.DataFrame(rs_forecast_list, columns=rs_forecast.fields) return result,result_forecast
def get_performance_express_report_df(code: str, start_date: str, end_date: str) -> pd.DataFrame: column_mapping = { "performanceExpPubDate": "date", "performanceExpStatDate": "period", "performanceExpressROEWa": "value", } resp = bs.query_performance_express_report(code=code, start_date=start_date, end_date=end_date) report_list = [] while (resp.error_code == "0") and resp.next(): report_list.append(resp.get_row_data()) report_df = pd.DataFrame(report_list, columns=resp.fields) try: report_df = report_df[list(column_mapping.keys())] except KeyError: return pd.DataFrame() report_df.rename(columns=column_mapping, inplace=True) report_df["field"] = "roeWa" report_df["value"] = pd.to_numeric(report_df["value"], errors="ignore") report_df["value"] = report_df["value"].apply(lambda x: x / 100.0) return report_df
def GetCurrentStockFundamentals(self, *args, **kwargs): post_data_code = CheckKeyOrAbort(kStockCodeKey, kwargs) profit_data_handler = bs.query_profit_data(post_data_code) profit_data = profit_data_handler.get_data() operation_data_handler = bs.query_operation_data(post_data_code) operation_data = operation_data_handler.get_data() growth_data_handler = bs.query_growth_data(post_data_code) growth_data = growth_data_handler.get_data() balance_data_handler = bs.query_balance_data(post_data_code) balance_data = balance_data_handler.get_data() cash_flow_data_handler = bs.query_balance_data(post_data_code) cash_flow_data = cash_flow_data_handler.get_data() dupont_data_handler = bs.query_dupont_data(post_data_code) dupont_data = dupont_data_handler.get_data() performance_data_handler = bs.query_performance_express_report( post_data_code) performance_data = performance_data_handler.get_data() forecast_data_handler = bs.query_forecast_report(post_data_code) forecast_data = forecast_data_handler.get_data() return profit_data, operation_data, growth_data, balance_data, cash_flow_data, dupont_data, performance_data, forecast_data
def importData(data, engine): keys = { '利润表': 'tb_income_statement', '资产负债表': 'tb_balance_sheet', '现金流量表': 'tb_flow_cash' } lg = bs.login() end_date = datetime.datetime.now().date() for code in data['symbol']: # 显示登陆返回信息 # print('login respond error_code:' + lg.error_code) # print('login respond error_msg:' + lg.error_msg) #### 获取公司业绩快报 #### rs = bs.query_performance_express_report(code, start_date="1990-01-01", end_date='2020-12-31') print('query_performance_express_report respond error_code:' + rs.error_code) print('query_performance_express_report respond error_msg:' + rs.error_msg) result_list = [] while (rs.error_code == '0') & rs.next(): result_list.append(rs.get_row_data()) # 获取一条记录,将记录合并在一起 result = pd.DataFrame(result_list, columns=rs.fields) #### 结果集输出到csv文件 #### # result.to_csv("D:\\performance_express_report.csv", encoding="gbk", index=False) # print(result) result.to_sql('performance', con=engine, if_exists='append') time.sleep(0.1) #### 登出系统 #### bs.logout()
import baostock as bs import pandas as pd #### 登陆系统 #### lg = bs.login() # 显示登陆返回信息 print('login respond error_code:' + lg.error_code) print('login respond error_msg:' + lg.error_msg) #### 获取公司业绩快报 #### rs = bs.query_performance_express_report("sh.600000", start_date="2015-01-01", end_date="2017-12-31") print('query_performance_express_report respond error_code:' + rs.error_code) print('query_performance_express_report respond error_msg:' + rs.error_msg) result_list = [] while (rs.error_code == '0') & rs.next(): result_list.append(rs.get_row_data()) # 获取一条记录,将记录合并在一起 result = pd.DataFrame(result_list, columns=rs.fields) #### 结果集输出到csv文件 #### result.to_csv("D:\\performance_express_report.csv", encoding="gbk", index=False) print(result) #### 登出系统 #### bs.logout()
import baostock as bs import pandas as pd #### 登陆系统 #### lg = bs.login() # 显示登陆返回信息 print('login respond error_code:' + lg.error_code) print('login respond error_msg:' + lg.error_msg) #### 获取公司业绩快报 #### rs = bs.query_performance_express_report("sz.000001", start_date="2017-01-01", end_date="2019-12-31") print('query_performance_express_report respond error_code:' + rs.error_code) print('query_performance_express_report respond error_msg:' + rs.error_msg) result_list = [] while (rs.error_code == '0') & rs.next(): result_list.append(rs.get_row_data()) # 获取一条记录,将记录合并在一起 result = pd.DataFrame(result_list, columns=rs.fields) #### 结果集输出到csv文件 #### result.to_csv("D:\\performance_express_report.csv", encoding="gbk", index=False) print(result) #### 登出系统 #### bs.logout()