🚀 AI 一键生成 joinquant 策略代码
立即体验
👉 AI 生成代码 👈

JoinQuant聚宽回测环境中DataFrame存入CSV及本地下载指南

joinquant | 发布时间: 2026/6/24
以下内容由 EasyQuant 生成。

问题描述

问个dataframe存入CSV的问题

import math
import datetime
import numpy as np
import pandas as pd
from jqdata import *

导入多元线性规划需要的工具包
import statsmodels.api as sm
from statsmodels import regression
import datetime as dt
from datetime import date

sample = get_index_stocks('000985.XSHG', date = None)

获取基本面数据并作初步计算
q1 = query(valuation.code,
valuation.marketcap, # 总市值(亿元)
balance.total_assets / balance.total_liability, # 杠杆率
indicator.inc_net_profit_year_on_year, # 净利润同比增长率(质量成长)
indicator.inc_revenue_year_on_year, # 营业收入同比增长率(规模成长)
indicator.roe / valuation.pb_ratio, # PB-ROE
valuation.pe_ratio / indicator.inc_net_profit_year_on_year, # PEG
).filter(
valuation.code.in(sample))

本期基本面数据df,并清洗
df1 = get_fundamentals(q1, date = None) # 目前处于2019-01-02 09:30:00,date = None 默认是昨天

log.info(df1)
'''
code market_cap ... anon_2 anon_3
0 000001.XSHE 1610.5846 ... 4.090362 0.894694
1 000002.XSHE 2629.5259 ... 1.884783 0.115265
2 000004.XSHE 13.4615 ... -0.334164 -0.462624
.....
3412 603997.XSHG 48.9331 ... 1.853023 1.285784
3413 603998.XSHG 20.0139 ... 0.733611 -0.959809
3414 603999.XSHG 27.8784 ... 0.609088 -8.986838

[3415 rows x 7 columns]
'''
df1.to_csv('index_enhancement.csv')
df = pd.read_csv('index_enhancement.csv')

print(df)
回测环境里:
请问这个'index_enhancement.csv'被存在哪里了?
请问我可以把df1保存成CSV存在电脑的F盘里吗?
比如这样:df1.to_csv('F:/Data?index_enhancement.csv')?

解决方案

1. index_enhancement.csv 被存在哪里了?

在 JoinQuant 的回测环境或研究环境中,您的代码是运行在聚宽的云端服务器上的,而不是您的个人电脑上。

当您直接使用 df1.to_csv('index_enhancement.csv') 时,文件会被保存在云端服务器的当前工作目录下。如果您是在“投资研究”模块中运行,它会保存在研究环境的根目录;如果您是在“回测环境”中运行,直接使用 to_csv 生成的文件通常是无法直接查看或下载的,甚至在回测结束后可能会被系统清理。

2. 可以直接保存到电脑的 F 盘吗?

不可以。 因为代码运行在云端服务器,云端服务器无法直接访问您本地电脑的硬盘(如 F:/)。如果您写成 df1.to_csv('F:/Data/index_enhancement.csv'),程序会报错,因为云端服务器上不存在 F:/ 这个路径。

3. 正确的保存与下载方法

如果您希望在回测或模拟交易中保存数据,并最终下载到您的本地电脑,请使用 JoinQuant 提供的专用 API:write_file。该函数会将文件保存到您的投资研究根目录中,随后您可以手动将其下载到本地。

修改后的代码示例:

import pandas as pd
from jqdata import *

# 假设 df1 是您已经获取并清洗好的 DataFrame
# df1 = get_fundamentals(q1, date = None)

# 1. 将 DataFrame 转换为 CSV 格式的字符串
csv_content = df1.to_csv()

# 2. 使用聚宽的 write_file API 写入到投资研究目录
# append=False 表示覆盖原文件,如果设为 True 则是追加写入
write_file('index_enhancement.csv', csv_content, append=False)

log.info("文件已成功保存到投资研究根目录!")

如何下载到本地电脑(如 F 盘)?

  1. 运行上述回测代码后,文件已经被保存到了云端。
  2. 登录 JoinQuant 官网,点击顶部导航栏进入 “投资研究” 模块。
  3. 在研究环境的文件列表中,您就能看到刚刚生成的 index_enhancement.csv 文件。
  4. 勾选该文件,点击上方的 “下载” 按钮,即可通过浏览器将该 CSV 文件下载到您本地电脑的 F 盘或其他任何位置。

补充:如何在回测中读取该文件?

如果您需要在回测中再次读取这个文件,可以使用 read_file API 结合 io.StringIO(Python 3 中为 io.BytesIO 或直接使用 six 模块兼容):

import pandas as pd
from six import StringIO

# 读取文件内容
body = read_file('index_enhancement.csv')

# 转换为 DataFrame
df = pd.read_csv(StringIO(body.decode('utf-8')))
print(df.head())