Python XlsxWriter - 與Pandas一起使用



Pandas 是一個流行的 Python 庫,用於資料處理和分析。我們可以使用 XlsxWriter 將Pandas 資料幀寫入 Excel 工作表。

要學習本節中描述的功能,我們需要在已安裝XlsxWriter的同一環境中安裝Pandas庫。

pip3 install pandas

使用 XlsxWriter 與 Pandas

讓我們從一個簡單的例子開始。首先,從整數列表中的資料建立一個 Pandas 資料幀。然後使用 XlsxWriter 作為引擎來建立 Pandas Excel 寫入器。藉助此引擎物件,我們可以將資料幀物件寫入 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 DataFrame

向 Pandas 資料幀新增圖表

正如我們獲得 Workbook 類物件,然後透過呼叫其add_worksheet()方法獲得 Worksheet 物件一樣,寫入器物件也可以用於獲取這些物件。一旦我們得到它們,就可以使用 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

工作簿和工作表物件是從寫入器建立的。

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()

輸出

下面顯示了包含資料的柱狀圖:

Column Chart

將資料幀寫入 Excel 表格

類似地,資料幀可以寫入 Excel 表格物件。此處的dataframe源於一個Python字典,其中鍵是dataframe列標題。每個鍵都有一個列表作為值,該列表又成為每一列的值。

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 單元格及其之後。

AutoFilter
廣告