xieqin 发表于 2023-8-27 08:07:47

大力求帮助, code/year/quarter 3个变量如何使用循环模式编写??

下面这段代码是从数据库上下载公司的财务数据,但是只是对于某个年份,某个季度,见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 responderror_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()

isdkz 发表于 2023-8-27 08:08:19

你可以使用两个嵌套的循环来实现对不同时间段的下载。首先,你需要定义一个包含所需时间范围的列表,然后使用两个循环来迭代这个列表。在内层循环中,你可以调用 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 =

# 营运能力
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 库。

xieqin 发表于 2023-8-27 11:01:20

亲,请问,如果我要下载特定的公司数据,或者全A股上市公司数据,code 这个变量又该如何编写??
页: [1]
查看完整版本: 大力求帮助, code/year/quarter 3个变量如何使用循环模式编写??