
Python中操作CSV文件
在 Python 中操作 CSV 文件通常使用内置的 csv
模块,或第三方库如 pandas
(适合复杂数据处理)。以下是详细的操作指南:
一、使用 csv
模块(标准库)
1. 读取 CSV 文件
import csv
with open('data.csv', 'r', encoding='utf-8') as file:
reader = csv.reader(file)
# 跳过表头(如果有)
header = next(reader)
# 逐行读取数据
for row in reader:
print(row) # row 是一个列表,按列顺序存储数据
2. 写入 CSV 文件
import csv
data = [
["Name", "Age", "City"],
["Alice", 30, "New York"],
["Bob", 25, "London"],
]
with open('output.csv', 'w', encoding='utf-8', newline='') as file:
writer = csv.writer(file)
writer.writerows(data)
3. 处理带分隔符或引号的 CSV
自定义分隔符(如
;
):csv.reader(file, delimiter=';')
处理引号:
csv.writer(file, quoting=csv.QUOTE_ALL, quotechar='"')
4. 使用 DictReader
和 DictWriter
(按列名操作)
# 读取
with open('data.csv', 'r', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
print(row['Name'], row['Age']) # 按列名访问
# 写入
headers = ['Name', 'Age', 'City']
with open('output.csv', 'w', newline='') as file:
writer = csv.DictWriter(file, fieldnames=headers)
writer.writeheader()
writer.writerow({'Name': 'Charlie', 'Age': 28, 'City': 'Paris'})
二、使用 pandas
库(适合复杂操作)
1. 安装 pandas
pip install pandas
2. 读取 CSV
import pandas as pd
df = pd.read_csv('data.csv', encoding='utf-8')
print(df.head()) # 显示前5行
3. 写入 CSV
df.to_csv('output.csv', index=False) # index=False 表示不保存行索引
4. 处理数据示例
# 筛选数据
filtered = df[df['Age'] > 25]
# 添加新列
df['Country'] = ['USA', 'UK', 'France']
# 合并多个 CSV
df_combined = pd.concat([df1, df2], ignore_index=True)
使用pandas来遍历csv文件,csv文件没有标题,只能通过下标来获取
import pandas as pd
def read_csv():
"""读取csv文件"""
with open("a.csv", "r", encoding="utf-8") as f:
df = pd.read_csv(f)
# 行和列数
print(df.shape) # (257, 16)
# 遍历
for i, line in df.iterrows():
# 指定列下标查询,因为没有标题,只能按下标来查询
print(line[0], line[1], line[2])
if __name__ == "__main__":
read_csv()
三、常见问题
编码问题:使用
encoding='utf-8'
或encoding='gbk'
避免乱码。大文件处理:逐行读取(避免一次性加载到内存):
with open('large_file.csv', 'r') as file: for chunk in pd.read_csv(file, chunksize=1000): process(chunk)
自定义分隔符:如 TSV 文件使用
pd.read_csv('data.tsv', sep='\t')
。
四、总结
简单任务:使用
csv
模块(无需安装第三方库)。复杂数据处理:使用
pandas
(支持数据清洗、分析和高效操作)。注意文件路径、编码和分隔符,根据实际数据调整参数。
如果有更具体的需求(如处理特殊格式或性能优化),可以进一步探讨!