
pandas.read_csv()的详解-ChatGPT4o作答
发布日期:2025-05-01 20:40:33
浏览次数:2
分类:技术文章
本文共 2979 字,大约阅读时间需要 9 分钟。
pandas.read_csv()
是 pandas 中最常用的函数之一,用于从 CSV(Comma-Separated Values)文件读取数据并加载为 DataFrame。以下是 read_csv
的详细解析,包括参数、用法和常见问题。
基本语法
import pandas as pddata = pd.read_csv(filepath, **kwargs)
filepath
: 文件路径,支持本地路径或 URL。
主要参数详解
1. 数据分隔
sep
: 指定分隔符(默认 ','
)
- 用于指定文件中列之间的分隔符。
- 默认是逗号(
,
),可以更改为其他分隔符,如制表符(\t
)或空格。
data = pd.read_csv('data.csv', sep=',') # 默认分隔符是逗号data = pd.read_csv('data.tsv', sep='\t') # 使用制表符data = pd.read_csv('data.txt', sep=' ') # 使用空格分隔
2. 文件编码
encoding
: 文件编码格式
- 默认使用
utf-8
,但文件可能是其他编码格式。 - 常见编码:
latin1
或ISO-8859-1
:处理西欧语言。gbk
:用于中文文件。
data = pd.read_csv('data.csv', encoding='utf-8')data = pd.read_csv('data.csv', encoding='gbk')
3. 处理缺失值
na_values
: 指定哪些值视为缺失值
- 默认将
NaN
、空字符串等视为缺失值。 - 可以指定更多的缺失值表示形式,例如
-1
或NULL
。
data = pd.read_csv('data.csv', na_values=['NULL', '-1'])
keep_default_na
: 是否保留默认的缺失值识别
- 默认是
True
,如果想仅使用na_values
指定的值作为缺失值,设置为False
。
data = pd.read_csv('data.csv', na_values=['None'], keep_default_na=False)
4. 指定行与列
usecols
: 选择读取的列
- 提供列名列表或列索引列表,仅读取指定的列。
data = pd.read_csv('data.csv', usecols=['col1', 'col2'])data = pd.read_csv('data.csv', usecols=[0, 1]) # 按列索引选择
skiprows
: 跳过前几行
- 可跳过文件的指定行数(或行列表)。
data = pd.read_csv('data.csv', skiprows=2) # 跳过前两行data = pd.read_csv('data.csv', skiprows=[0, 2]) # 跳过第0行和第2行
5. 索引
index_col
: 指定哪一列作为索引
- 通过列名或列索引指定。
data = pd.read_csv('data.csv', index_col='id')data = pd.read_csv('data.csv', index_col=0) # 第一列作为索引
6. 数据类型
dtype
: 强制指定列的数据类型
- 默认会自动推断数据类型,但可以显式指定。
data = pd.read_csv('data.csv', dtype={ 'col1': int, 'col2': float})
7. 处理行数
nrows
: 读取前几行
- 仅读取文件的前
n
行。
data = pd.read_csv('data.csv', nrows=100) # 读取前100行
chunksize
: 按块读取
- 以块为单位读取大文件,每次读取固定行数。
chunk_iter = pd.read_csv('data.csv', chunksize=1000)for chunk in chunk_iter: print(chunk.head())
8. 处理列名
header
: 指定列名行
- 默认
header=0
(第一行作为列名)。 - 如果文件没有列名,设置
header=None
。
data = pd.read_csv('data.csv', header=0) # 第一行是列名data = pd.read_csv('data.csv', header=None, names=['col1', 'col2', 'col3']) # 自定义列名
9. 其他常用参数
delimiter
: 同sep
,用于指定分隔符。quotechar
: 指定引用字符(默认'"'
),用于识别包含分隔符的字符串。
data = pd.read_csv('data.csv', sep=',', quotechar='"')
error_bad_lines
: 遇到坏行是否报错(已弃用)。- 替代方法是使用
on_bad_lines='skip'
:
- 替代方法是使用
data = pd.read_csv('data.csv', on_bad_lines='skip')
示例 1:读取基础 CSV 文件
data = pd.read_csv('data.csv', sep=',', encoding='utf-8', nrows=10)print(data.head())
示例 2:处理特殊 CSV 文件
假设文件 data.csv
内容如下:
# 注释行ID,Name,Age,City1,Alice,30,NewYork2,Bob,25,LosAngeles3,Charlie,,Chicago
使用以下代码:
data = pd.read_csv('data.csv', sep=',', comment='#', na_values=[''])print(data)
输出:
ID Name Age City0 1 Alice 30.0 NewYork1 2 Bob 25.0 LosAngeles2 3 Charlie NaN Chicago
示例 3:大文件分块读取
chunk_iter = pd.read_csv('large_data.csv', chunksize=10000)for chunk in chunk_iter: print(chunk.shape)
常见问题
-
UnicodeDecodeError
: 文件编码不匹配,尝试指定编码:data = pd.read_csv('data.csv', encoding='latin1')
-
分隔符复杂:使用正则表达式:
data = pd.read_csv('data.csv', sep=r'\s+')
-
大文件内存不足:使用
chunksize
分块处理,或仅加载特定列和行。
总结
pandas.read_csv()
提供了灵活强大的参数支持,可以满足绝大多数的 CSV 文件读取需求。根据具体情况调整参数即可高效加载数据!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月29日 06时20分59秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Pandas DataFrame多索引透视表-删除空头和轴行
2025-05-01
Pandas matplotlib 无法显示中文
2025-05-01
Pandas Plots:周末的单独颜色,x 轴上漂亮的打印时间
2025-05-01
Pandas 使用指南
2025-05-01
Passport 授权码模式
2025-05-01
pdf从结构新建书签_在PDF文件中怎样创建书签
2025-05-01
Perl6 必应抓取(1):测试版代码
2025-05-02
Phoenix简介_安装部署_以及连接使用---大数据之Hbase工作笔记0035
2025-05-02
PhotoManage
2025-05-02
Photoshop工作笔记001---Photoshop常用快捷键总结
2025-05-02
PHP 5.3.0以上推荐使用mysqlnd驱动
2025-05-02
php aes sha1解密,PHP AES加密/解密
2025-05-02
php array 分片,PHP常用数组函数小结
2025-05-02
PHP centos下安装grpc
2025-05-02
php CI框架单个file表单多文件上传例子
2025-05-02
php composer
2025-05-02
php console
2025-05-02