使用Python高效处理CSV和Excel文件的多种方法

在数据分析、自动化和日常开发中,CSV和Excel文件是非常常见的数据存储格式。Python提供了强大的工具来读取、编辑和保存这两种文件,满足从基本读取到复杂分析的需求。本文将深入介绍CSV和Excel文件的多种处理方法,帮助你更好地管理和分析数据。


1. CSV文件的处理方法

1.1 使用csv库读取和写入CSV文件

Python内置的csv库是一个轻量级的工具,适合处理基本的CSV文件操作。

  • 读取CSV文件:csv.reader
    csv.reader将CSV文件中的每一行读取为一个列表,每个元素对应表中的一个字段。

    python 复制代码
    import csv
    
    with open('example.csv', 'r', encoding='utf-8') as file:
        reader = csv.reader(file)
        for row in reader:
            print(row)  # 每行数据以列表形式输出
  • 以字典格式读取:csv.DictReader
    DictReader将每行数据映射为字典,适合按列名访问数据。

    python 复制代码
    with open('example.csv', 'r', encoding='utf-8') as file:
        reader = csv.DictReader(file)
        for row in reader:
            print(row)  # 每行数据以字典形式输出
  • 写入CSV文件:csv.writer
    csv.writer可以将列表写入CSV文件。

    python 复制代码
    with open('output.csv', 'w', newline='', encoding='utf-8') as file:
        writer = csv.writer(file)
        writer.writerow(['name', 'age', 'city'])  # 写入表头
        writer.writerow(['Alice', 30, 'New York'])  # 写入数据
  • 以字典格式写入:csv.DictWriter
    DictWriter允许以字典格式写入数据,常用于有明确表头的情况。

    python 复制代码
    with open('output.csv', 'w', newline='', encoding='utf-8') as file:
        fieldnames = ['name', 'age', 'city']
        writer = csv.DictWriter(file, fieldnames=fieldnames)
        writer.writeheader()
        writer.writerow({'name': 'Alice', 'age': 30, 'city': 'New York'})
1.2 使用pandas处理CSV文件

pandas 提供了强大的数据操作能力,特别适合复杂数据分析和处理。

  • 读取CSV文件:pd.read_csv

    通过pandas.read_csv将CSV文件读取为DataFrame,支持选取指定列、筛选行等功能。

    python 复制代码
    import pandas as pd
    
    df = pd.read_csv('example.csv', usecols=['name', 'age'])  # 只读取指定列
    print(df.head())
  • 数据清洗和操作
    pandas 提供了多种数据操作方法,可以对DataFrame进行数据清洗、分组、聚合和排序。

    python 复制代码
    # 删除缺失数据的行
    df = df.dropna()
    
    # 过滤数据
    filtered_df = df[df['age'] > 25]
    
    # 排序数据
    sorted_df = df.sort_values(by='age', ascending=False)
  • 保存CSV文件:to_csv

    将数据写回CSV文件时,DataFrame.to_csv 方法支持调整分隔符和选择列等选项。

    python 复制代码
    df.to_csv('filtered_data.csv', index=False)
1.3 使用dask处理大文件

当数据量非常大时,dask库能够帮助你并行处理数据,类似于pandas但适用于大文件。

python 复制代码
import dask.dataframe as dd

# 读取大CSV文件
df = dd.read_csv('large_file.csv')

# 操作和筛选
filtered_df = df[df['age'] > 25]

# 保存结果
filtered_df.to_csv('filtered_large_data_*.csv', index=False)

2. Excel文件的处理方法

Excel文件包含多个工作表、格式、公式等复杂信息,适合于报告生成或多表格数据存储。

2.1 使用pandas读取和处理Excel文件

pandas提供的read_excelto_excel方法可以便捷地读写Excel文件。

  • 读取指定工作表:pd.read_excel

    可以通过sheet_name指定工作表名称,也可以读取所有工作表。

    python 复制代码
    df = pd.read_excel('example.xlsx', sheet_name='Sheet1')
    
    # 读取所有工作表
    sheets = pd.read_excel('example.xlsx', sheet_name=None)
    for sheet_name, sheet_df in sheets.items():
        print(f"Sheet: {sheet_name}")
        print(sheet_df.head())
  • 保存数据到Excel文件:to_excel
    to_excel可以写入单个或多个工作表,并支持格式控制。

    python 复制代码
    with pd.ExcelWriter('output.xlsx') as writer:
        df.to_excel(writer, sheet_name='Sheet1', index=False)
