第二讲:环境搭建——Python与Pandas安装、Jupyter Notebook配置、投研数据源模拟

各位同学,欢迎来到实战环节的第一步。

说实话,很多做投研的朋友,一开始都卡在环境搭建上。不是装不上,就是版本冲突。我见过太多人花了两天装环境,最后心态崩了。其实没那么复杂,今天我就带你一步步搞定。

2.1 Python与Pandas安装:别小看这一步

Python 是咱们这行的基本功。我个人习惯用 Python 3.9 以上版本,太老的版本有些库不支持。你想想看,如果因为版本问题跑不了代码,多冤啊。

安装步骤其实就三步:

  1. 去官网下载 Python 安装包(记得勾选“Add Python to PATH”)
  2. 打开终端,输入 python --version 确认安装成功
  3. 用 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 3.9+ 基础运行环境 Pandas + NumPy 数据处理核心库 Jupyter Notebook 交互式分析平台 CSV 数据源 to_csv / read_csv Excel 数据源 to_excel / read_excel API 数据源 JSON / 模拟接口 数据清洗实战准备就绪 缺失值处理 → 格式统一 → 异常值检测

这张图把今天的内容串起来了。从底层的 Python 环境,到 Pandas 和 Jupyter 这两个核心工具,再到三种常见的数据源模拟方式。每一步都是后面实战的基础。

总结一下今天的关键点:

  • Python 版本别太老,3.9 以上最稳
  • Pandas 是数据处理的核心,必须装
  • Jupyter 让分析过程更灵活,建议掌握快捷键
  • CSV 注意编码问题,Excel 注意多 sheet 处理,API 注意 JSON 结构

好了,环境搭好了,数据也有了。下一章咱们就开始真正的数据清洗实战。到时候你会发现,今天这些准备工作,每一分钟都没白花。


蓝海数据掘金营,专注资料整理