处理 Excel 数据时选择熊猫而不是 xlsxwriter

lob*_*obi 2 pandas xlsxwriter

既然 Pandas 使用了 xlsxwriter 模块,那么既然可以直接使用 xlsxwriter 模块,为什么还要使用 Pandas 呢?

也许一个更直接的问题是,在处理 excel 数据时,为什么要考虑用 Pandas 替换 xlsxwriter?

我对这个问题的目标是帮助人们决定在处理 Excel 数据时是使用 xlsxwriter 还是 Pandas。

Cod*_*ent 5

一个字:方便。在处理数据时,从/向 Excel 电子表格读取和写入是一项非常常见的任务。例如,以下是如何从xlsxwriter教程创建一个非常简单的 Excel 文件:

import xlsxwriter

# Create a workbook and add a worksheet.
workbook = xlsxwriter.Workbook('Expenses01.xlsx')
worksheet = workbook.add_worksheet()

# Some data we want to write to the worksheet.
expenses = (
    ['Rent', 1000],
    ['Gas',   100],
    ['Food',  300],
    ['Gym',    50],
)

# Start from the first cell. Rows and columns are zero indexed.
row = 0
col = 0

# Iterate over the data and write it out row by row.
for item, cost in (expenses):
    worksheet.write(row, col,     item)
    worksheet.write(row, col + 1, cost)
    row += 1

# Write a total using a formula.
worksheet.write(row, 0, 'Total')
worksheet.write(row, 1, '=SUM(B1:B4)')

workbook.close()
Run Code Online (Sandbox Code Playgroud)

将其与熊猫进行比较:

import pandas as pd

df = pd.DataFrame({
    'Amount': [1000, 100, 300, 50]
}, index=['Rent', 'Gas', 'Food', 'Gym'])
df.loc['Total', 'Amount'] = df['Amount'].sum()

df.to_excel('Expenses01.xlsx', index=False)
Run Code Online (Sandbox Code Playgroud)

当然,它们并不完全相等。xlsxwriter为总和创建一个公式,但是您必须编写的样板代码量是巨大的。df.to_excel是一个将数据帧转储到 Excel 的简单命令。您几乎无法控制生成的文件,但根据您的要求,您甚至可能不需要它。

它们是为两个完全不同的目的而设计的两个库。pandas 提供了一个集成xlsxwriter并不意味着你应该一直选择一个而不是另一个。使用df.to_excel时,你需要方便,xlsxwriter当你想要很好的控制。

  • *您必须编写的样板代码数量巨大。* 公平地说,该代码取自教程,因此过于冗长。:-) 如果目标是简洁的话,您可以用 5 行代码编写数据。除此之外,我同意这些库是为不同的目的而设计的,选择取决于手头的任务。 (6认同)