文本文件是最常见的数据交换格式,核心是分隔符(默认逗号)与换行结构。


1. read_csv()

1.1 函数签名

pd.read_csv(
    filepath_or_buffer,
    sep=',', delimiter=None, header='infer', names=None, index_col=None,
    usecols=None, dtype=None, engine=None, converters=None,
    true_values=None, false_values=None, skiprows=None, skipfooter=0,
    nrows=None, na_values=None, keep_default_na=True, na_filter=True,
    verbose=False, skip_blank_lines=True, parse_dates=None, date_parser=None,
    dayfirst=False, cache_dates=True, iterator=False, chunksize=None,
    compression='infer', thousands=None, decimal='.', lineterminator=None,
    quotechar='"', quoting=0, escapechar=None, comment=None, encoding=None,
    on_bad_lines='error', low_memory=True, memory_map=False,
    float_precision=None, storage_options=None
)

1.2 参数详解

参数说明
sep分隔符,默认 ',',也可用正则表达式
delimitersep 的别名
header表头行号(0 表示第一行为表头,None 表示无表头)
names自定义列名列表,header=0 时同时使用需配合 header=0 语义
index_col指定列为索引,可传列名或整数,False 则不使用第一列为索引
usecols只读取指定列(列名列表、位置列表或可调用函数)
dtype列的类型映射字典(如 {'a': 'int32'})
engine解析引擎:'c'、'python'、'pyarrow'
converters对指定列应用转换函数(字典形式)
true_values被识别为 True 的字符串列表
false_values被识别为 False 的字符串列表
skiprows跳过前 n 行或按行号列表跳过
skipfooter跳过文件末尾 n 行(需 engine='python')
nrows只读取前 n 行
na_values额外标识缺失值的字符串集合
keep_default_na是否保留默认缺失值集合(如 'NA'、'NaN')
na_filter是否执行缺失值识别(False 可提升性能)
verbose是否打印额外信息
skip_blank_lines是否跳过空行
parse_dates解析为日期类型:布尔值、列名列表,或组合形式
date_parser自定义日期解析函数(已弃用,使用 date_format)
date_format指定日期格式字符串(如 '%Y-%m-%d')
dayfirst日期格式优先解释为“日/月/年”
cache_dates是否缓存已解析的日期值
iterator返回 TextFileReader 对象,可迭代读取
chunksize分块读取行数,返回 TextFileReader
compression压缩格式:'infer'、'gzip'、'bz2'、'zip'、'xz'
thousands千位分隔符(如 ',')
decimal小数点符号(如欧洲格式 ',')
lineterminator行终止符字符串
quotechar引用字符(默认 ")
quoting引用规则(csv.QUOTE_* 常量)
escapechar转义字符
comment注释标识符(该字符后的内容被忽略)
encoding文件编码(如 'utf-8'、'gbk')
on_bad_lines坏行处理:'error'、'warn'、'skip'
low_memory分块读取内部处理(可能产生类型推断不一致)
memory_map内存映射文件
float_precision浮点解析精度:'high' 或 'legacy'
storage_options云存储的认证与配置

1.3 常用示例

import pandas as pd
 
# 基本读取
df = pd.read_csv('data.csv')
 
# 指定分隔符与编码
df = pd.read_csv('data.txt', sep='\t', encoding='utf-8')
 
# 无表头 + 自定义列名
df = pd.read_csv('data.csv', header=None, names=['A', 'B', 'C'])
 
# 只读取部分列和行
df = pd.read_csv('data.csv', usecols=['A', 'C'], nrows=100)
 
# 指定类型与日期列
df = pd.read_csv(
    'data.csv',
    dtype={'id': 'int32', 'price': 'float32'},
    parse_dates=['date']
)
 
# 自定义缺失值
df = pd.read_csv('data.csv', na_values=['NULL', 'N/A', '-'])
 
# 分块读取(大数据)
reader = pd.read_csv('large.csv', chunksize=10000)
for chunk in reader:
    process(chunk)
 
# 跳过异常行
df = pd.read_csv('data.csv', on_bad_lines='skip')

2. to_csv()

2.1 函数签名

DataFrame.to_csv(
    path_or_buf=None, sep=',', na_rep='', float_format=None,
    columns=None, header=True, index=True, index_label=None,
    mode='w', encoding=None, compression='infer', quoting=None,
    quotechar='"', lineterminator=None, chunksize=None,
    date_format=None, doublequote=True, escapechar=None,
    decimal='.', errors='strict', storage_options=None
)

2.2 参数详解

参数说明
path_or_buf目标路径或文件对象,None 返回字符串
sep分隔符
na_rep缺失值表示字符串(默认空字符串)
float_format浮点格式字符串(如 '%.2f')
columns需要导出的列列表
header是否写出列名(布尔或字符串列表)
index是否写出索引
index_label索引列名
mode写入模式:'w' 覆盖 / 'a' 追加
encoding文件编码
compression压缩格式(如 'gzip')
quoting引用规则
quotechar引用字符
lineterminator行终止符
chunksize分块写出行数
date_format日期格式字符串
doublequote是否双写引用符号
escapechar转义字符
decimal小数点符号
errors编码错误的处理方式
storage_options云存储配置

2.3 常用示例

# 基本写出
df.to_csv('output.csv')
 
# 不含索引,指定编码
df.to_csv('output.csv', index=False, encoding='utf-8-sig')
 
# 自定义缺失值与压缩
df.to_csv('output.csv', na_rep='NULL', compression='gzip')
 
# 追加写出
df.to_csv('output.csv', mode='a', header=False)
 
# 限制列与格式
df.to_csv('output.csv', columns=['A', 'B'], float_format='%.2f')
 
# 返回字符串而不写文件
s = df.to_csv(index=False)

注意事项

  • utf-8-sig 编码写出可解决 Excel 打开 CSV 中文乱码问题。
  • 使用 chunksize 逐块写入时可配合 mode='a' 与 header=False 避免重复表头。

文档 3:4.2 JSON.md