.net excel循环插数据_Python实战: 如何将数据从一个Excel文件移动到另一个?
使用Python中的Pandas庫,我們可以從源Excel文件中獲取數據并將其插入到新的Excel文件中,然后命名并保存該文件。當您需要深入到特定數據和/或重新格式化報表的數據時,這很有用。 作為一個長期的VBA開發人員,發現Python的許多處理Excel文件和數據的庫和工具已經相當改變了我們的生活。下面是一個基于vbi的工程實例,它可以用一個實際的代碼替換下面的代碼。 在這篇文章中,我不會討論如何下載和安裝Python或Pandas庫。您可以很容易地在其他地方找到更好的文檔。本例使用python3。 |
Python實戰: 如何將數據從一個Excel文件移動到另一個?
www.arkai.net
用例
我們有一個Excel工作簿,包含了28家商店2019年的銷售報告。文件中有6個不同的工作表,所有工作表都與不同的產品ID相關。每個工作表都是同一個模板,其中包含28個存儲區中每個存儲區的行名稱和日歷年每個月的列標題。
目標是從源文件中的每個工作表中提取每個商店的銷售數據,并將數據放入新Excel文件中的三列:產品ID、門店ID和銷售額(我們將指定一個月)。
步驟1-導入Pandas庫
我將打開Visual Studio代碼并創建一個新文件。我會把文件保存為'獲取銷售數據.py'并在頂部鍵入'import pandas as pd'。
我在這個解決方案中使用的Pandas庫有幾個非常有用的特性。DataFrame對象用于數據操作,ExcelFile類用于將表格Excel表解析為DataFrame對象。Pandas提供了這些工具和其他工具,用于在內存數據結構和幾種不同格式(除了excel,如CSV、文本文件,甚至SQL數據庫)之間讀寫數據。
第2步-設置變量
下一步是創建三個變量。“電子表格文件”變量設置為源文件工作簿。“worksheet_file”變量將是源文件中的工作表,并將“appended_data”作為空數組。
第3步-循環查看數據源Excel文件中的所有工作表
使用“for”循環,我將從源數據文件中的每個工作表中獲取所需的數據。這種方法是完全可伸縮的,這意味著無論文件(同一模板)中有多少張工作表,也不管您添加、刪除或更改工作表名稱的頻率如何,此腳本都將始終檢查每個工作表。
我使用'sheet_name'作為工作簿中每個工作表的變量。在我保存對文件的更改后,我通過將變量“sheet_name”打印到終端來測試它。在集成終端中的VS代碼(在文件所在的目錄路徑獲取銷售數據.py,我鍵入'pythongetSalesDate.py'保存更改并按Enter鍵后。請注意,每個標簽名稱在我們的月刊店_銷售.xlsx文件打印到終端。
步驟3.1-設置month列以從中提取銷售數據
既然我已經設置了循環遍歷工作簿中的每個工作表,我將獲得我想要的確切數據。這首先從每個工作表獲取所有數據并將其傳遞到數據幀。我將使用'df'作為數據幀的變量名。
此時,我還將把一個month變量設置為要獲取數據的月份(表頭)。我會調出8月份的數據。
步驟3.2-從源Excel文件獲取初始數據幀
現在我將使用pandas.read_excel方法。我需要傳遞給方法的三個參數-源文件名、工作表名和列標題行。我將使用值2作為標題行,因為工作表中的標題行是Excel第3行,Pandas識別的行值是從零開始的索引(這意味著Excel中的第1行將是header=0值)。
步驟3.3-將我的初始數據幀打印到終端進行檢查
如果我想看看數據幀在其當前狀態下是什么樣子的,我可以用“print(df)”將其打印到我的終端。我真的會打“print”(df.header(5) “)”以將結果限制為每張工作表的前5行。注意Pandas默認情況下會在最左邊添加一個索引列。
注意,dataframe包含表中的每一列,而那些不在store sales表之外的單元格將“NaN”顯示為值。我將清理這些數據,只提取我需要的特定數據,并刪除所有不需要或不需要的無關數據。
步驟3.4-將數據幀限制為“Store ID”和“August”列
接下來我要做的是添加一行代碼,將數據幀中的數據限制為“Store ID”和“August”列。注意腳本下方集成終端中“print(df)”的結果。
步驟3.5-過濾數據幀的行,只查找'August'列中大于$3000的值
下一步是將行限制為僅銷售值大于3000美元的行。我可以用數據幀。何處方法來執行此操作。
步驟3.6-從數據幀中刪除具有“NaN”值的行
注意,在候機樓,我們現在有一排“NaN”。我們可以用dataframe.dropna()功能。一旦我這樣做,保存文件,并再次運行它,我可以看到一個更干凈的數據幀在終端。
步驟3.7-創建一個“產品標識”列并將其添加到數據幀中
接下來的兩行代碼將基于源工作簿文件中的每個工作表選項卡名在數據幀中創建一個“產品標識”列。然后,我將設置dataframes的最終列順序,將我的新“Product ID”列作為第一列。當我再次運行腳本時,我看到數據幀的3列被打印到終端。
步驟3.8-將每個數據幀添加到數組
下一步是將每個dataframe作為元素添加到“appended_data”數組中。因為通過“for”循環的每次迭代都會創建一個新的數據幀,所以我可以使用append(df)方法將源工作簿中每個工作表中的每個連續數據幀追加到現有數組“appended_data”。
步驟4-將附加的_數據數組中的所有數據幀連接到單個數據幀中
既然'for'循環已經將所有工作表中的數據拉到它們自己的數據幀中,這些數據幀已經添加到“appended_data”數組中,我需要將它們合并到一個數據幀中。我會用pandas.concat()實現這一目標的功能。
我將保存文件并再次運行它,將“附加的數據”打印到終端。結果證實,我現在有一個單獨的數據幀,每個'Product ID'部分沒有重復的標題行。
步驟5-將數據幀導出到新的Excel文件
現在唯一要做的就是將現有的數據幀導出到一個新的Excel文件中。使用pandas.dataframe.to_ excel()函數,我將文件路徑和文件名作為參數傳遞給函數。在第二個參數中,我輸入'index=False',這樣索引列就不會導出到新的電子表格文件中。
第6步-運行完成的腳本并打開新文件
我將保存新的更改,運行腳本,并檢查新創建文件的輸出文件路徑。
當我打開文件時,我將看到三列:“Product ID”、“Store ID”和“八月”,其中只有在“August”列中包含值大于3000的行。
在不到20行代碼中,您可以自動化一個甚至不需要打開Excel應用程序的過程,更不用說打開源數據文件了。此外,它還可以擴展到源文件中有多少工作表,并且腳本運行大約需要2-3秒。
您甚至可以使用Tkinter庫開發桌面UI,通過從用戶輸入中傳遞列選擇、文件路徑和名稱等參數,使腳本更加動態。但那是另一天的另一篇文章。
獲取GitHub上的完整腳本代碼:https://github.com/toddbrannon/get_excel_data/blob/master/getExcelData.py
往期推薦
全球人工智能戰略分析報告
2020年度最佳人工智能,機器學習工作站
巨頭觀察 I 蘋果與谷歌之間的10大重要區別...
點擊上方藍字關注我們!
總結
以上是生活随笔為你收集整理的.net excel循环插数据_Python实战: 如何将数据从一个Excel文件移动到另一个?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手机3gb和4gb有什么区别(手机大全手
- 下一篇: fun是什么意思 python中def_