文本文件是最常见的数据交换格式,核心是分隔符(默认逗号)与换行结构。
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 | 分隔符,默认 ',',也可用正则表达式 |
delimiter | sep 的别名 |
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