如何读写CSV文件?

访客 python案例 6

本文目录导读:

  1. 使用 csv 模块(推荐,稳定性高)
  2. 使用 pandas(适合复杂数据处理)
  3. 常见注意事项
  4. 示例:读取CSV并进行简单统计

读写CSV(逗号分隔值)文件是数据处理中最常见的操作之一,Python提供了内置的csv模块,能很好地处理常见的CSV格式(包括带引号、含逗号的数据等)。

下面是几种常见的读写方式,包括基础操作和常用技巧。

使用 csv 模块(推荐,稳定性高)

读取CSV文件

方法A:使用 csv.reader(返回列表)

import csv
with open('data.csv', mode='r', encoding='utf-8') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)  # row 是一个列表,如 ['Name', 'Age', 'City']

如果你需要跳过表头:

with open('data.csv', mode='r', encoding='utf-8') as file:
    reader = csv.reader(file)
    header = next(reader)  # 读取第一行(表头)
    for row in reader:
        print(row)  # 从第二行开始

方法B:使用 csv.DictReader(返回字典,按列名访问)

import csv
with open('data.csv', mode='r', encoding='utf-8') as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row['Name'], row['Age'])  # 通过列名取值

写入CSV文件

方法A:使用 csv.writer

import csv
data = [
    ['Name', 'Age', 'City'],
    ['Alice', 30, 'New York'],
    ['Bob', 25, 'Los Angeles'],
    ['Charlie', 35, 'Chicago']
]
with open('output.csv', mode='w', newline='', encoding='utf-8') as file:
    writer = csv.writer(file)
    writer.writerows(data)  # 一次性写入多行

注意newline='' 是必要的,否则在Windows上会出现多余空行。

方法B:使用 csv.DictWriter(从字典列表写入)

import csv
fieldnames = ['Name', 'Age', 'City']
data = [
    {'Name': 'Alice', 'Age': 30, 'City': 'New York'},
    {'Name': 'Bob', 'Age': 25, 'City': 'Los Angeles'}
]
with open('output.csv', mode='w', newline='', encoding='utf-8') as file:
    writer = csv.DictWriter(file, fieldnames=fieldnames)
    writer.writeheader()  # 写入表头
    writer.writerows(data)  # 写入数据行

使用 pandas(适合复杂数据处理)

如果你已经在做数据分析工作,pandas 是最方便的选择。

读取CSV

import pandas as pd
df = pd.read_csv('data.csv')
print(df.head())  # 显示前5行

写入CSV

# df 是已有的 DataFrame
df.to_csv('output.csv', index=False)  # index=False 表示不写入行索引

常用参数:

  • sep=';':指定分隔符(如制表符 \t
  • encoding='utf-8-sig':处理中文乱码时常用,Excel兼容
  • na_rep='N/A':指定空值的填充内容

常见注意事项

  1. 编码问题:处理中文CSV时,建议使用 encoding='utf-8-sig',这样Excel打开不会乱码。
  2. 表头处理:使用 csv.DictReaderpandas 时,默认第一行是表头。
  3. 特殊字符:如果数据中包含逗号、换行符或引号,csv 模块会自动处理(加引号转义),你无需手动处理。
  4. 大文件:对于非常大的CSV,使用 csv.reader 逐行读取(不会一次性加载所有数据到内存)。

示例:读取CSV并进行简单统计

import csv
total_age = 0
count = 0
with open('data.csv', 'r', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    for row in reader:
        total_age += int(row['Age'])
        count += 1
if count > 0:
    print(f"平均年龄: {total_age / count:.2f}")

  • 如果只是简单处理CSV(不需要复杂计算),用 Python 内置的 csv 模块就足够。
  • 如果你还需要进行筛选、分组、绘图等操作,建议直接使用 pandas——它的 read_csvto_csv 几乎能处理所有CSV场景。

标签: 读写CSV

抱歉,评论功能暂时关闭!