Python用pandas读取CSV文件并打印前几行数据

洛溪
洛溪
发布时间:2026-10-10 | 2人浏览过
原创

在日常数据分析和开发中,检查外部数据是否正确载入通常是第一步操作。使用 Python 的 pandas 库,通过 pd.read_csv() 函数读取磁盘上的 CSV 文件,并结合数据框的 head() 方法,即可用两行核心代码快速在控制台打印前几行数据,直观确认列名、数据格式与分隔效果。

Python用pandas读取CSV文件并打印前几行数据
图 1:CSV 纯文本文件经由 pandas 解析为内存 DataFrame 及前部数据切片原理

一、准备环境与执行基础代码

开始前需要确保运行环境中已经安装了 pandas 库。如果在未安装的情况下运行脚本,会引发 ModuleNotFoundError: No module named 'pandas' 错误。可以通过终端包管理工具完成安装:

pip install pandas

完成依赖准备后,建立 Python 脚本或打开交互式环境(如 IPython、Jupyter Notebook 或标准终端),执行如下标准代码:

import pandas as pd

# 1. 读取指定路径的 CSV 文件
df = pd.read_csv('students.csv')

# 2. 打印数据集的前几行
print(df.head())

在控制台中执行该脚本后,输出结果将呈现为整齐的行列格式,包含系统自动生成的从 0 开始的整数索引、字段名以及对应的数据内容。下面是一个典型的控制台输出示例:

   id     name  score
0   1    Alice   92.5
1   2      Bob   88.0
2   3  Charlie   95.0
3   4    David   76.5
4   5      Eva   89.0
Python用pandas读取CSV文件并打印前几行数据
图 2:读取 CSV 并打印前部数据的三步标准操作流程

二、控制打印行数与预览方式

方法 head() 允许通过传入整数参数 n 来灵活指定要打印的行数。如果不传入任何参数,pandas 默认返回前 5 行(即索引 0 至 4)。当需要快速核对更少或更多的样本时,直接传递数值即可:

# 仅打印前 3 行
print(df.head(3))

# 查看前 10 行更丰富的数据样貌
print(df.head(10))

此外,head() 还支持传入负数整数。当参数为负数(例如 df.head(-5))时,其含义是排除数据集末尾的 5 行,返回其余前面的全部行。如果数据规模较大,则不建议这样打印,以免控制台被大量数据刷屏。

与 head() 相对的是 tail() 方法,专门用于检查数据集末尾的最后几行数据。在实际排查中,先用 head() 查看表头与初始数据,再用 tail() 查看末尾数据,能够有效发现文件末尾是否存在空行或异常汇总行。

Python用pandas读取CSV文件并打印前几行数据
图 3:head() 方法参数控制与数据采样窗口对比

三、常见读取场景与关键参数排查

在实际操作中,CSV 文件往往来自不同的操作系统、数据库导出或电子表格软件,直接调用 pd.read_csv() 可能会遇到由于编码不一致、分隔符差异或缺少表头导致的读取异常。针对最常见的几种情况,可以通过追加特定参数解决:

1. 文件编码不匹配(UnicodeDecodeError)

在 Windows 环境下使用 Excel 保存的 CSV 文件通常使用 GBK 或带有 BOM 的 UTF-8 编码。如果读取时抛出 UnicodeDecodeError: 'utf-8' codec can't decode byte...,说明文件实际编码并非标准 UTF-8。通过明确指定 encoding 参数即可解决:

# 常见中文编码尝试方式
df = pd.read_csv('students.csv', encoding='gbk')

# 如果是由带签名的 UTF-8 导出
df = pd.read_csv('students.csv', encoding='utf-8-sig')

2. 分隔符不是逗号(制表符或分号)

CSV 意为逗号分隔值,但有些软件导出的文件实际是以制表符 \t(TSV)或分号 ; 作为列分隔符。如果不加说明,pandas 会将整行识别为一个单列字符串。此时可使用 sep 参数显式指定分隔符:

# 以制表符分隔
df = pd.read_csv('data_tab.csv', sep='\t')

# 以分号分隔
df = pd.read_csv('data_semicolon.csv', sep=';')

3. 源文件没有表头或自定义列名

如果 CSV 文件从第一行起就是真实数据而没有列标题,pandas 默认会将第一行数据作为表头消耗掉,导致少了一条记录且字段名变成了具体数值。这时需要将 header 设置为 None,也可以同时传入 names 列表为各列命名:

# 不使用第一行作为表头,系统将分配 0, 1, 2... 作为列索引
df = pd.read_csv('no_header.csv', header=None)

# 在没有表头时直接指定列名
df = pd.read_csv('no_header.csv', header=None, names=['id', 'name', 'score'])
Python用pandas读取CSV文件并打印前几行数据
图 4:CSV 文件常见读取异常类型与核心参数排查总结图

四、操作要点与实践建议

在日常脚本编写中,建议遵循以下两条实践习惯:

  • 使用相对路径与工作目录保持一致:执行 pd.read_csv('data.csv') 时,Python 默认在当前工作目录(即终端当前运行位置)寻找文件。如果出现 FileNotFoundError,可以检查当前工作路径,或使用绝对路径进行定位。
  • 优先使用 head() 进行轻量探测:在面对数十万行甚至几百万行的较大数据集时,切勿直接执行 print(df),因为这会消耗大量终端缓冲并降低响应速度。保持使用 df.head() 只查看前 5 行样本,既能够验证列映射与数据类型,又不会对系统性能造成额外负担。
相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表