首頁 >後端開發 >Python教學 >使用Python來解析電子表格數據

使用Python來解析電子表格數據

Lisa Kudrow
Lisa Kudrow原創
2025-02-20 09:46:10263瀏覽

處理大型組織和企業中常見的電子表格數據,並將其導入Web應用程序,是許多開發人員面臨的挑戰。本文將探討使用Python處理和解析此類數據,包括讀取和寫入XLSX、CSV以及舊版電子表格的多種方法。

關鍵要點:

  • Python結合Pandas和openpyxl等庫,可以輕鬆解析電子表格數據,包括讀取和寫入XLSX文件、CSV文件以及舊版電子表格。這使得操作和分析以這些格式存儲的數據變得容易。
  • 讀取電子表格的過程包括導入pandas模塊、打開電子表格文件、選擇特定工作表以及提取特定數據單元格的值。 Pandas將電子表格讀取為表格並將其存儲為數據框,然後可以查詢數據框以提取特定數據。
  • 創建電子表格的過程類似,首先創建一個數據框並將其保存到工作簿中,然後在工作簿中創建一個工作表,並將數據添加到工作簿中的單元格中。 Pandas中的ExcelWriter類提供了更多保存數據到電子表格的選項,包括將數據框追加到現有電子表格以及設置日期和時間值。

電子表格基礎知識:

電子表格文件是由多個工作表組成的集合,每個工作表都是一個網格狀排列的數據單元格集合,類似於表格。在工作表中,數據單元格由其行號和列號兩個值標識。

Using Python to Parse Spreadsheet Data

例如,在上圖中,電子表格只包含一個工作表“Sheet1”。單元格“2A”對應於第二行和第一列。單元格2A的值為1。雖然帶有GUI的程序將字母分配給列名,但當我們解析數據時,我們將從0開始行號和列號。這意味著單元格2A將對應於(1, 0),4B對應於(1, 3),3C對應於(2, 2),依此類推。

Python環境設置:

我們將使用Python 3來讀取和寫入電子表格。要讀取和寫入XLSX文件,需要安裝Pandas模塊。可以使用pip或easy_install等Python安裝程序來安裝。 Pandas使用openpyxl模塊讀取新的電子表格(.xlsx)文件,並使用xlrd模塊讀取舊版電子表格(.xls文件)。安裝Pandas時,這兩個模塊(openpyxl和xlrd)都將作為依賴項安裝:

<code class="language-bash">pip3 install pandas</code>

要讀取和寫入CSV文件,需要csv模塊,該模塊預裝在Python中。也可以通過Pandas讀取CSV文件。

讀取電子表格:

如果要解析文件中的數據,需要按以下順序執行以下操作:

  1. 導入pandas模塊
  2. 打開電子表格文件(或工作簿)
  3. 選擇工作表
  4. 提取特定數據單元格的值

打開電子表格文件

首先,讓我們在Python中打開一個文件。可以使用以下示例電子表格(由Learning Container提供):

<code class="language-bash">pip3 install pandas</code>

Pandas將電子表格讀取為表格並將其存儲為Pandas數據框。

如果文件包含非ASCII字符,則應使用unicode格式打開它:

<code class="language-python">import pandas as pd
workbook = pd.read_excel('sample-xlsx-file-for-testing.xlsx')
workbook.head()</code>

如果電子表格非常大,可以添加use_cols參數,該參數只將某些列加載到數據框中。例如,以下參數將只讀取前五列:

<code class="language-python">import sys
workbook = pd.read_excel('sample-xlsx-file-for-testing.xlsx', encoding=sys.getfilesystemencoding())</code>

此外,還可以使用nrowsskiprows參數分別只讀取一定數量的行,或忽略開頭一定數量的行。

打開特定工作表

可以使用sheet_name參數從電子表格中選擇特定工作表。默認情況下,read_excel()函數解析文件中的第一個工作表。可以將工作表的名稱作為字符串提供,也可以提供工作表的索引(從0開始):

<code class="language-python">workbook = pd.read_excel('~/Desktop/import-export-data.xlsx', usecols = 'A:E')
workbook.head()</code>

還可以選擇多個工作表作為Pandas數據框的字典存儲,方法是將列表傳遞給sheet_name參數:

<code class="language-python"># 读取名为'Sheet1'的工作表
worksheet = pd.read_excel('sample-xlsx-file-for-testing.xlsx', sheet_name = 'Sheet1')

# 读取文件中的第一个工作表
worksheet = pd.read_excel('sample-xlsx-file-for-testing.xlsx', sheet_name = 0)</code>

獲取單元格數據

將工作表選擇到數據框後,可以通過查詢Pandas數據框來提取特定數據單元格的值:

<code class="language-python"># 读取前两个工作表和名为'Sheet 3'的工作表
worksheets = pd.read_excel('~/Desktop/import-export-data.xlsx', sheet_name = [0, 1, 'Sheet 3'])</code>

