|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
下面这段代码是从数据库上下载公司的财务数据,但是只是对于某个年份,某个季度,见bs.query_operation_data(code="sh.600000", year=2017, quarter=2),请问应该如何写才能够给与一定的时间段比如说从2010-2020年中的每个季度都下载??? code/year/quarter 3个变量如何使用循环模式编写??
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)
# 营运能力
operation_list = []
rs_operation = bs.query_operation_data(code="sh.600000", year=2017, quarter=2)
while (rs_operation.error_code == '0') & rs_operation.next():
operation_list.append(rs_operation.get_row_data())
result_operation = pd.DataFrame(operation_list, columns=rs_operation.fields)
# 打印输出
print(result_operation)
# 结果集输出到csv文件
result_operation.to_csv("D:\\operation_data.csv", encoding="gbk", index=False)
# 登出系统
bs.logout()
你可以使用两个嵌套的循环来实现对不同时间段的下载。首先,你需要定义一个包含所需时间范围的列表,然后使用两个循环来迭代这个列表。在内层循环中,你可以调用 bs.query_operation_data() 函数来下载数据,并将其保存到相应的文件中。
以下是修改后的代码示例:
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)
# 定义年份和季度范围
start_year = 2010
end_year = 2020
quarters = [1, 2, 3, 4]
# 营运能力
operation_list = []
for year in range(start_year, end_year + 1):
for quarter in quarters:
rs_operation = bs.query_operation_data(code="sh.600000", year=year, quarter=quarter)
while (rs_operation.error_code == '0') & rs_operation.next():
operation_list.append(rs_operation.get_row_data())
# 创建DataFrame并保存到csv文件
result_operation = pd.DataFrame(operation_list, columns=rs_operation.fields)
result_operation.to_csv("D:\\operation_data.csv", encoding="gbk", index=False)
# 登出系统
bs.logout()
这段代码会在指定的时间范围内迭代每个季度,并将数据保存到 D:\\operation_data.csv 文件中。请确保你已经安装了 baostock 和 pandas 库。
|
|