Python XlsxWriter – 与Pandas一起工作
Pandas是一个流行的Python库,用于数据操作和分析。我们可以使用XlsWriter将 Pandas数据帧 写入Excel工作表中。
为了学习本节描述的功能,我们需要在安装 XlsxWriter 的同一环境中安装 Pandas 库。
pip3 install pandas
在Pandas中使用XlsxWriter
让我们从一个简单的例子开始。首先,从整数列表的数据中创建一个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数据框架添加图表
就像我们获得一个工作簿类的对象,然后通过调用其 add_worksheet() 方法获得一个工作表对象一样,写作者对象也可以用来获取这些对象。一旦我们得到这些对象,就可以使用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()
例子
下面的代码使用Pandas数据框架来编写一个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()
输出
柱状图与数据一起显示如下
将数据框架写入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 = 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单元格之后。