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

處理大型組織和企業中常見的電子表格數據,並將其導入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)都將作為依賴項安裝:

pip3 install pandas

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

讀取電子表格:

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

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

打開電子表格文件

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

pip3 install pandas

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

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

import pandas as pd
workbook = pd.read_excel('sample-xlsx-file-for-testing.xlsx')
workbook.head()

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

import sys
workbook = pd.read_excel('sample-xlsx-file-for-testing.xlsx', encoding=sys.getfilesystemencoding())

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

打開特定工作表

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

workbook = pd.read_excel('~/Desktop/import-export-data.xlsx', usecols = 'A:E')
workbook.head()

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

# 读取名为'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)

獲取單元格數據

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

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

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

import pandas as pd
workbook = pd.read_excel('sample-xlsx-file-for-testing.xlsx')

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

=> Carretera

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

創建電子表格:

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

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

創建新文件

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

print(workbook['Product'].loc[0])

=> Carretera

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

import pandas as pd

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

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

添加工作表

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

df.to_excel('my_file.xlsx')

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

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

df.to_excel('my_file.xlsx', sheet_name = 'My Sheet')

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

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

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

pip3 install pandas

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

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

import pandas as pd
workbook = pd.read_excel('sample-xlsx-file-for-testing.xlsx')
workbook.head()

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

CSV文件的簡要說明:

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

import sys
workbook = pd.read_excel('sample-xlsx-file-for-testing.xlsx', encoding=sys.getfilesystemencoding())

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

workbook = pd.read_excel('~/Desktop/import-export-data.xlsx', usecols = 'A:E')
workbook.head()

結論:

在處理大型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
您如何切成python列表?您如何切成python列表?May 02, 2025 am 12:14 AM

SlicingaPythonlistisdoneusingthesyntaxlist[start:stop:step].Here'showitworks:1)Startistheindexofthefirstelementtoinclude.2)Stopistheindexofthefirstelementtoexclude.3)Stepistheincrementbetweenelements.It'susefulforextractingportionsoflistsandcanuseneg

在Numpy陣列上可以執行哪些常見操作?在Numpy陣列上可以執行哪些常見操作?May 02, 2025 am 12:09 AM

numpyallowsforvariousoperationsonArrays:1)basicarithmeticlikeaddition,減法,乘法和division; 2)evationAperationssuchasmatrixmultiplication; 3)element-wiseOperations wiseOperationswithOutexpliitloops; 4)

Python的數據分析中如何使用陣列?Python的數據分析中如何使用陣列?May 02, 2025 am 12:09 AM

Arresinpython,尤其是Throughnumpyandpandas,weessentialFordataAnalysis,offeringSpeedAndeffied.1)NumpyArseNable efflaysenable efficefliceHandlingAtaSetSetSetSetSetSetSetSetSetSetSetsetSetSetSetSetsopplexoperationslikemovingaverages.2)

列表的內存足跡與python數組的內存足跡相比如何?列表的內存足跡與python數組的內存足跡相比如何?May 02, 2025 am 12:08 AM

列表sandnumpyArraysInpythonHavedIfferentMemoryfootprints:listSaremoreFlexibleButlessMemory-效率,而alenumpyArraySareSareOptimizedFornumericalData.1)listsStorReereReereReereReereFerenceStoObjects,with withOverHeadeBheadaroundAroundaround64byty64-bitsysysysysysysysysyssyssyssyssysssyssys2)

部署可執行的Python腳本時,如何處理特定環境的配置?部署可執行的Python腳本時,如何處理特定環境的配置?May 02, 2025 am 12:07 AM

toensurepythonscriptsbehavecorrectlyacrycrosdevelvermations,分期和生產,USETHESTERTATE:1)Environment varriablesForsimplesettings,2)configurationfilesfilesForcomPlexSetups,3)dynamiCofforComplexSetups,dynamiqualloadingForaptaptibality.eachmethodoffersuniquebeneiquebeneqeniquebenefitsandrefitsandrequiresandrequiresandrequiresca

您如何切成python陣列?您如何切成python陣列?May 01, 2025 am 12:18 AM

Python列表切片的基本語法是list[start:stop:step]。 1.start是包含的第一個元素索引,2.stop是排除的第一個元素索引,3.step決定元素之間的步長。切片不僅用於提取數據,還可以修改和反轉列表。

在什麼情況下,列表的表現比數組表現更好?在什麼情況下,列表的表現比數組表現更好?May 01, 2025 am 12:06 AM

ListSoutPerformarRaysin:1)DynamicsizicsizingandFrequentInsertions/刪除,2)儲存的二聚體和3)MemoryFeliceFiceForceforseforsparsedata,butmayhaveslightperformancecostsinclentoperations。

如何將Python數組轉換為Python列表?如何將Python數組轉換為Python列表?May 01, 2025 am 12:05 AM

toConvertapythonarraytoalist,usEthelist()constructororageneratorexpression.1)intimpthearraymoduleandcreateanArray.2)USELIST(ARR)或[XFORXINARR] to ConconverTittoalist,請考慮performorefformanceandmemoryfformanceandmemoryfformienceforlargedAtasetset。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。