日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

.net excel循环插数据_Python实战: 如何将数据从一个Excel文件移动到另一个?

發(fā)布時(shí)間:2023/12/15 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .net excel循环插数据_Python实战: 如何将数据从一个Excel文件移动到另一个? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

使用Python中的Pandas庫(kù),我們可以從源Excel文件中獲取數(shù)據(jù)并將其插入到新的Excel文件中,然后命名并保存該文件。當(dāng)您需要深入到特定數(shù)據(jù)和/或重新格式化報(bào)表的數(shù)據(jù)時(shí),這很有用。

作為一個(gè)長(zhǎng)期的VBA開(kāi)發(fā)人員,發(fā)現(xiàn)Python的許多處理Excel文件和數(shù)據(jù)的庫(kù)和工具已經(jīng)相當(dāng)改變了我們的生活。下面是一個(gè)基于vbi的工程實(shí)例,它可以用一個(gè)實(shí)際的代碼替換下面的代碼。

在這篇文章中,我不會(huì)討論如何下載和安裝Python或Pandas庫(kù)。您可以很容易地在其他地方找到更好的文檔。本例使用python3。

Python實(shí)戰(zhàn): 如何將數(shù)據(jù)從一個(gè)Excel文件移動(dòng)到另一個(gè)?

www.arkai.net

用例

我們有一個(gè)Excel工作簿,包含了28家商店2019年的銷(xiāo)售報(bào)告。文件中有6個(gè)不同的工作表,所有工作表都與不同的產(chǎn)品ID相關(guān)。每個(gè)工作表都是同一個(gè)模板,其中包含28個(gè)存儲(chǔ)區(qū)中每個(gè)存儲(chǔ)區(qū)的行名稱(chēng)和日歷年每個(gè)月的列標(biāo)題。

目標(biāo)是從源文件中的每個(gè)工作表中提取每個(gè)商店的銷(xiāo)售數(shù)據(jù),并將數(shù)據(jù)放入新Excel文件中的三列:產(chǎn)品ID、門(mén)店ID和銷(xiāo)售額(我們將指定一個(gè)月)。

步驟1-導(dǎo)入Pandas庫(kù)

我將打開(kāi)Visual Studio代碼并創(chuàng)建一個(gè)新文件。我會(huì)把文件保存為'獲取銷(xiāo)售數(shù)據(jù).py'并在頂部鍵入'import pandas as pd'。

我在這個(gè)解決方案中使用的Pandas庫(kù)有幾個(gè)非常有用的特性。DataFrame對(duì)象用于數(shù)據(jù)操作,ExcelFile類(lèi)用于將表格Excel表解析為DataFrame對(duì)象。Pandas提供了這些工具和其他工具,用于在內(nèi)存數(shù)據(jù)結(jié)構(gòu)和幾種不同格式(除了excel,如CSV、文本文件,甚至SQL數(shù)據(jù)庫(kù))之間讀寫(xiě)數(shù)據(jù)。

第2步-設(shè)置變量

下一步是創(chuàng)建三個(gè)變量。“電子表格文件”變量設(shè)置為源文件工作簿。“worksheet_file”變量將是源文件中的工作表,并將“appended_data”作為空數(shù)組。

第3步-循環(huán)查看數(shù)據(jù)源Excel文件中的所有工作表

使用“for”循環(huán),我將從源數(shù)據(jù)文件中的每個(gè)工作表中獲取所需的數(shù)據(jù)。這種方法是完全可伸縮的,這意味著無(wú)論文件(同一模板)中有多少?gòu)埞ぷ鞅?#xff0c;也不管您添加、刪除或更改工作表名稱(chēng)的頻率如何,此腳本都將始終檢查每個(gè)工作表。

我使用'sheet_name'作為工作簿中每個(gè)工作表的變量。在我保存對(duì)文件的更改后,我通過(guò)將變量“sheet_name”打印到終端來(lái)測(cè)試它。在集成終端中的VS代碼(在文件所在的目錄路徑獲取銷(xiāo)售數(shù)據(jù).py,我鍵入'pythongetSalesDate.py'保存更改并按Enter鍵后。請(qǐng)注意,每個(gè)標(biāo)簽名稱(chēng)在我們的月刊店_銷(xiāo)售.xlsx文件打印到終端。

步驟3.1-設(shè)置month列以從中提取銷(xiāo)售數(shù)據(jù)

既然我已經(jīng)設(shè)置了循環(huán)遍歷工作簿中的每個(gè)工作表,我將獲得我想要的確切數(shù)據(jù)。這首先從每個(gè)工作表獲取所有數(shù)據(jù)并將其傳遞到數(shù)據(jù)幀。我將使用'df'作為數(shù)據(jù)幀的變量名。

此時(shí),我還將把一個(gè)month變量設(shè)置為要獲取數(shù)據(jù)的月份(表頭)。我會(huì)調(diào)出8月份的數(shù)據(jù)。

步驟3.2-從源Excel文件獲取初始數(shù)據(jù)幀

現(xiàn)在我將使用pandas.read_excel方法。我需要傳遞給方法的三個(gè)參數(shù)-源文件名、工作表名和列標(biāo)題行。我將使用值2作為標(biāo)題行,因?yàn)楣ぷ鞅碇械臉?biāo)題行是Excel第3行,Pandas識(shí)別的行值是從零開(kāi)始的索引(這意味著Excel中的第1行將是header=0值)。

步驟3.3-將我的初始數(shù)據(jù)幀打印到終端進(jìn)行檢查

