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() 找异常 → 针对性清洗。
Pandas 数据加载与预览流程 CSV 文件 Excel 文件 其他数据源 pd.read_csv() / pd.read_excel() DataFrame 对象 head() / tail() 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() 是数据预览的四大金刚,必须熟练使用。
  • 数据预览阶段的目标是快速发现缺失值、数据类型错误和异常值,为后续清洗指明方向。