A3. 提示词核心词汇

本章不是词汇表,而是帮你建立「用专业词汇描述任务」的习惯。每个术语都直接嵌入在对应的提示词框中,你在使用提示词的过程中自然习得。

A3.1 数据类型

A3.1.1 为什么数据类型在提示词中最重要

同样是一列数字,"20240101" 可能是字符串,也可能是整数。「把日期列转换成可以计算的格式」让 AI 一头雾水,而「把 date 列从字符串类型(str)转换为 datetime 类型」则让 AI 立刻写出正确代码。

A. 金融数据中的常见类型与陷阱

类型名 Python 写法 金融场景示例 常见陷阱
整数 int 成交量 1200000 大数字无精度问题
浮点数 float 收盘价 10.52、收益率 0.0132 浮点精度误差
字符串 str 股票代码 "000001"、日期 "2024-01-01" 股票代码必须用字符串,否则前导零丢失
日期时间 datetime 2024-01-15 09:30:00 从 CSV 读入后默认是字符串,必须手动转换
布尔值 bool 是否违约 True、是否处理组 False 有时被存为 0/1 整数
缺失值 NaN 停牌日无成交量 计算时会传染,导致整列结果为 NaN
提示词:读入数据后的第一步——查询并修正数据类型

这是每次读入新数据后必做的操作。养成习惯后,后续绝大多数类型相关的报错都能提前避免。

我用 pandas 读入了一个 CSV 文件,存储在数据框 `df` 中。
列名为:date、stock_code、open、high、low、close、volume、return。

请帮我写代码完成以下任务:
1. 打印数据框的基本信息:行数、列数、每列的数据类型、缺失值数量
2. `date` 列从字符串类型转换为 datetime 类型,
   日期格式为 YYYY-MM-DD
3. `stock_code` 列强制转换为字符串类型(避免前导零丢失)
4. `open``high``low``close``return` 列转换为 float 类型
5. `volume` 列转换为 int 类型
6. 转换后再次打印每列的数据类型,确认转换成功

如果某列转换失败(如含有非数字的字符串),请用 `errors='coerce'`
将无法转换的值设为 NaN,并打印出有多少行受到影响。
上面的类型转换代码运行后,`close` 列转换为 float 时出现了问题,
[X] 行被设为了 NaN。

请帮我查找原因:
1. 打印出 `close` 列中所有无法转换为 float 的原始值
2. 分析这些值的规律(如包含逗号、百分号、空格等)
3. 在转换前先做字符串清洗,去除这些异常字符,再重新转换

A3.2 数据结构

A3.2.1 最常用的数据结构:数据框

pandas 数据框(DataFrame)是金融数据分析中几乎一切操作的基础。下面是你在提示词中必须用到的术语。

A. 数据框的结构与术语

         date  stock_code   close   volume   return
0  2024-01-02      600000   10.50  1200000   0.012   ← 行(row)/ 观测
1  2024-01-03      600000   10.80  1500000   0.029
2  2024-01-02      601318   85.20   800000  -0.005

↑ 索引(index)         ↑ 列名(column name)
术语 英文 提示词中怎么说
行 / 观测 row 「每行是一只股票某天的数据」
列 / 变量 column close 列」、「收盘价列」
索引 index 「重置索引」、「以 date 为索引」
子集 subset / slice 「筛选出 industry 为银行的行」
分组 groupby 「按 stock_code 分组」
聚合 aggregate 「对每组计算均值」
合并 merge / join 「按 stock_code 和 date 左连接两个数据框」
拼接 concat 「将多个数据框纵向拼接」
长格式 long format 「每行是一个股票在某天的数据」
宽格式 wide format 「行为日期,列为股票代码,值为收盘价」
透视 pivot / melt 「长格式转宽格式」、「宽格式转长格式」
缺失值 NaN / missing 「close 列有缺失值」
重复行 duplicate 「删除重复的股票-日期组合」
异常值 outlier 「return 列有极端异常值」
提示词:数据框的核心操作速查

这组提示词将最常用的 6 类数据框操作集中在一起,可按需拆分单独使用。

我有一个 pandas 数据框 `df`,面板数据格式(每行是一只股票某天的数据),
包含以下列:
- date:datetime 类型的日期
- stock_code:字符串类型的股票代码
- close:浮点数类型的收盘价
- volume:整数类型的成交量
- industry:字符串类型的行业分类

请分别写代码实现以下操作,每个操作独立一段代码,附中文注释:

1. 【筛选行】保留 industry 为「银行」且 close 大于 10 的行
2. 【选取列】只保留 date、stock_code、close 三列,存为新数据框 `df_sub`
3. 【排序】按 date 升序、close 降序排列
4. 【分组聚合】按 industry 分组,计算每个行业的平均收盘价和总成交量
5. 【新增列】新增列 `log_return`,值为 close 列的日对数收益率
   (公式:ln(close_t / close_{t-1}),需要按 stock_code 分组后计算)
6. 【格式转换】将长格式转换为宽格式:
   行为 date,列为 stock_code,值为 close
第 5 步计算 log_return 的代码有问题:
每只股票的第一个交易日的 log_return 应该是 NaN(因为没有前一天的数据),
但现在显示的是 [描述实际结果]

请检查代码,确保:
1. 对数收益率是在每只股票内部按时间顺序计算的(不跨股票)
2. 每只股票的第一行 log_return 为 NaN
3. 打印前 5 行验证结果

A3.3 常用库速查

写提示词时明确指定使用哪个库,AI 生成的代码风格会更一致,不同来源的代码之间也更容易混用。

任务 推荐库 提示词关键词
数据处理 pandas 「使用 pandas」
数值计算 numpy 「使用 numpy」
统计绘图 matplotlib + seaborn 「用 seaborn 基于 matplotlib 绘图」
交互式图形 plotly 「使用 plotly 生成交互式图表」
统计建模 statsmodels 「使用 statsmodels 的 OLS 模块」
机器学习 scikit-learn 「使用 scikit-learn」
美股数据 yfinance 「用 yfinance 下载 Yahoo Finance 数据」
Wind 数据 WindPy 「通过 WindPy 的 w.wsd 函数获取数据」
进度条 tqdm 「用 tqdm 显示循环进度条」
表格美化 tabulate 「用 tabulate 格式化输出表格」
报告导出 openpyxl 「用 openpyxl 写入 Excel 文件」