3. Pandas 基础回顾:Series 与 DataFrame 创建、读取 CSV/Excel 文件、数据预览
在正式进入数据质量检查之前,必须牢固掌握 Pandas 的两大核心数据结构:Series(一维标签数组)和 DataFrame(二维表格)。本章将系统回顾它们的创建方式、文件读写方法以及最常用的数据预览手段,为后续的缺失值检测、重复值识别、异常值分析打下坚实基础。
3.1 Series 与 DataFrame 的创建
3.1.1 Series 创建
Series 可以看作带索引的一维数组,支持从列表、字典或标量值创建。
import pandas as pd
# 从列表创建,默认索引 0,1,2,...
s1 = pd.Series([85, 92, 78, 96])
print(s1)
# 从字典创建,键自动成为索引
s2 = pd.Series({'语文': 85, '数学': 92, '英语': 78})
print(s2)
# 指定索引
s3 = pd.Series([85, 92, 78], index=['A', 'B', 'C'])
print(s3)
3.1.2 DataFrame 创建
DataFrame 是最常用的表格结构,可以从字典、列表嵌套或 NumPy 数组创建。
import pandas as pd
# 从字典创建(键为列名,值为列表)
df1 = pd.DataFrame({
'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 28],
'城市': ['北京', '上海', '广州']
})
print(df1)
# 从列表嵌套创建
df2 = pd.DataFrame([
['张三', 25, '北京'],
['李四', 30, '上海'],
['王五', 28, '广州']
], columns=['姓名', '年龄', '城市'])
print(df2)
💡 提示:实际数据质量检查中,90% 以上的场景使用 DataFrame。Series 常用于提取单列数据或进行向量化运算。
3.2 读取 CSV 与 Excel 文件
数据质量检查的第一步通常是加载外部数据。Pandas 提供了 read_csv() 和 read_excel() 两个核心函数。
3.2.1 读取 CSV 文件
import pandas as pd
# 基本读取
df_csv = pd.read_csv('sales_data.csv')
# 常用参数
df_csv = pd.read_csv(
'sales_data.csv',
encoding='utf-8', # 编码设置,避免乱码
sep=',', # 分隔符,默认逗号
header=0, # 第0行为列名
index_col='订单ID', # 指定某列为行索引
dtype={'金额': float}, # 指定列数据类型
parse_dates=['日期'], # 自动解析日期列
na_values=['NA', 'NULL'] # 将指定值视为缺失值
)
3.2.2 读取 Excel 文件
import pandas as pd
# 基本读取
df_excel = pd.read_excel('sales_data.xlsx')
# 常用参数
df_excel = pd.read_excel(
'sales_data.xlsx',
sheet_name='Sheet1', # 指定工作表名称或索引
header=0, # 第0行为列名
usecols='A:C,E', # 只读取指定列
dtype={'客户ID': str}, # 防止客户ID被识别为数字
na_values=['缺失', 'N/A'] # 自定义缺失值标记
)
⚠️ 常见陷阱:
- CSV 文件编码不匹配时会出现乱码,优先尝试
utf-8,失败后尝试gbk或latin1。 - Excel 文件中合并单元格会导致部分行出现 NaN,建议在读取前取消合并。
- ID 列(如客户ID、订单ID)应指定为
str类型,防止前导零丢失。
3.3 数据预览:快速了解数据全貌
加载数据后,不要急于处理,先用预览方法摸清数据的基本情况。Pandas 提供了四个最常用的预览工具:head()、tail()、info()、describe()。
| 方法 | 功能 | 适用场景 |
|---|---|---|
df.head(n) |
查看前 n 行数据(默认 5 行) | 快速查看数据样例、列名是否对齐 |
df.tail(n) |
查看后 n 行数据(默认 5 行) | 检查数据末尾是否有异常或缺失 |
df.info() |
显示列名、非空计数、数据类型、内存占用 | 初步判断缺失值、数据类型是否正确 |
df.describe() |
生成数值列的统计摘要(均值、标准差、分位数等) | 发现异常值、数据分布是否合理 |
3.3.1 使用示例
import pandas as pd
# 加载示例数据
df = pd.read_csv('sales_data.csv')
# 查看前5行
print("===== head() =====")
print(df.head())
# 查看后3行
print("\n===== tail(3) =====")
print(df.tail(3))
# 查看数据信息
print("\n===== info() =====")
df.info()
# 查看统计摘要
print("\n===== describe() =====")
print(df.describe())
3.3.2 输出解读
- head() / tail():快速确认列名是否与预期一致,数据是否正常加载。
- info():重点关注
Non-Null Count列,如果某列的非空数小于总行数,说明存在缺失值;Dtype列检查数据类型是否合理(如日期列应为 datetime,金额列应为 float)。 - describe():观察
min和max是否在合理范围内;25%、50%、75%分位数是否平滑;std标准差过大可能暗示存在异常值。
📌 数据质量检查黄金流程:加载数据 →
head() 看样貌 → info() 查缺失和类型 → describe() 找异常 → 针对性清洗。
3.4 综合实战:加载销售数据并预览
下面通过一个完整的示例,演示从文件加载到数据预览的全过程。
import pandas as pd
# 1. 加载销售数据
df = pd.read_csv(
'sales_data.csv',
encoding='utf-8',
parse_dates=['订单日期'],
dtype={'客户ID': str, '订单ID': str}
)
# 2. 查看数据概貌
print("数据形状:", df.shape)
print("\n前5行数据:")
print(df.head())
# 3. 查看数据类型和缺失情况
print("\n数据信息:")
df.info()
# 4. 查看数值列统计摘要
print("\n统计摘要:")
print(df.describe())
# 5. 查看分类列的唯一值
print("\n城市列唯一值:", df['城市'].unique())
print("产品类别分布:")
print(df['产品类别'].value_counts())
💡 实战要点:
df.shape返回 (行数, 列数),快速了解数据规模。value_counts()用于查看分类列的频次分布,发现异常类别。unique()查看唯一值列表,检查是否有拼写错误或重复类别。
3.5 本章小结
- Series 是一维标签数组,DataFrame 是二维表格结构,后者是数据质量检查的主力。
read_csv()和read_excel()是数据加载的核心函数,注意编码、数据类型和缺失值标记参数。head()、tail()、info()、describe()是数据预览的四大金刚,必须熟练使用。- 数据预览阶段的目标是快速发现缺失值、数据类型错误和异常值,为后续清洗指明方向。