使用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更适合。。

相关推荐
databook8 小时前
Manim实现闪光轨迹特效
后端·python·动效
Juchecar10 小时前
解惑:NumPy 中 ndarray.ndim 到底是什么?
python
用户83562907805110 小时前
Python 删除 Excel 工作表中的空白行列
后端·python
Json_10 小时前
使用python-fastApi框架开发一个学校宿舍管理系统-前后端分离项目
后端·python·fastapi
RestCloud10 小时前
数据传输中的三大难题,ETL 平台是如何解决的?
数据分析·api
数据智能老司机17 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机18 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机18 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机18 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i18 小时前
drf初步梳理
python·django