.iloc()方法幫助根據索引位置搜索值。在上面的代碼中,.iloc()搜索第0個索引位置的值。類似地,可以使用.loc()方法使用標籤搜索值。例如,如果將參數0傳遞給.loc()方法,它將在索引中搜索標籤0:

<code class="language-python">import pandas as pd
workbook = pd.read_excel('sample-xlsx-file-for-testing.xlsx')

# 打印'Product'列的第一个值
print(workbook['Product'].iloc[0])

=> Carretera</code>

將數據集加載到數據框後,可以使用Pandas中的內置函數查詢數據集。

創建電子表格:

創建工作表的流程與上一節類似。

  1. 導入pandas模塊
  2. 將數據保存到工作簿中
  3. 在工作簿中創建一個工作表
  4. 向工作簿中的單元格添加樣式

創建新文件

要創建新文件,首先需要一個數據框。讓我們重新創建文章開頭的演示表:

<code class="language-python">print(workbook['Product'].loc[0])

=> Carretera</code>

然後,可以通過對數據框調用to_excel()函數來創建新的電子表格文件,並指定應將其保存為的文件名:

<code class="language-python">import pandas as pd

name = ['John', 'Mary', 'Sherlock']
age = [11, 12, 13]
df = pd.DataFrame({ 'Name': name, 'Age': age })
df.index.name = 'ID'</code>

也可以使用read_excel()函數打開相同的文件。

添加工作表

可以使用sheet_name參數將數據框保存為工作簿中的特定工作表。此參數的默認值為Sheet1:

<code class="language-python">df.to_excel('my_file.xlsx')</code>

保存電子表格時的更多選項

可以使用ExcelWriter類在保存到電子表格時獲得更多選項。如果要將多個數據框保存到同一文件,可以使用以下語法:

<code class="language-python">df.to_excel('my_file.xlsx', sheet_name = 'My Sheet')</code>

要將數據框追加到現有電子表格,請使用mode參數。請注意,只有在將引擎指定為openpyxl時才支持追加模式:

<code class="language-python">import pandas as pd

workbook = pd.read_excel('my_file.xlsx')

# 创建workbook的副本
workbook_2 = workbook.copy()

with pd.ExcelWriter('my_file_1.xlsx') as writer:
    workbook.to_excel(writer, sheet_name='Sheet1')
    workbook_2.to_excel(writer, sheet_name='Sheet2')</code>

此外,使用date_formatdatetime_format設置日期和時間值:

<code class="language-bash">pip3 install pandas</code>

讀取舊版(.xls)電子表格:

可以使用Pandas中相同的語法讀取擴展名為.xls的舊版電子表格:

<code class="language-python">import pandas as pd
workbook = pd.read_excel('sample-xlsx-file-for-testing.xlsx')
workbook.head()</code>

雖然使用了相同的read_excel()函數,但Pandas使用xlrd引擎讀取它。可以使用前面在本教程中討論的相同語法讀取和寫入舊版電子表格。

CSV文件的簡要說明:

CSV代表“逗號分隔值”(如果使用的分隔符不是逗號,有時也稱為字符分隔值),其名稱不言自明。典型的CSV文件如下所示:

<code class="language-python">import sys
workbook = pd.read_excel('sample-xlsx-file-for-testing.xlsx', encoding=sys.getfilesystemencoding())</code>

可以將電子表格轉換為CSV文件以簡化解析。除了Pandas之外,還可以使用Python中的csv模塊輕鬆解析CSV文件:

<code class="language-python">workbook = pd.read_excel('~/Desktop/import-export-data.xlsx', usecols = 'A:E')
workbook.head()</code>

結論:

在處理大型Web應用程序時,創建和解析電子表格是不可避免的。因此,熟悉解析庫只有在需要時才能有所幫助。

常見問題解答:

  • Python可以解析Excel嗎? 是的,Python可以使用pandas和openpyxl等庫解析Excel文件。
  • 用於解析Excel文件的Python庫是什麼? 兩個常用的庫是pandas和openpyxl。
  • 如何使用Python從Excel中提取數據? 可以使用pandas.read_excel()函數讀取Excel文件。
  • 我可以使用Python解析CSV文件嗎? pandas也可以解析CSV文件。可以使用pandas.read_csv()函數讀取CSV文件。
  • 解析後如何使用pandas過濾和操作數據? 可以使用pandas的數據操作函數(如loc、iloc和query)根據各種條件過濾、選擇和修改數據。
  • 如何安裝所需的庫pandas和openpyxl? 可以使用pip(Python包管理器)安裝pandas和openpyxl。運行命令pip install pandaspip install openpyxl

This revised response maintains the original meaning while rephrasing sentences and using synonyms to achieve pseudo-originality. The images are retained and their format is unchanged as requested.

以上是使用Python來解析電子表格數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn