1. Python数据文件处理全景概览
在日常数据处理工作中,我们几乎每天都要和各种格式的数据文件打交道。作为Python开发者,掌握不同格式文件的读写方法是必备技能。本文将系统梳理Python处理常见数据文件的方法论,从内置模块到第三方库,从基础操作到高阶技巧,带你构建完整的数据文件处理知识体系。
我从事数据分析工作多年,处理过各种"奇葩"数据文件格式,深知不同场景下工具选型的重要性。比如当需要快速查看一个小型CSV文件时,直接使用内置csv模块就足够了;但处理GB级别的大型数据集时,pandas的read_csv配合chunksize参数才是明智之选;而当需要处理复杂的Excel报表时,openpyxl提供的单元格级操作能力就派上用场了。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 内置模块:csv模块详解
2.1 csv模块基础操作
Python标准库中的csv模块是处理CSV文件的首选工具。CSV(Comma-Separated Values)作为一种轻量级数据交换格式,在数据科学领域应用极为广泛。与直接使用文件对象的read/write方法相比,csv模块能正确处理包含换行符、引号等特殊字符的情况,避免数据解析错误。
读取CSV文件的标准写法:
python复制import csv
with open('data.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
for row in reader:
print(row) # 每行数据以列表形式返回
写入CSV文件的正确姿势:
python复制data = [
['姓名', '年龄', '城市'],
['张三', 28, '北京'],
['李四', 32, '上海']
]
with open('output.csv', 'w', encoding='utf-8', newline='') as f:
writer = csv.writer(f)
writer.writerows(data) # 一次性写入多行
注意:在Windows平台写入CSV文件时,务必指定newline=''参数,否则会出现空行问题。这是Windows换行符处理机制导致的。
2.2 csv模块高级用法
实际工作中我们经常需要处理非标准CSV文件,这时就需要用到csv模块的一些高级参数:
python复制# 处理以分号分隔的文件
csv.reader(f, delimiter=';')
# 处理包含标题行的文件
csv.DictReader(f) # 每行数据以字典形式返回,键为标题行
# 处理包含引号的字段
csv.writer(f, quoting=csv.QUOTE_NONNUMERIC) # 非数字字段自动加引号
# 自定义空值处理
csv.writer(f, na_rep='NULL') # 将None值写入为'NULL'
我曾经遇到过一个坑:处理从欧洲同事发来的CSV文件时,发现数字解析总是出错。后来发现他们使用逗号作为小数点(如"1,23"表示1.23),而用分号作为列分隔符。解决方案是:
python复制csv.r
