杰瑞科技汇

Python与Excel/CSV文件处理有何技巧?

核心概念

  • CSV (Comma-Separated Values): 一种纯文本格式,用逗号分隔数据,它像表格一样,但本身不包含任何格式信息,处理 CSV 文件通常使用 Python 内置的 csv 模块。
  • Excel (.xlsx, .xls): 二进制文件格式,可以包含工作表、图表、公式、格式等复杂信息,处理 Excel 文件最常用的库是 pandasopenpyxl

处理 CSV 文件

Python 内置了 csv 模块,无需安装即可使用。

Python与Excel/CSV文件处理有何技巧?-图1
(图片来源网络,侵删)

示例 1:读取 CSV 文件

假设有一个名为 data.csv 的文件,内容如下:

Name,Department,Salary
Alice,Engineering,90000
Bob,Sales,85000
Charlie,Marketing,95000

逐行读取(节省内存)

import csv
# 使用 'with' 语句可以自动关闭文件
with open('data.csv', mode='r', encoding='utf-8') as file:
    # csv.reader 会返回一个迭代器,每次迭代返回一行数据
    csv_reader = csv.reader(file)
    # 读取表头
    header = next(csv_reader)
    print(f"表头: {header}")
    # 逐行读取数据
    for row in csv_reader:
        # row 是一个列表
        print(f"姓名: {row[0]}, 部门: {row[1]}, 薪资: {row[2]}")

读取为字典(更直观)

import csv
with open('data.csv', mode='r', encoding='utf-8') as file:
    # csv.DictReader 会将每一行数据映射为一个字典,键是表头
    csv_reader = csv.DictReader(file)
    for row in csv_reader:
        # 现在可以通过列名访问数据
        print(f"姓名: {row['Name']}, 部门: {row['Department']}, 薪资: {row['Salary']}")

示例 2:写入 CSV 文件

import csv
# 要写入的数据
data_to_write = [
    {'Name': 'David', 'Department': 'HR', 'Salary': '70000'},
    {'Name': 'Eve', 'Department': 'Engineering', 'Salary': '98000'}
]
# newline='' 用于防止在 Windows 系统上写入时出现空行
with open('output.csv', mode='w', encoding='utf-8', newline='') as file:
    # 定义表头
    fieldnames = ['Name', 'Department', 'Salary']
    # 创建一个 DictWriter 对象
    writer = csv.DictWriter(file, fieldnames=fieldnames)
    # 写入表头
    writer.writeheader()
    # 写入数据
    writer.writerows(data_to_write)
print("CSV 文件已成功写入 output.csv")

处理 Excel 文件

处理 Excel 文件最推荐的库是 pandas,因为它功能强大且代码简洁。pandas 在底层会使用 openpyxlxlrd 来处理 .xlsx 文件。

Python与Excel/CSV文件处理有何技巧?-图2
(图片来源网络,侵删)

安装 pandas

你需要安装 pandas 和它的依赖库。

pip install pandas
pip install openpyxl  # 用于处理 .xlsx 文件

示例 1:读取 Excel 文件

假设有一个名为 employees.xlsx 的文件,包含一个名为 "Sheet1" 的工作表。

import pandas as pd
# 读取 Excel 文件
# sheet_name='Sheet1' 指定要读取的工作表名,如果省略则读取第一个
# header=0 表示第一行是表头
df = pd.read_excel('employees.xlsx', sheet_name='Sheet1', header=0)
# 显示数据的前5行
print("数据预览:")
print(df.head())
# 获取数据的基本信息
print("\n数据信息:")
df.info()
# 获取描述性统计信息
print("\n描述性统计:")
print(df.describe())

示例 2:写入 Excel 文件

import pandas as pd
# 创建一个 DataFrame
data = {
    'Name': ['Frank', 'Grace'],
    'Department': ['Finance', 'IT'],
    'Salary': [75000, 82000]
}
df_to_write = pd.DataFrame(data)
# 写入 Excel 文件
# index=False 表示不将 DataFrame 的索引写入文件
df_to_write.to_excel('new_employees.xlsx', sheet_name='New_Hires', index=False)
print("Excel 文件已成功写入 new_employees.xlsx")

示例 3:处理多个工作表

# 读取包含多个工作表的 Excel 文件
excel_file = 'multi_sheet.xlsx'
# 1. 读取所有工作表,返回一个字典 {sheet_name: DataFrame}
all_sheets = pd.read_excel(excel_file, sheet_name=None)
print(f"工作表列表: {list(all_sheets.keys())}")
# 获取特定的工作表
df_sheet1 = all_sheets['Sheet1']
print("\nSheet1 的内容:")
print(df_sheet1)
# 2. 只读取指定的工作表
df_sheet2 = pd.read_excel(excel_file, sheet_name='Sheet2')
print("\nSheet2 的内容:")
print(df_sheet2)

CSV 与 Excel 之间的转换

pandas 让转换变得非常简单。

CSV 转 Excel

import pandas as pd
# 读取 CSV 文件
df = pd.read_csv('data.csv')
# 写入 Excel 文件
df.to_excel('from_csv.xlsx', sheet_name='Sheet1', index=False)
print("已将 data.csv 转换为 from_csv.xlsx")

Excel 转 CSV

import pandas as pd
# 读取 Excel 文件
df = pd.read_excel('employees.xlsx', sheet_name='Sheet1')
# 写入 CSV 文件
# encoding='utf-8-sig' 可以防止 CSV 文件用 Excel 打开时中文乱码
df.to_csv('from_excel.csv', index=False, encoding='utf-8-sig')
print("已将 employees.xlsx 转换为 from_excel.csv")

总结与推荐

任务 推荐库 优点 缺点
读取 CSV csv (内置) 无需安装,轻量级 功能相对基础,处理大型文件时不如 pandas 方便
写入 CSV csv (内置) 无需安装,轻量级 功能相对基础
读取 Excel pandas 代码简洁,功能强大(数据清洗、分析等),自动处理表头 需要安装额外库
写入 Excel pandas 代码简洁,可轻松控制格式(需配合 openpyxl 需要安装额外库
复杂 Excel 操作 openpyxl 可以精确控制单元格样式、图表、公式等 API 比 pandas 更底层,代码量稍多
快速转换 pandas 一行代码即可完成 CSV 和 Excel 的互转 需要安装额外库

给你的建议:

Python与Excel/CSV文件处理有何技巧?-图3
(图片来源网络,侵删)
  • 如果只是简单的读写 CSV 文件,使用 Python 内置的 csv 模块就足够了。
  • 如果涉及到数据分析、数据清洗,或者需要频繁在 CSV 和 Excel 之间转换,强烈推荐使用 pandas,它是数据科学领域的必备工具。
  • 如果需要对 Excel 文件进行极其精细的操作,比如修改单元格颜色、字体、插入图片等,可以考虑直接使用 openpyxl 库。

希望这份详细的指南能帮助你处理 Python 中的 Excel 和 CSV 文件!

分享:
扫描分享到社交APP
上一篇
下一篇