第二讲:环境搭建——Python与Pandas安装、Jupyter Notebook配置、投研数据源模拟
各位同学,欢迎来到实战环节的第一步。
说实话,很多做投研的朋友,一开始都卡在环境搭建上。不是装不上,就是版本冲突。我见过太多人花了两天装环境,最后心态崩了。其实没那么复杂,今天我就带你一步步搞定。
2.1 Python与Pandas安装:别小看这一步
Python 是咱们这行的基本功。我个人习惯用 Python 3.9 以上版本,太老的版本有些库不支持。你想想看,如果因为版本问题跑不了代码,多冤啊。
安装步骤其实就三步:
- 去官网下载 Python 安装包(记得勾选“Add Python to PATH”)
- 打开终端,输入
python --version确认安装成功 - 用 pip 安装 Pandas:
pip install pandas
核心命令速查:
# 安装 Python 后,打开命令行执行
pip install pandas
pip install numpy
pip install jupyter
# 验证安装
python -c "import pandas; print(pandas.__version__)"
我在项目中遇到过一个问题:公司内网环境没法直接 pip 安装。怎么办?我当时是下载 whl 文件手动安装的。嗯,这里要注意,whl 文件版本必须和你的 Python 版本匹配,否则装不上。
避坑指南:我曾经因为没注意 Python 是 32 位还是 64 位,装了一下午的库都报错。后来才发现,whl 文件名里的 win32 和 amd64 是有讲究的。别踩这个坑。
2.2 Jupyter Notebook配置:交互式分析的利器
Jupyter Notebook 这东西,说白了就是一个能写代码、能记笔记、还能画图的网页工具。做投研分析时,我特别喜欢用它——一边写代码,一边看结果,还能随时加注释。
安装和启动:
# 安装
pip install jupyter
# 启动
jupyter notebook
启动后,浏览器会自动打开一个页面。你点“New”就能新建一个 notebook 文件。我个人习惯把每个分析任务单独建一个 notebook,这样好管理。
我的小技巧:在 Jupyter 里按 Shift + Enter 运行当前单元格,按 Esc + B 在下方新建单元格。这些快捷键用熟了,效率翻倍。
为什么会推荐 Jupyter?因为投研分析经常要反复调整参数。你想想看,如果用传统 IDE,改一次参数跑一次脚本,多麻烦。Jupyter 可以让你分步执行,随时查看中间结果,特别适合数据清洗这种需要反复试错的场景。
2.3 投研数据源模拟:CSV/Excel/API
真实项目中,数据源五花八门。有从数据库导出的 CSV,有分析师整理的 Excel,还有从 Wind、Bloomberg 这类终端拉取的 API 数据。咱们先模拟一下,让你熟悉各种格式的处理方式。
2.3.1 CSV 数据模拟
CSV 是最常见的格式。我习惯用 Pandas 的 to_csv 方法生成模拟数据:
import pandas as pd
import numpy as np
# 生成模拟的股票交易数据
np.random.seed(42)
dates = pd.date_range('2024-01-01', periods=100, freq='D')
data = {
'日期': dates,
'股票代码': ['000001.SZ'] * 100,
'收盘价': np.random.uniform(10, 20, 100).round(2),
'成交量': np.random.randint(1000000, 5000000, 100)
}
df = pd.DataFrame(data)
df.to_csv('stock_data.csv', index=False, encoding='utf-8-sig')
print('CSV 文件已生成')
注意:编码用 utf-8-sig 而不是 utf-8。为什么?因为 Excel 打开 UTF-8 的 CSV 会乱码。加个 BOM 头就解决了。这是我踩过的坑,分享给你。
2.3.2 Excel 数据模拟
Excel 在投研圈用得特别多。很多研究员喜欢把数据整理在 Excel 里,还带格式、带颜色。咱们模拟一个带多 sheet 的 Excel 文件:
# 创建多个 sheet 的 Excel 文件
with pd.ExcelWriter('research_data.xlsx', engine='openpyxl') as writer:
df.to_excel(writer, sheet_name='日频数据', index=False)
# 第二个 sheet:财务指标
fin_data = {
'股票代码': ['000001.SZ', '000002.SZ', '000003.SZ'],
'PE': [15.2, 22.1, 18.5],
'PB': [1.8, 2.3, 1.5],
'ROE': [12.5, 15.3, 10.8]
}
pd.DataFrame(fin_data).to_excel(writer, sheet_name='财务指标', index=False)
print('Excel 文件已生成,包含两个 sheet')
嗯,这里要注意,写 Excel 需要安装 openpyxl 库。如果你没装,运行 pip install openpyxl 就行。
2.3.3 API 数据模拟
真实场景中,API 数据往往是最头疼的。格式乱、字段名不规范、还有缺失值。咱们模拟一个简单的 API 返回:
# 模拟从 Wind 或 Tushare 获取的数据
import json
from datetime import datetime, timedelta
def mock_api_data(stock_code, start_date, end_date):
"""模拟 API 返回的 JSON 数据"""
records = []
current = start_date
while current <= end_date:
records.append({
'ts_code': stock_code,
'trade_date': current.strftime('%Y%m%d'),
'open': round(np.random.uniform(10, 20), 2),
'high': round(np.random.uniform(11, 22), 2),
'low': round(np.random.uniform(9, 19), 2),
'close': round(np.random.uniform(10, 20), 2),
'vol': np.random.randint(1000000, 5000000)
})
current += timedelta(days=1)
return records
# 调用模拟 API
api_result = mock_api_data('000001.SZ', datetime(2024, 1, 1), datetime(2024, 1, 10))
df_api = pd.DataFrame(api_result)
print(df_api.head())
实战经验:真实 API 返回的数据往往有嵌套结构。比如 {'data': {'items': [...]}}。我一般先用 json_normalize 展开,再转成 DataFrame。这个后面会详细讲。
2.4 本章知识体系总览
为了让你更直观地理解本章内容,我画了一张图。它展示了从环境搭建到数据源模拟的完整链路:
这张图把今天的内容串起来了。从底层的 Python 环境,到 Pandas 和 Jupyter 这两个核心工具,再到三种常见的数据源模拟方式。每一步都是后面实战的基础。
总结一下今天的关键点:
- Python 版本别太老,3.9 以上最稳
- Pandas 是数据处理的核心,必须装
- Jupyter 让分析过程更灵活,建议掌握快捷键
- CSV 注意编码问题,Excel 注意多 sheet 处理,API 注意 JSON 结构
好了,环境搭好了,数据也有了。下一章咱们就开始真正的数据清洗实战。到时候你会发现,今天这些准备工作,每一分钟都没白花。