3. Pandas 基础:DataFrame 与 Series 创建、数据读取与预览
在良率报告自动化中,所有分析(趋势图、Pareto 图)都始于数据加载与结构理解。Pandas 是 Python 中最核心的数据分析库,它提供了两种基本数据结构:Series(一维标签数组)和 DataFrame(二维表格)。本章将带你掌握它们的创建、文件读取以及数据预览方法。
3.1 核心数据结构:Series 与 DataFrame
| 数据结构 | 维度 | 说明 | 良率场景示例 |
|---|---|---|---|
| Series | 1D | 带索引的一维数组,类似带行标签的列 | 某批次各站点的良率值序列 |
| DataFrame | 2D | 带行索引和列标签的表格,由多个 Series 组成 | 包含批次号、站点、良率、缺陷数的完整报表 |
记忆要点:DataFrame 可以看作是一个“电子表格”,每一列都是一个 Series。在良率分析中,我们通常用 DataFrame 存储原始数据,用 Series 提取单列进行绘图或计算。
3.1.1 创建 Series
import pandas as pd
# 从列表创建,自动生成整数索引
yield_values = [98.5, 97.2, 99.1, 96.8]
s1 = pd.Series(yield_values)
print(s1)
# 指定自定义索引(站点名称)
sites = ['SMT', 'AOI', 'FT', 'Packing']
s2 = pd.Series(yield_values, index=sites)
print(s2)
# 从字典创建,键自动成为索引
data_dict = {'SMT': 98.5, 'AOI': 97.2, 'FT': 99.1, 'Packing': 96.8}
s3 = pd.Series(data_dict)
print(s3)
3.1.2 创建 DataFrame
# 从字典创建(最常用方式)
data = {
'批次号': ['B001', 'B002', 'B003', 'B004'],
'站点': ['SMT', 'AOI', 'FT', 'Packing'],
'良率': [98.5, 97.2, 99.1, 96.8],
'缺陷数': [15, 28, 9, 32]
}
df = pd.DataFrame(data)
print(df)
# 从列表嵌套列表创建,需指定列名
rows = [
['B001', 'SMT', 98.5, 15],
['B002', 'AOI', 97.2, 28],
['B003', 'FT', 99.1, 9],
['B004', 'Packing', 96.8, 32]
]
df2 = pd.DataFrame(rows, columns=['批次号', '站点', '良率', '缺陷数'])
print(df2)
良率实践:在自动化脚本中,我们通常不会手动创建 DataFrame,而是通过读取 CSV/Excel 文件直接加载。手动创建主要用于测试或构建小规模示例数据。
3.2 数据读取:CSV 与 Excel
Pandas 提供了 read_csv() 和 read_excel() 函数,可以一键将文件加载为 DataFrame。以下是良率报告中最常用的参数配置:
| 函数 | 常用参数 | 说明 | 良率场景建议 |
|---|---|---|---|
pd.read_csv() |
filepath, encoding, sep, header |
读取逗号分隔或自定义分隔符的文本文件 | 推荐使用 encoding='utf-8' 或 'gbk';sep=',' |
pd.read_excel() |
filepath, sheet_name, header, usecols |
读取 Excel 文件的指定工作表 | 使用 sheet_name=0 或工作表名称;usecols 可限制读取列 |
# 读取 CSV 文件(良率日报)
df_csv = pd.read_csv('yield_daily_report.csv', encoding='utf-8')
print(df_csv.head())
# 读取 Excel 文件(指定工作表)
df_excel = pd.read_excel('yield_weekly.xlsx', sheet_name='Sheet1')
print(df_excel.head())
# 读取时只选择需要的列,提升效率
df_optimized = pd.read_excel('yield_weekly.xlsx',
sheet_name='Sheet1',
usecols=['批次号', '站点', '良率', '缺陷数'])
常见陷阱:中文 Excel 文件有时包含合并单元格或表头不在第一行。建议在读取前手动检查文件结构,必要时使用
header=1 或 skiprows 参数跳过无关行。
3.3 数据预览与基本信息查看
加载数据后,第一步是快速了解数据集的整体状况。Pandas 提供了多个便捷方法:
df.head(n):查看前 n 行(默认 5 行),快速确认列名和数据格式。df.tail(n):查看后 n 行,检查数据末尾是否有异常。df.info():打印列名、非空计数、数据类型和内存占用,是诊断缺失值和类型错误的利器。df.describe():对数值列生成统计摘要(均值、标准差、四分位数等)。df.shape:返回 (行数, 列数) 元组。df.columns:返回列索引列表。df.dtypes:查看每列的数据类型。
# 假设已加载良率数据
print("=== 前5行数据 ===")
print(df.head())
print("\n=== 数据基本信息 ===")
df.info()
print("\n=== 数值列统计摘要 ===")
print(df.describe())
print(f"\n数据集形状: {df.shape}")
print(f"列名列表: {df.columns.tolist()}")
print(f"数据类型:\n{df.dtypes}")
良率检查清单:每次加载数据后,建议依次执行
head()、info()、describe()。重点关注:良率列是否为数值类型(float)、是否有缺失值、缺陷数列是否为正整数。这些检查能避免后续绘图时出现类型错误或空值异常。
3.4 数据预览与基本信息查看流程
下图展示了从文件读取到数据预览的完整工作流,这是良率报告自动化的第一步:
3.5 实战:加载良率数据并执行基本检查
以下是一个完整的良率数据加载与预览脚本,你可以直接用于自动化报告模板:
import pandas as pd
# 1. 读取数据
file_path = 'yield_data.csv'
df = pd.read_csv(file_path, encoding='utf-8')
# 2. 预览数据
print("【数据预览】")
print(df.head(10))
# 3. 基本信息
print("\n【基本信息】")
df.info()
# 4. 统计摘要
print("\n【统计摘要】")
print(df.describe())
# 5. 检查缺失值
print("\n【缺失值统计】")
print(df.isnull().sum())
# 6. 检查数据类型
print("\n【数据类型】")
print(df.dtypes)
# 7. 检查唯一值(适用于批次号、站点等分类列)
print("\n【站点唯一值】")
print(df['站点'].unique())
自动化要点:将上述代码封装为函数
load_and_inspect(filepath),每次运行报告时自动输出数据概况。如果发现良率列不是 float 类型,或存在大量缺失值,脚本应发出警告并停止后续绘图,避免生成错误图表。
3.6 本章小结
- Series 是一维标签数组,DataFrame 是二维表格,后者是良率分析的主要容器。
- 使用
pd.read_csv()和pd.read_excel()加载文件,注意编码和工作表参数。 - 数据预览四步法:
head()→info()→describe()→isnull().sum(),确保数据质量。 - 掌握这些基础操作后,下一章将进入数据清洗与预处理,为良率趋势图和 Pareto 分析准备干净的数据集。