第3章:Python环境与数据处理库
说实话,很多做测试的兄弟一听到「搭环境」就头大。我当年也是,刚入行那会儿,光装个Python就折腾了一下午,版本冲突、路径不对、缺这缺那……后来用了Anaconda,真香。
这一章,咱们就把吃饭的家当先备齐。说白了,就是三样东西:Anaconda(环境管家)、Pandas(表格处理神器)、NumPy(数组运算基石)。再加上Jupyter Notebook这个交互式笔记本,你就能边写代码边看结果,调试起来特别顺手。
3.1 Anaconda:一站式环境管理
Anaconda是什么?你可以把它理解成一个「Python全家桶」。它自带Python解释器,还预装了200多个常用库。我建议新手直接装Anaconda,省心。
安装步骤很简单:
- 去官网下载对应系统的安装包(Windows/Mac/Linux都支持)
- 一路默认安装,记得勾选「Add Anaconda to my PATH environment variable」
- 装完后打开终端,输入
conda --version验证
conda create -n test_env python=3.9 创建一个独立环境。这样不同项目之间不会互相干扰。我曾经因为环境混乱,导致一个跑了两周的自动化脚本突然崩溃……从那以后,环境隔离成了我的铁律。
常用的conda命令,我列个表给你:
| 命令 | 作用 |
|---|---|
conda create -n env_name python=3.9 |
创建新环境 |
conda activate env_name |
激活环境 |
conda deactivate |
退出环境 |
conda install pandas numpy |
安装库 |
conda list |
查看已安装的库 |
3.2 Jupyter Notebook:边写边测的利器
Jupyter Notebook是Anaconda自带的。你想想看,在测试数据分析时,你经常需要试一段代码、看个中间结果、再改改参数。用传统IDE写个完整脚本再运行,太慢了。Jupyter Notebook允许你把代码切成一个个「单元格」,每个单元格独立运行,结果直接显示在下方。
启动方式:在终端输入 jupyter notebook,浏览器会自动打开一个页面。新建一个Notebook,就能开始写了。
3.3 NumPy基础:数组运算的基石
NumPy是Python科学计算的底层库。测试数据里,我们经常要处理波形数据、向量、矩阵,这些用Python原生的列表做运算,慢得让人抓狂。NumPy的数组(ndarray)在底层是用C语言实现的,速度能快几十倍。
先看个最简单的例子:
import numpy as np
# 创建一个一维数组
data = np.array([1.2, 2.5, 3.8, 4.1, 5.6])
print(data)
# 数组运算:每个元素加10
data_shifted = data + 10
print(data_shifted)
# 计算均值、标准差
mean_val = np.mean(data)
std_val = np.std(data)
print(f"均值: {mean_val}, 标准差: {std_val}")
输出结果:
[1.2 2.5 3.8 4.1 5.6]
[11.2 12.5 13.8 14.1 15.6]
均值: 3.44, 标准差: 1.56
你看,一行代码就能算均值、标准差。在量产测试中,我们经常用这个来快速评估一批芯片的参数分布。
NumPy还有几个常用功能:
- 数组切片:
data[1:4]取第2到第4个元素 - 条件筛选:
data[data > 3.0]找出所有大于3.0的值 - 矩阵运算:
np.dot(A, B)矩阵乘法
3.4 Pandas入门:测试数据的瑞士军刀
Pandas是建立在NumPy之上的数据分析库。如果说NumPy是「数组」,那Pandas就是「带标签的表格」。测试数据通常以CSV或Excel文件形式存在,有行有列,Pandas处理这种数据简直不要太顺手。
先看怎么读取数据:
import pandas as pd
# 读取CSV文件
df = pd.read_csv('test_data.csv')
print(df.head()) # 查看前5行
# 读取Excel文件
df_excel = pd.read_excel('test_results.xlsx', sheet_name='Sheet1')
假设我们的测试数据长这样:
| 芯片ID | 测试项 | 测量值 | 规格下限 | 规格上限 | 结果 |
|---|---|---|---|---|---|
| CHIP001 | VDD | 1.82 | 1.70 | 1.90 | PASS |
| CHIP001 | IDD | 12.5 | 0.0 | 15.0 | PASS |
| CHIP002 | VDD | 1.65 | 1.70 | 1.90 | FAIL |
用Pandas做数据分析,几行代码就能搞定:
# 筛选出所有FAIL的芯片
fail_df = df[df['结果'] == 'FAIL']
print(f"失效芯片数量: {len(fail_df)}")
# 按测试项分组,计算均值
grouped = df.groupby('测试项')['测量值'].mean()
print(grouped)
# 计算良率
total = len(df)
pass_count = len(df[df['结果'] == 'PASS'])
yield_rate = pass_count / total * 100
print(f"良率: {yield_rate:.2f}%")
输出结果:
失效芯片数量: 1
测试项
IDD 12.50
VDD 1.74
Name: 测量值, dtype: float64
良率: 66.67%
df.describe() 来快速查看所有数值列的统计信息(均值、标准差、最小值、最大值等)。这能帮你一眼看出哪些参数分布异常。比如某个电压的均值偏下限,可能就需要调整测试程序了。
3.5 本章知识体系
下面这张图,帮你理清这三个工具的关系:
你看,Anaconda是底座,Jupyter Notebook是操作台,NumPy和Pandas是工具箱里的两把利器。学完这一章,你就能用Python处理测试数据了。下一章,咱们会拿真实的量产测试数据来练手,到时候你就知道这些工具多好用了。
公众号:蓝海资料掘金营,微信deep3321