Python XlsxWriter - 使用 Pandas


Pandas 是一个流行的用于数据操作和分析的 Python 库。我们可以使用 XlsWriter 将Pandas 数据帧写入 Excel 工作表。

要了解本节中描述的功能,我们需要在安装XlsxWriter的同一环境中安装Pandas库。

pip3 install pandas

将 XlsxWriter 与 Pandas 一起使用

让我们从一个简单的例子开始。首先,根据整数列表中的数据创建一个 Pandas 数据框。然后使用XlsxWriter作为引擎创建Pandas Excel writer。借助该引擎对象,我们可以将数据框对象写入 Excel 工作表。

例子

import pandas as pd

df = pd.DataFrame({'Data': [10, 20, 30, 20, 15, 30, 45]})
writer = pd.ExcelWriter('hello.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1')

writer.save()

输出

如此创建的工作表显示如下 -

pandas数据框

将图表添加到 Pandas Dataframe

正如我们通过调用其add_worksheet()方法获取 Workbook 类的对象,然后获取 Worksheet 对象一样,writer 对象也可以用于获取这些对象。一旦我们得到它们,就可以使用XlsxWriter方法来添加图表、数据表等。

在此示例中,我们设置一个 Pandas 数据框并获取其尺寸(或形状)。

import pandas as pd
df = pd.DataFrame({'Data': [105, 60, 35, 90, 15, 30, 75]})
writer = pd.ExcelWriter('hello.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1')
(max_row, max_col) = df.shape

工作簿和工作表对象是由 writer 创建的。

workbook = writer.book
worksheet = writer.sheets['Sheet1']

其余的事情都很容易。正如我们之前所做的那样,添加了图表对象。

chart = workbook.add_chart({'type': 'column'})
chart.add_series({'values': ['Sheet1', 1, 1, max_row, 1]})
worksheet.insert_chart(1, 3, chart)
writer.save()

例子

以下代码使用 Pandas dataframe 编写 Excel 工作簿,并由 XlsxWriter 准备柱形图。

import pandas as pd

df = pd.DataFrame({'Data': [105, 60, 35, 90, 15, 30, 75]})
writer = pd.ExcelWriter('hello.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1')
(max_row, max_col) = df.shape

workbook = writer.book
worksheet = writer.sheets['Sheet1']
chart = workbook.add_chart({'type': 'column'})
chart.add_series({'values': ['Sheet1', 1, 1, max_row, 1]})
worksheet.insert_chart(1, 3, chart)

writer.save()

输出

柱形图以及数据如下所示 -

柱形图

将 Dataframe 写入 Excel 表

同样,数据框可以写入Excel表格对象。这里的数据框源自 Python 字典,其中键是数据框列标题。每个键都有一个列表作为值,该值又成为每列的值。

import pandas as pd

df = pd.DataFrame({
   'Name': ['Namrata','Ravi','Kiran','Karishma'],
   'Percent': [73.33, 70, 75, 65.5],
   'RollNo': [1, 2,3,4]})
   
df = df[['RollNo', 'Name', 'Percent']]
(max_row, max_col) = df.shape

使用 xlsxwriter 引擎将数据帧写入工作表(sheet1)

writer = pd.ExcelWriter('hello.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', startrow=1, header=False, index=False)

以下几行给出了 Workbook 和 Worksheet 对象。

workbook = writer.book
worksheet = writer.sheets['Sheet1']

借助 add_table() 方法,工作表中的数据将转换为表。

column_settings = [{'header': column} for column in df.columns]

worksheet.add_table(0, 0, max_row, max_col - 1, {'columns': column_settings})

writer.save()

例子

以下是将 pandas 数据框写入 Excel 表的完整代码。

import pandas as pd
df = pd.DataFrame({
   'Name': ['Namrata','Ravi','Kiran','Karishma'],
   'Percent': [73.33, 70, 75, 65.5],
   'RollNo': [1, 2,3,4]
})
   
df = df[['RollNo', 'Name', 'Percent']]
(max_row, max_col) = df.shape

writer = pd.ExcelWriter('hello.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', startrow=1, header=False, index=False)

workbook = writer.book
worksheet = writer.sheets['Sheet1']

column_settings = [{'header': column} for column in df.columns]

worksheet.add_table(0, 0, max_row, max_col - 1, {'columns': column_settings})

writer.save()

输出

使用默认自动筛选设置的表出现在 A1 单元格中。

自动筛选