3. 环境搭建与工具准备:Python基础、Jupyter Notebook使用、Pandas与NumPy安装配置、数据读取与初步探索
金融数据清洗是数据科学在金融领域落地的基础环节,而搭建一个稳定、可复现的开发环境是开展一切分析工作的前提。本章将带领零基础学员从零开始,完成Python环境搭建、Jupyter Notebook配置、Pandas与NumPy安装,并掌握数据读取与初步探索的核心操作。我们将以金融行业常见的CSV行情数据、Excel财务报表数据为案例,帮助学员建立一套从环境准备到数据预览的完整工作流。
3.1 核心原理:为什么需要规范的环境与工具链
金融数据清洗并非简单的“写代码处理表格”,而是一个涉及数据获取、格式转换、质量校验、特征工程等多个环节的系统工程。在金融行业中,数据来源多样(交易所行情、券商柜台、第三方数据商、内部业务系统),格式各异(CSV、Excel、JSON、Parquet、数据库表),且往往包含大量噪声和缺失。如果没有一个统一、可复现的环境,分析结果将难以验证和追溯。
Python之所以成为金融数据分析的主流语言,主要得益于其三大优势:语法简洁(适合快速原型开发)、生态丰富(NumPy、Pandas、SciPy、scikit-learn等库覆盖全流程)、社区活跃(金融领域有大量开源解决方案)。而Jupyter Notebook则提供了交互式编程体验,允许分析师将代码、输出、图表和文字说明整合在一个文档中,非常适合探索性数据分析和团队协作。
环境搭建的核心原则:
- 隔离性:使用虚拟环境(conda env或venv)避免不同项目间的依赖冲突。
- 可复现性:记录依赖版本(requirements.txt或environment.yml),确保他人能复现分析结果。
- 性能考量:金融数据通常较大(日线数据数GB),需确保NumPy/Pandas使用优化的BLAS后端。
- 安全性:避免使用root/管理员权限运行Jupyter,防止恶意代码执行。
3.2 操作流程:从零搭建Python与Jupyter环境
对于零基础学员,推荐使用Anaconda发行版,它预装了Python、NumPy、Pandas、Jupyter等常用工具,避免了单独安装的繁琐。以下是具体步骤:
3.2.1 安装Anaconda
- 访问Anaconda官网(anaconda.com),下载对应操作系统的Python 3.9+版本安装包。
- 安装时勾选“Add Anaconda to my PATH environment variable”(Windows)或使用默认配置(macOS/Linux)。
- 安装完成后,打开终端(Terminal)或Anaconda Prompt,输入
python --version验证安装。
3.2.2 创建虚拟环境(推荐)
# 创建名为fin_env的虚拟环境,指定Python版本
conda create -n fin_env python=3.9
# 激活环境
conda activate fin_env
# 安装核心库
conda install numpy pandas jupyter notebook
# 验证安装
python -c "import numpy, pandas; print('NumPy:', numpy.__version__); print('Pandas:', pandas.__version__)"
3.2.3 启动Jupyter Notebook
# 在终端中启动
jupyter notebook
# 或使用Jupyter Lab(更现代)
jupyter lab
启动后,浏览器会自动打开Jupyter界面。建议在项目目录下创建专门的文件夹存放数据文件和Notebook文件,例如 D:\fin_data_cleaning\。
| 工具/库 | 版本要求 | 用途 | 安装命令 |
|---|---|---|---|
| Python | ≥3.8 | 基础解释器 | Anaconda自带 |
| NumPy | ≥1.21 | 多维数组计算 | conda install numpy |
| Pandas | ≥1.4 | 表格数据处理 | conda install pandas |
| Jupyter Notebook | ≥6.4 | 交互式编程环境 | conda install jupyter |
| openpyxl | ≥3.0 | Excel文件读写 | pip install openpyxl |
3.3 案例拆解:读取金融数据并进行初步探索
假设我们手头有一份某股票2023年1月至6月的日线行情数据(CSV格式),文件名为 stock_daily.csv,包含以下字段:date(日期)、open(开盘价)、high(最高价)、low(最低价)、close(收盘价)、volume(成交量)、amount(成交额)。数据可能存在缺失值、重复行和异常价格。
3.3.1 数据读取
import pandas as pd
import numpy as np
# 读取CSV文件
df = pd.read_csv('stock_daily.csv', parse_dates=['date'], encoding='utf-8')
# 查看前5行
print(df.head())
# 查看数据形状
print(f"数据维度: {df.shape[0]}行 × {df.shape[1]}列")
3.3.2 初步探索
# 查看列名和数据类型
print(df.dtypes)
# 查看缺失值情况
print(df.isnull().sum())
# 查看描述性统计
print(df.describe())
# 检查重复行
print(f"重复行数量: {df.duplicated().sum()}")
通过上述操作,我们可以快速了解数据的基本面貌。例如,如果发现 close 列存在缺失值,或者 volume 出现负数(异常值),就需要在后续清洗中处理。
实战经验:在读取CSV时,务必指定 encoding='utf-8' 或 encoding='gbk'(取决于文件编码),否则可能因编码问题导致乱码。同时,使用 parse_dates 参数将日期列解析为datetime类型,便于后续时间序列分析。
3.4 常见误区与总结复盘
在环境搭建和数据读取阶段,初学者常犯以下错误:
- 误区一:使用系统Python直接安装库。这可能导致权限问题或依赖冲突,应使用虚拟环境。
- 误区二:忽略数据类型。例如,将日期列读为字符串,导致后续排序和筛选出错。
- 误区三:不检查缺失值。直接进行统计分析,导致结果偏差。
- 误区四:路径中包含中文或空格。在Windows系统中,这可能导致读取失败。
风险提示:金融数据往往涉及敏感信息,在读取和探索阶段就应建立数据安全习惯:不将数据文件上传至公共仓库,不在Notebook中明文存储密码,定期清理临时文件。