2. Python开发环境搭建与工具准备

环境监测数据处理的第一步,不是写代码,而是把“工作台”搭好。本节要完成四件事:安装Anaconda(Python发行版与包管理器)、安装并启动Jupyter Notebook(交互式分析环境)、安装VS Code(代码编辑器)、创建独立虚拟环境并安装pandas、numpy、matplotlib三个核心库,最后编写并运行第一个数据读取脚本,确认整条链路可用。

一、为什么用Anaconda而不是裸装Python

环境监测数据往往涉及CSV、Excel、NetCDF等多种格式,依赖库版本之间容易冲突。Anaconda自带conda包管理器和科学计算生态,能在一个命令里完成“建环境+装库”,并且不同项目互不干扰。安装时从官网下载对应操作系统的安装包,Windows下建议勾选“Add Anaconda to my PATH environment variable”之外的默认选项,安装完成后打开“Anaconda Prompt”(Windows)或终端(macOS/Linux),输入以下命令验证:

conda --version
python --version

若分别返回类似 conda 24.x.x 与 Python 3.11.x,说明基础环境就绪。注意:不要用系统自带的Python覆盖conda的Python,后续所有操作都在conda环境中进行。

二、创建虚拟环境并安装数据处理库

虚拟环境的作用是把本项目的库与其它项目隔离。假设项目名为 env_monitor,指定Python 3.11,执行:

conda create -n env_monitor python=3.11 -y
conda activate env_monitor
conda install pandas numpy matplotlib jupyter -y

激活后命令行前缀会变成 (env_monitor),这是判断“当前在哪个环境”的最直接标志。安装完成后可用 conda list 查看已装包及版本。若网络较慢,可改用 pip install pandas numpy matplotlib jupyter,但同一环境内尽量只用一种包管理器,避免依赖解析冲突。

建议把环境名、Python版本、关键库版本记录在项目README中,例如“env_monitor / Python 3.11 / pandas 2.2 / numpy 1.26 / matplotlib 3.8”,便于换机复现。

三、Jupyter Notebook与VS Code的分工

Jupyter适合“边看数据边写代码”:单元格执行、结果就地显示、图表直接嵌入,非常适合探索性分析。启动方式是在激活的环境中执行 jupyter notebook,浏览器会自动打开工作目录页面。VS Code则适合编写正式脚本、管理多文件项目,安装Python扩展后,在右下角选择解释器为 env_monitor 环境即可获得补全与调试能力。两者可以共存:探索阶段用Jupyter,定稿后把逻辑整理成 .py 脚本。

环境监测数据处理工具链与虚拟环境隔离 基础层:Anaconda 发行版 conda 包管理器 Python 3.11 科学计算生态 Jupyter 内核 隔离层:虚拟环境 env_monitor(Python 3.11) pandas 表格读取与清洗 numpy 数值数组运算 matplotlib 趋势曲线绘制 jupyter 交互式笔记本 Jupyter Notebook 单元格执行 · 结果就地显示 图表嵌入 · 适合探索性分析 启动:jupyter notebook VS Code 多文件项目 · 调试与补全 解释器选择 env_monitor 适合编写正式 .py 脚本 输出:读取监测数据 → 生成 DataFrame → 绘制趋势图

四、编写第一个数据读取脚本

准备一个示例监测数据文件 air_quality.csv,字段为 time,pm25,pm10,so2,no2,共若干行小时记录(以下数据为教学示例,非实测)。在项目目录下新建 read_data.py:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 1. 读取CSV,指定时间列解析为日期
df = pd.read_csv("air_quality.csv", parse_dates=["time"])

# 2. 基本检查
print("数据形状:", df.shape)
print("字段类型:\n", df.dtypes)
print("缺失值统计:\n", df.isna().sum())

# 3. 简单清洗:按时间排序,缺失值用前值填充
df = df.sort_values("time").reset_index(drop=True)
df["pm25"] = df["pm25"].ffill()

# 4. 统计与绘图
print("PM2.5 均值:", round(df["pm25"].mean(), 2))
plt.plot(df["time"], df["pm25"], color="#2e8b6f", linewidth=1.5)
plt.title("PM2.5 小时变化(示例数据)")
plt.xlabel("时间"); plt.ylabel("浓度 μg/m³")
plt.xticks(rotation=30)
plt.tight_layout()
plt.savefig("pm25_trend.png", dpi=120)
print("图表已保存: pm25_trend.png")

运行方式有两种:在VS Code中打开该文件,确认右下角解释器为 env_monitor,点击运行按钮;或在激活环境的终端执行 python read_data.py。判断成功的依据有三条:终端打印出数据形状(如 (24, 5))、缺失值统计为0或已说明、项目目录下出现 pm25_trend.png 且曲线随时间连续变化。若报 ModuleNotFoundError,说明当前解释器不在 env_monitor 环境,需重新选择解释器或激活环境。

五、常见问题与排查要点

  • conda activate 报错:Windows下需先执行 conda init 并重开终端;或直接用Anaconda Prompt。
  • Jupyter 找不到内核:在目标环境中执行 python -m ipykernel install --user --name env_monitor,再在Notebook中切换内核。
  • 中文图表乱码:在绘图前加 plt.rcParams["font.sans-serif"] = ["SimHei"] 与 plt.rcParams["axes.unicode_minus"] = False。
  • CSV读取报编码错误:尝试 encoding="utf-8-sig" 或 encoding="gbk",环境监测系统导出的文件常见这两种编码。
不要把数据文件、脚本和虚拟环境目录混在一起提交。建议项目结构为:data/ 放原始数据,scripts/ 放脚本,output/ 放图表,虚拟环境由conda统一管理在用户目录下,不进入项目文件夹。