Python中的CSV文件操作
CSV(逗号分隔值)是最常用的表格数据存储格式之一。从Excel表格导出到Web服务与数据库之间的数据交换,CSV格式应用广泛。
Python提供了高效的CSV文件处理工具。你可以使用内置的csv模块进行基础操作,也可以借助强大的pandas库进行数据分析。本文将详细介绍CSV文件的读取、写入、数据处理、错误预防以及大文件性能优化方法。
CSV格式基础
CSV文件结构
CSV是一种纯文本格式。文件中的每一行包含一条记录,记录中的值由特定分隔符分隔。默认使用逗号,但也可以使用分号、制表符或竖线。
一个标准CSV文件的内容如下:
姓名,年龄,城市
张三,25,北京
李四,30,上海
CSV格式的优势
CSV格式具有以下重要优点:
- 结构简单,易于阅读
- 被大多数程序和编程语言支持
- 文件体积相比其他格式更小
- 可用文本编辑器直接修改
- 在不同系统间交换数据时通用性强
使用csv模块操作CSV
读取CSV文件基础
Python标准库中的csv模块适合进行基本的CSV文件操作。简单读取数据的方法如下:
import csv
with open("data.csv", newline='', encoding='utf-8') as f:
reader = csv.reader(f)
for row in reader:
print(row)
执行结果:
['姓名', '年龄', '城市']
['张三', '25', '北京']
['李四', '30', '上海']
使用表头读取数据
为了方便操作命名列,可以使用csv.DictReader:
with open("data.csv", encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
print(row["姓名"], row["城市"])
此方法会自动为每一行创建字典,键名来自文件的第一行(表头)。
写入数据到CSV文件
简单行写入
基本的写入方式使用csv.writer:
with open("output.csv", mode='w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(["姓名", "年龄"])
writer.writerow(["王五", 35])
写入字典数据
对于结构化数据,使用csv.DictWriter更方便:
data = [
{"姓名": "赵六", "年龄": 28},
{"姓名": "孙七", "年龄": 40},
]
with open("people.csv", "w", newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=["姓名", "年龄"])
writer.writeheader()
writer.writerows(data)
读写参数配置
csv模块支持多种参数自定义:
- delimiter:指定字段分隔符
- quotechar:用于包裹值的引号字符
- skipinitialspace:忽略分隔符后的空格
- lineterminator:行结束符
使用pandas库操作CSV
安装与导入pandas
pandas库提供了更强大的CSV文件处理能力:
pip install pandas
用pandas读取CSV文件
读取CSV文件的主要方法:
import pandas as pd
df = pd.read_csv("data.csv")
print(df.head())
pandas会自动将CSV数据加载为DataFrame对象,方便进行数据筛选、聚合和可视化等高级操作。