Skip to content

Python 与数据处理 ​

科研中写的大部分代码都是 Python:实验脚本、数据处理、画图、调用模型。课内学过 Python 的同学,通常还需要补“工程能力”和“数据处理库”两块。

学到什么程度 ​

能独立写出这样的程序:读取一个实验结果文件夹里的几十个 JSON 文件,汇总成表格,计算每组的平均值和标准差,画成带误差棒的折线图并保存为 PDF。整个程序结构清晰,别人能看懂、能运行。

第一步:查漏补缺(1~2 周) ​

对照下面的清单,不熟的部分补上:

主题要会的内容
基础语法列表/字典/集合推导式、f-string、切片、解包、enumerate、zip
函数默认参数、*args/**kwargs、lambda、函数作为参数传递
面向对象类、继承、__init__、@property、@dataclass
模块与包import 的规则、if __name__ == "__main__": 的作用、自己写一个包
文件与数据用 pathlib 处理路径,读写 JSON、CSV,with 语句
错误处理try/except、读懂报错信息(Traceback 从下往上看)
常用标准库os、sys、time、argparse、logging、subprocess、collections
进阶(了解即可)类型标注、生成器、装饰器、asyncio 异步编程

资料

第二步:数据处理三件套(2 周) ​

库作用要会的内容
NumPy数组和矩阵计算,PyTorch 的张量操作和它几乎一样创建数组、索引切片、形状变换(reshape)、广播、向量化计算、np.mean/np.percentile
Pandas表格数据处理读写 CSV、筛选行列、groupby 聚合、合并表格
Matplotlib画图折线图、柱状图、散点图、子图、误差棒、保存 PDF

资料:《利用 Python 进行数据分析》(Python for Data Analysis,Pandas 作者 Wes McKinney 著),第 3 版在线免费阅读。

练习:下载一份公开数据集(例如 Kaggle 上的任意 CSV 数据集),回答 3 个你感兴趣的问题,每个问题用一张图说明。

python
import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv("data.csv")
print(df.head())          # 看前几行
print(df.describe())      # 每列的统计信息

# 按某一列分组,计算另一列的平均值
summary = df.groupby("category")["value"].agg(["mean", "std", "count"])
print(summary)

summary["mean"].plot(kind="bar", yerr=summary["std"], capsize=3)
plt.ylabel("value")
plt.tight_layout()
plt.savefig("summary.pdf")

第三步:写出“能交给别人”的代码 ​

科研代码经常要交给别人复现,或者几个月后自己再看。几条最重要的习惯:

  1. 一个函数只做一件事,函数名说清楚它做什么。
  2. 不要写死路径和参数,用命令行参数(argparse)或配置文件,见实验脚本模板。
  3. 用 logging 代替 print 记录长时间运行的程序。
  4. 写 README:怎么安装依赖、怎么运行、输出在哪里。
  5. 用格式化工具:Ruff 能自动整理代码格式并检查常见错误,在 VS Code 里装插件即可。

Jupyter Notebook ​

Jupyter 适合边写边看结果:探索数据、调试模型、画图。在 VS Code 里新建 .ipynb 文件就能直接使用(需要先在环境里安装 ipykernel,见 Python 环境)。

注意:Notebook 里的单元格可以乱序执行,容易出现“我这里能跑、重新打开就跑不了”的情况。探索完成后,把核心逻辑整理成 .py 脚本再做正式实验。

调试 ​

  • 读 Traceback:从最后一行开始看错误类型和信息,再往上找到你自己写的代码那一行。
  • 在 VS Code 里打断点调试(点击行号左侧出现红点,按 F5),可以一步步执行、查看每个变量的值,比到处加 print 高效得多。
  • 报错信息复制去搜索(或者问 AI),通常都能找到原因。

作者:崔涵帅、姚智、王振胜、唐志清 · 边缘智能系统实验室