Python用pandas读取CSV文件并打印前几行数据
在日常数据分析和开发中,检查外部数据是否正确载入通常是第一步操作。使用 Python 的 pandas 库,通过 pd.read_csv() 函数读取磁盘上的 CSV 文件,并结合数据框的 head() 方法,即可用两行核心代码快速在控制台打印前几行数据,直观确认列名、数据格式与分隔效果。
一、准备环境与执行基础代码
开始前需要确保运行环境中已经安装了 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
二、控制打印行数与预览方式
方法 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() 查看末尾数据,能够有效发现文件末尾是否存在空行或异常汇总行。
三、常见读取场景与关键参数排查
在实际操作中,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'])
四、操作要点与实践建议
在日常脚本编写中,建议遵循以下两条实践习惯:
- 使用相对路径与工作目录保持一致:执行
pd.read_csv('data.csv')时,Python 默认在当前工作目录(即终端当前运行位置)寻找文件。如果出现FileNotFoundError,可以检查当前工作路径,或使用绝对路径进行定位。 - 优先使用 head() 进行轻量探测:在面对数十万行甚至几百万行的较大数据集时,切勿直接执行
print(df),因为这会消耗大量终端缓冲并降低响应速度。保持使用df.head()只查看前 5 行样本,既能够验证列映射与数据类型,又不会对系统性能造成额外负担。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