2.2 使用openpyxl处理单元格格式

openpyxl是一个适合处理Excel格式化的库,适合需要在Excel中加入样式或公式的情况。

  • 读取和写入数据

    python 复制代码
    from openpyxl import load_workbook
    
    # 打开Excel文件
    workbook = load_workbook('example.xlsx')
    sheet = workbook['Sheet1']
    
    # 读取单元格内容
    print(sheet['A1'].value)
    
    # 修改单元格内容
    sheet['B2'] = "Updated Value"
    workbook.save('modified_example.xlsx')
  • 添加样式和公式
    openpyxl可以应用单元格样式,加入公式和自动调整列宽等。

    python 复制代码
    from openpyxl.styles import Font, Color
    
    sheet['A1'].font = Font(bold=True, color="00FF00")
    sheet['B2'].value = '=SUM(B3:B10)'  # 添加公式
2.3 使用xlrdxlwt处理旧版Excel文件

对于.xls格式的旧版Excel文件,xlrdxlwt是有效的工具。

  • 读取旧版Excel文件
    xlrd用于读取.xls文件。

    python 复制代码
    import xlrd
    
    workbook = xlrd.open_workbook('example.xls')
    sheet = workbook.sheet_by_index(0)
    
    # 读取数据
    cell_value = sheet.cell(0, 0).value
    print(cell_value)
  • 写入旧版Excel文件
    xlwt可以创建新的.xls文件。

    python 复制代码
    import xlwt
    
    workbook = xlwt.Workbook()
    sheet = workbook.add_sheet('Sheet1')
    
    sheet.write(0, 0, 'Name')
    sheet.write(1, 0, 'Alice')
    workbook.save('example_old_format.xls')

3. CSV和Excel文件的选择

文件类型 优势 劣势 适用场景
CSV 文件体积小,处理速度快 不支持格式、公式等复杂数据 大数据量的存储和传输
Excel 支持多表格、格式和公式 文件大,处理速度慢 需要格式化展示、生成报告的情况

总结

Python提供了多种处理CSV和Excel文件的方法,选择合适的工具可以让数据处理更加高效。对于简单的数据操作,csv库即可满足需求;对于数据分析和处理,pandas非常强大。而在Excel文件中应用格式和公式时,openpyxlxlrd/xlwt更适合。。

相关推荐
0思必得02 小时前
[Web自动化] 处理爬虫异常
运维·爬虫·python·selenium·自动化·web自动化
喵手2 小时前
Python爬虫零基础入门【第九章:实战项目教学·第17节】内容指纹去重:URL 变体/重复正文的识别!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·内容指纹去重·url变体
喵手2 小时前
Python爬虫零基础入门【第五章:数据保存与入库·第1节】先学最通用:CSV/JSONL 保存(可复现、可分享)!
爬虫·python·python爬虫实战·python爬虫工程化实战·python爬虫零基础入门·数据保存与入库·csv/jsonl
子夜江寒2 小时前
OpenCV 学习:图像拼接与答题卡识别的实现
python·opencv·学习·计算机视觉
bjxiaxueliang2 小时前
一文掌握Python Flask:HTTP微服务开发从入门到部署
python·http·flask
SunnyRivers3 小时前
Python 中的 HTTP 客户端:Requests、HTTPX 与 AIOHTTP 对比
python·httpx·requests·aiohttp·区别
u0109272714 小时前
持续集成/持续部署(CI/CD) for Python
jvm·数据库·python
lixin5565564 小时前
基于迁移学习的图像风格增强器
java·人工智能·pytorch·python·深度学习·语言模型
阡陌..4 小时前
浅谈SAR图像处理---形态学滤波
图像处理·人工智能·python
renhongxia14 小时前
多机器人环境监测中的异质性,用于解决时间冲突任务
人工智能·信息可视化·语言模型·自然语言处理·数据分析·机器人