如果我想看看數(shù)據(jù)幀在其當(dāng)前狀態(tài)下是什么樣子的,我可以用“print(df)”將其打印到我的終端。我真的會(huì)打“print”(df.header(5) “)”以將結(jié)果限制為每張工作表的前5行。注意Pandas默認(rèn)情況下會(huì)在最左邊添加一個(gè)索引列。

注意,dataframe包含表中的每一列,而那些不在store sales表之外的單元格將“NaN”顯示為值。我將清理這些數(shù)據(jù),只提取我需要的特定數(shù)據(jù),并刪除所有不需要或不需要的無(wú)關(guān)數(shù)據(jù)。

步驟3.4-將數(shù)據(jù)幀限制為“Store ID”和“August”列

接下來(lái)我要做的是添加一行代碼,將數(shù)據(jù)幀中的數(shù)據(jù)限制為“Store ID”和“August”列。注意腳本下方集成終端中“print(df)”的結(jié)果。

步驟3.5-過(guò)濾數(shù)據(jù)幀的行,只查找'August'列中大于$3000的值

下一步是將行限制為僅銷(xiāo)售值大于3000美元的行。我可以用數(shù)據(jù)幀。何處方法來(lái)執(zhí)行此操作。

步驟3.6-從數(shù)據(jù)幀中刪除具有“NaN”值的行

注意,在候機(jī)樓,我們現(xiàn)在有一排“NaN”。我們可以用dataframe.dropna()功能。一旦我這樣做,保存文件,并再次運(yùn)行它,我可以看到一個(gè)更干凈的數(shù)據(jù)幀在終端。

步驟3.7-創(chuàng)建一個(gè)“產(chǎn)品標(biāo)識(shí)”列并將其添加到數(shù)據(jù)幀中

接下來(lái)的兩行代碼將基于源工作簿文件中的每個(gè)工作表選項(xiàng)卡名在數(shù)據(jù)幀中創(chuàng)建一個(gè)“產(chǎn)品標(biāo)識(shí)”列。然后,我將設(shè)置dataframes的最終列順序,將我的新“Product ID”列作為第一列。當(dāng)我再次運(yùn)行腳本時(shí),我看到數(shù)據(jù)幀的3列被打印到終端。

步驟3.8-將每個(gè)數(shù)據(jù)幀添加到數(shù)組

下一步是將每個(gè)dataframe作為元素添加到“appended_data”數(shù)組中。因?yàn)橥ㄟ^(guò)“for”循環(huán)的每次迭代都會(huì)創(chuàng)建一個(gè)新的數(shù)據(jù)幀,所以我可以使用append(df)方法將源工作簿中每個(gè)工作表中的每個(gè)連續(xù)數(shù)據(jù)幀追加到現(xiàn)有數(shù)組“appended_data”。

步驟4-將附加的_數(shù)據(jù)數(shù)組中的所有數(shù)據(jù)幀連接到單個(gè)數(shù)據(jù)幀中

既然'for'循環(huán)已經(jīng)將所有工作表中的數(shù)據(jù)拉到它們自己的數(shù)據(jù)幀中,這些數(shù)據(jù)幀已經(jīng)添加到“appended_data”數(shù)組中,我需要將它們合并到一個(gè)數(shù)據(jù)幀中。我會(huì)用pandas.concat()實(shí)現(xiàn)這一目標(biāo)的功能。

我將保存文件并再次運(yùn)行它,將“附加的數(shù)據(jù)”打印到終端。結(jié)果證實(shí),我現(xiàn)在有一個(gè)單獨(dú)的數(shù)據(jù)幀,每個(gè)'Product ID'部分沒(méi)有重復(fù)的標(biāo)題行。

步驟5-將數(shù)據(jù)幀導(dǎo)出到新的Excel文件

現(xiàn)在唯一要做的就是將現(xiàn)有的數(shù)據(jù)幀導(dǎo)出到一個(gè)新的Excel文件中。使用pandas.dataframe.to_ excel()函數(shù),我將文件路徑和文件名作為參數(shù)傳遞給函數(shù)。在第二個(gè)參數(shù)中,我輸入'index=False',這樣索引列就不會(huì)導(dǎo)出到新的電子表格文件中。

第6步-運(yùn)行完成的腳本并打開(kāi)新文件

我將保存新的更改,運(yùn)行腳本,并檢查新創(chuàng)建文件的輸出文件路徑。

當(dāng)我打開(kāi)文件時(shí),我將看到三列:“Product ID”、“Store ID”和“八月”,其中只有在“August”列中包含值大于3000的行。

在不到20行代碼中,您可以自動(dòng)化一個(gè)甚至不需要打開(kāi)Excel應(yīng)用程序的過(guò)程,更不用說(shuō)打開(kāi)源數(shù)據(jù)文件了。此外,它還可以擴(kuò)展到源文件中有多少工作表,并且腳本運(yùn)行大約需要2-3秒。

您甚至可以使用Tkinter庫(kù)開(kāi)發(fā)桌面UI,通過(guò)從用戶輸入中傳遞列選擇、文件路徑和名稱(chēng)等參數(shù),使腳本更加動(dòng)態(tài)。但那是另一天的另一篇文章。

獲取GitHub上的完整腳本代碼:https://github.com/toddbrannon/get_excel_data/blob/master/getExcelData.py

往期推薦

  • 全球人工智能戰(zhàn)略分析報(bào)告

  • 2020年度最佳人工智能,機(jī)器學(xué)習(xí)工作站

  • 巨頭觀察 I 蘋(píng)果與谷歌之間的10大重要區(qū)別...

點(diǎn)擊上方藍(lán)字關(guān)注我們!

總結(jié)

以上是生活随笔為你收集整理的.net excel循环插数据_Python实战: 如何将数据从一个Excel文件移动到另一个?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。