Python 处理 CSV 和 Excel 文件的全面指南

  • 时间:2025-11-22 21:38 作者: 来源: 阅读:0
  • 扫一扫,手机访问
摘要:CSV与Excel文件简介 CSV(逗号分隔值)和Excel是两种常见的数据存储格式。CSV是一种纯文本格式,以逗号分隔字段,适合简单的数据交换;而Excel支持多工作表、公式和复杂格式,适用于更复杂的表格处理。在Python中, csv模块可直接读写CSV文件,例如: import csv with open('data.csv', 'r') as f:

CSV与Excel文件简介

CSV(逗号分隔值)和Excel是两种常见的数据存储格式。CSV是一种纯文本格式,以逗号分隔字段,适合简单的数据交换;而Excel支持多工作表、公式和复杂格式,适用于更复杂的表格处理。在Python中, csv模块可直接读写CSV文件,例如:


import csv
with open('data.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

然而,Python标准库不支持直接处理Excel文件,需借助第三方库如 openpyxl pandas。Python因其丰富的库和简洁语法,成为处理这类文件的理想工具。无论是数据清洗还是自动化处理,Python都能高效完成任务。

使用 Python 处理 CSV 文件

Python 的 csv 模块提供了读写 CSV 文件的功能。CSV(逗号分隔值)是一种常见的数据格式,广泛用于数据交换和存储。该模块包含 csv.reader csv.writer 类,分别用于读取和写入 CSV 数据。

读取 CSV 文件

使用 csv.reader 可以逐行读取 CSV 文件。默认情况下,它使用 Excel 风格的格式(即逗号作为分隔符)。如果文件使用其他格式,如制表符或 Unix 格式,可以通过 dialect 参数指定。


import csv

with open('data.csv', 'r') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

写入 CSV 文件

使用 csv.writer 可以将数据写入 CSV 文件。同样支持通过 dialect 参数指定格式。


import csv

data = [
    ['姓名', '年龄'],
    ['张三', '25'],
    ['李四', '30']
]

with open('output.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    writer.writerows(data)

使用 dialects

csv.list_dialects() 可查看所有可用的 dialects,例如 'excel', 'unix' 等。这些格式定义了分隔符、引号等规则,适用于不同系统的 CSV 文件。


import csv
print(csv.list_dialects())

使用 DictReader 和 DictWriter

csv.DictReader 将 CSV 文件读取为字典形式,方便按列名访问数据; csv.DictWriter 则从字典写入 CSV 文件。


import csv

with open('data.csv', 'r') as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row['姓名'], row['年龄'])

通过这些工具,你可以高效地处理 CSV 数据,适用于数据分析、日志记录等多种场景。

高级CSV操作与方言自定义

在处理CSV文件时,不同格式的文件可能使用不同的分隔符、引号字符和换行符。为了更灵活地应对这些差异,Python的 csv模块提供了**CSV方言(dialect)**机制,并支持通过 csv.register_dialect自定义方言。

自定义CSV方言

你可以通过 csv.register_dialect注册自己的CSV格式。例如,假设一个文件使用制表符作为分隔符,且使用单引号作为引号:


import csv

csv.register_dialect('mydialect', delimiter='	', quotechar="'", escapechar='')

之后,在读取文件时直接使用该方言:


with open('data.tsv') as f:
    reader = csv.reader(f, dialect='mydialect')
    for row in reader:
        print(row)
自动检测CSV格式

对于未知格式的CSV文件,可以使用 csv.Sniffer类自动识别其结构。例如:


import csv

with open('cars.csv') as f:
    sample = f.read(1024)
    dialect = csv.Sniffer().sniff(sample)
    print("Detected delimiter:", dialect.delimiter)

此外, Sniffer还能判断是否包含标题行:


has_header = csv.Sniffer().has_header(sample)
print("Has header:", has_header)
处理大文件的优化技巧

当处理大型CSV文件时,建议使用生成器逐行读取,避免一次性加载整个文件到内存中:


with open('large_data.csv') as f:
    reader = csv.reader(f)
    for row in reader:
        # 处理每一行数据
        pass

通过合理使用自定义方言和自动检测功能,可以高效、灵活地处理各种CSV数据源。

Python中Excel文件处理简介

Python标准库并未原生支持Excel文件的读写操作,这使得在处理Excel数据时需要依赖第三方库。对于简单的CSV文件,Python提供了 csv模块,能够轻松实现数据的读取与写入。然而,Excel文件通常包含多个工作表、格式和公式,因此需要更强大的工具。

常用第三方库包括 openpyxl,它专门用于处理 .xlsx格式的Excel文件。安装方式如下:


pip install openpyxl

使用 openpyxl可以加载工作簿、访问工作表,并提取单元格数据。例如:


from openpyxl import load_workbook

wb = load_workbook('data.xlsx')
sheet = wb.active
for row in sheet.iter_rows(values_only=True):
    print(row)

相比CSV,Excel文件处理更为复杂,但功能也更强大。在实际应用中,若需直接处理Excel数据,推荐使用 openpyxl pandas等工具。

读取 Excel 文件的步骤

使用 openpyxl 库可以方便地读取 Excel 文件。首先,需要安装该库,可以通过命令行执行以下命令进行安装:


pip install openpyxl

安装完成后,可以通过 load_workbook 函数加载 Excel 文件,并通过 workbooks 属性获取工作表对象。

加载工作簿和选择工作表

加载 Excel 文件后,可以使用 wb.worksheets[0] 来获取第一个工作表,或者通过 wb['Sheet1'] 指定特定名称的工作表。例如:


from openpyxl import load_workbook
wb = load_workbook('temp_data_01.xlsx')
ws = wb['temperature data']

读取单元格数据

可以通过遍历工作表中的每一行来读取数据。使用 iter_rows() 方法可以逐行获取单元格数据。然后,将每个单元格的值提取出来并存储在一个列表中:


results = []
for row in ws.iter_rows():
    results.append([cell.value for cell in row])
print(results)

处理不同数据类型

Excel 中的单元格可能包含文本、数字或日期等不同类型的数据。 openpyxl 会自动识别这些类型,并返回相应的 Python 对象。例如,日期会被转换为 datetime 对象,数字则保持为 int float 类型。

示例代码:读取多个工作表

如果 Excel 文件包含多个工作表,可以循环遍历所有工作表并分别处理:


for sheet_name in wb.sheetnames:
    ws = wb[sheet_name]
    print(f"Reading sheet: {sheet_name}")
    for row in ws.iter_rows():
        print([cell.value for cell in row])

图片说明

图 21.1 显示了温度数据在 Excel 中的展示形式,与 CSV 格式相比,Excel 的结构更为复杂,但 openpyxl 提供了强大的功能来简化数据读取过程。

使用 openpyxl 编写 Excel 文件

在 Python 中,若要编写 Excel 文件,推荐使用 openpyxl 这个第三方库。它支持 .xlsx 格式的读写操作,功能强大且易于使用。首先,我们需要安装该库,可以通过命令行执行以下指令:


pip install openpyxl

创建新工作簿与工作表

创建一个新的 Excel 文件,需要先初始化一个 Workbook 对象,并选择或创建一个工作表。默认情况下, wb.active 会返回当前活动的工作表。


from openpyxl import Workbook

wb = Workbook()
ws = wb.active
ws.title = "示例数据"

写入数据到单元格和行

可以使用 append() 方法将数据逐行写入工作表中。例如,将列表中的每一项作为一行数据写入:


data = [
    ["姓名", "年龄", "城市"],
    ["张三", "25", "北京"],
    ["李四", "30", "上海"]
]

for row in data:
    ws.append(row)

设置单元格样式与格式

openpyxl 支持对单元格进行字体、颜色、对齐等格式设置。例如,设置标题行的字体为加粗并居中对齐:


from openpyxl.styles import Font, Alignment

title_row = ws[1]
for cell in title_row:
    cell.font = Font(bold=True)
    cell.alignment = Alignment(horizontal="center")

保存文件

最后,使用 save() 方法将工作簿保存为 .xlsx 文件:


wb.save("example.xlsx")

通过以上步骤,你可以轻松地使用 openpyxl 将结构化数据写入 Excel 文件,并对其进行基本的格式化处理。

CSV与Excel文件处理的性能比较

在处理大规模数据时,CSV和Excel各有优劣。CSV文件是纯文本格式,读取速度快,适合处理百万级数据。Python的 csv模块可高效读写CSV文件,例如:


import csv

with open('data.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

而Excel文件支持多工作表、公式、样式等复杂结构,但读取速度较慢,尤其在处理大文件时容易卡顿。若需处理Excel文件,可以使用第三方库如 pandas openpyxl

数据结构灵活性

CSV仅支持二维表格数据,不适合存储嵌套或层次化数据。Excel则能通过多工作表、合并单元格等方式灵活组织数据,但操作复杂度较高。

易用性与集成

CSV易于与其他工具(如数据库、API)集成,且兼容性强。Excel虽功能强大,但在自动化流程中不如CSV便捷。

使用场景建议

CSV:适用于大数据处理、脚本自动化、日志分析。Excel:适合小规模数据分析、可视化展示、报表生成。

CSV与Excel对比表

特性CSVExcel
读写速度较慢
数据结构简单二维表复杂多维
格式支持文本多种格式
自动化集成
适用场景大数据处理小规模分析

文件读写中的最佳实践与常见陷阱

在处理文件时,正确的错误处理是确保程序健壮性的关键。例如,在读取CSV文件时,应使用 try-except块捕获可能的异常:


import csv

try:
    with open('data.csv', 'r', encoding='utf-8') as f:
        reader = csv.DictReader(f)
        for row in reader:
            print(row)
except FileNotFoundError:
    print("文件未找到,请检查路径。")
except UnicodeDecodeError:
    print("编码错误,请确认文件编码格式。")

此外,避免常见的编码问题和分隔符错误非常重要。使用 csv.reader csv.DictReader可自动处理大多数标准分隔符(如逗号、制表符等),但若文件使用非标准分隔符,需手动指定 delimiter参数。

对于大文件,内存管理至关重要。使用逐行读取而非一次性加载整个文件,可以显著降低内存占用。同时,保持数据完整性是转换过程中的核心目标,避免因格式错误导致数据丢失。

结论与下一步

通过本章的学习,你掌握了使用 Python 处理 CSV 和 Excel 文件的基本方法。 csv 模块适合处理简单的数据文件,而 pandas 则能高效地处理复杂结构的数据。例如:


import pandas as pd
df = pd.read_excel('data.xlsx')
print(df.head())

对于进阶用户,可探索将数据集成到数据库(如阿里云 RDS)或通过 API 获取数据。建议进一步学习 pandas NumPy 以及数据清洗技巧,以提升数据分析能力。

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】八股已死、场景当立(场景篇-设计模式篇)(2025-11-22 23:27)
【系统环境|】群、环、域(2025-11-22 23:26)
【系统环境|】深度解析:基于Python的分布式缓存系统实现与性能优化(2025-11-22 23:26)
【系统环境|】TP区块链下载全解析:从技术原理到代码实现(2025-11-22 23:25)
【系统环境|】大模型在急性肾衰竭预测及临床方案制定中的应用研究(2025-11-22 23:25)
【系统环境|】特价股票投资中的可持续供应链管理整合方法(2025-11-22 23:24)
【系统环境|】第193期 如何微调大语言模型(LLM)(内含源码细节)(2025-11-22 23:23)
【系统环境|】用Python构建智能推荐系统:技术赋能美好生活(2025-11-22 23:23)
【系统环境|】企业估值中的氢能源应用评估(2025-11-22 23:22)
【系统环境|】ansible 学习之路(2025-11-22 23:22)
手机二维码手机访问领取大礼包
返回顶部