CNN|CNN学习笔记-pd.read_csv()

2025/03/28 笔记 CNN 共 1198 字,约 4 分钟
阿伟

pd.read_csv(header=None) 参数详解

功能说明

header=None 是 Pandas 中 pd.read_csv() 方法的关键参数,用于明确禁止将 CSV 文件的任何行解析为列名(表头),所有行均视为数据行。


默认行为对比

1. 默认情况 (header=0)

df = pd.read_csv("data.csv")
  • 行为:自动将第一行(索引为0的行)作为列名

  • 示例文件
    Name,Age,City      👈 列名行
    Alice,30,New York  👈 数据行
    Bob,25,London      👈 数据行
    
  • 输出效果

    NameAgeCity

    |——-|—–|———–|

    Alice30New York
    Bob25London

2. 设置 header=None

df = pd.read_csv("data.csv", header=None)
  • 行为:所有行视为数据,自动生成数字列名

  • 示例文件
    Name,Age,City      👈 数据行
    Alice,30,New York  👈 数据行
    Bob,25,London      👈 数据行
    
  • 输出效果

    012

    |——-|—–|———–|

    NameAgeCity
    Alice30New York
    Bob25London

核心特性

1. 列名处理

  • 自动生成数字列名 [0, 1, 2, ...]

  • 可通过后续操作自定义列名:

    df.columns = ["姓名", "年龄", "城市"]
    

2. 数据包含范围

  • 读取所有行作为数据

  • 适用于没有表头的原始数据文件


#

典型应用场景

1. 无表头文件

Alice,30,New York
Bob,25,London
Carol,28,Paris

2. 自定义列名

df = pd.read_csv("raw_data.csv", header=None)
df.columns = ["User", "Score", "Location"]

3. 跳过无效标题

# 文件前2行是注释
df = pd.read_csv("data_with_junk.csv", 
                header=None,
                skiprows=2)  # 跳过前两行

注意事项

1. 表头误识别问题

  • 当文件实际包含表头时,若设置 header=None原表头行会被当作数据行

  • 正确处理方法:

    # 正确跳过表头行
    df = pd.read_csv("data.csv", skiprows=1)  # 保留列名自动生成
    

2. 性能影响

  • 对大型文件(GB级)建议显式指定列名:

    df = pd.read_csv("huge_file.csv", 
                    header=None,
                    names=["id", "timestamp", "value"])  # 提升读取速度
    

完整参数模板

pd.read_csv(
    filepath_or_buffer="data.csv",
    header=None,                # 禁用表头解析
    names=["col1", "col2"],     # 自定义列名
    skiprows=2,                 # 跳过前N行
    dtype={"col1": "int32"},    # 指定数据类型
    na_values=["NA", "null"]    # 定义空值标识
)

参考

文档信息

Search

    Table of Contents