當前位置:
首頁 > 最新 > Python商務辦公——python+pandas高效實現Excel文件合併與分析

Python商務辦公——python+pandas高效實現Excel文件合併與分析

寫在前面

新的一周又開始了,各位準備好迎接接下來的機械化流程了嗎?上期文章中,小編和大家講述了怎麼使用R語言去繪製熱地圖,其中重點使用了maptools包和ggplot2包,大致了解了使用R語言繪製中國人口分布熱地圖的大致流程。當然那篇文章只是對於ggplot2包的初次展示,後續的文章中,小編會進一步講解這一筆者至今所接觸到的最神級的繪圖包。本期文章中,小編自然要轉到Python方面的主題,本期將主要講解怎麼使用Python和pandas庫去實現多個Excel表格文件的合併與添加,以及怎麼使用Python去實現Excel表格文件的有效選取。這篇文章將是筆者先前文章的繼續,當然後續筆者會繼續推出此類文章。現在就正式進入正題!

第一講:Excel文件的合併

相信常常使用Excel文件的朋友都有過這樣的經歷,同類型的多份Excel工作簿或者多個Excel工作表需要合併在一起,遇到這種問題,我們一般都會習慣採用三步:其一,新建一個工作表,然後不斷地複製目標工作表中的各種數據,然後粘貼到工作表中;其二,使用vlookup函數將目標數據表中的列合併到新的工作表中;其三,對新建成的數據表進行數據清洗與清潔(說到底就是將調整列的數據格式、調整數據表中的NAN值)。是不是熟悉的味道呀,如果你經常遇到這種問題,然後你每次都要重複上面的操作步驟,那我想你最終會衍生出兩種心態:第一,你完全習慣了這種操作方式,並且已經不願意去改變了;第二,你想採用更加高效的方式,去改變這種機械化的操作了。那麼,小編在這裡就要告訴你,本文正是要解決你這一困惑的。

當然這種高效的方式不止一種,如果你對Excel中VBA比較熟悉的話,那麼你完全可以使用VBA函數實現這一過程,不過我再想,即使你會VBA,估計你也不願意使用這種方法去實現多個Excel文件的合併,因為使用這種VBA函數的話,真的很痛苦,小編正是被這種VBA方法折磨的一群人。所以這裡小編要向各位朋友介紹的是如何使用Python以及pandas庫去實現這種Excel文件的合併、清洗與分析。在進行這些之前,請確保你的pandas庫的版本要高於0.15,可以使用以下命令進行檢查。

如果你的版本沒有達到要求,你只需要重新安裝一下pandas庫或者升級一下pandas庫即可,筆者這裡告訴你如何去進行python中庫的升級。

你在後面的操作中,所需要的就僅僅是一個Python環境外加一個達到版本要求(一般來說,如果你是最近才進行anaconda的話,你的版本絕對是達到要求的)的pandas庫。為了讓大家更加熟悉這種操作流程,筆者這裡提供一些Excel表格供大家實踐之用,大家請自行下載:

一月銷售數據

二月銷售數據

三月銷售數據

客戶等級數據

下載好了之後請將其存放在同一個文件夾中。這裡聲明一下,這些數據都是一些過期數據,也是小編以前用來實驗的一些數據,這些數據純屬實踐學習之中,任何基於此種數據使用不當造成的損失可不要找小編呀。下面開始進行實踐!

這些命令都是前期準備工作(這裡需要說明的一點這些操作都是在juyter notebook中進行的,所以請確保你是在在其中實踐),然後在命令紅中輸入一下命令,檢查文件夾中的文件。

因為你已經定位到了你下載文件的文件夾,所以裡面只有四個Excel文件,正如上面所顯示的那樣。然而很多時候你的文件夾中可能存在多份文件,你只想找出文件名開頭是以sales字元串開始的excel文件,那麼此時你就需要採用以下命令:

雖然使用命令可以查看文件夾中文件,但是這個命令存在一個劣勢,即它只是顯示了文件,而沒有把文件合理地組織在一起,從而使得對於文件的循環操作存在一定的困難,正是因為這個缺陷,所以python中存在一個更加高效的文件操作庫,這個歌庫是python自帶的,所以不需要額外安裝,下面嘗試一下這個庫。

現在我相信你應該明白了這個庫的優勢了吧,它的返回結果是一個列表,這對於循環操作文件提供了極大地便利。既然我們已經準備好了文件以及相關的操作庫,那麼下面就開始合併文件吧。不過在這之前,我們先簡單地了解一些三個sales文件(這裡聲明一下,這並不是必須的,筆者只是想通過這樣做讓你們確認最後合併的成功),你完全可以直接打開Excel文件進行查看,當然筆者這裡採用pandas進行。

前三行代碼讀入了三個月的銷售數據,最後一行代碼統計出這三份Excel表格共有384行記錄,請記住這個數字,在等下我們合併文件之後用來確定是否進行了正確合併。下面我們正式開始合併三份銷售數據表。

代碼中的第一行,小編先建立了一個空的數據框sales_all以便存放三份文件中的數據(我希望各位也能學會這種習慣,最好不要直接修改原文件);後面三行編寫了一個循環體去依次將三份文件中數據存入sales_all中。注意到小編這裡使用的這個合併命令,當然你也可以使用,下面我們來統計一下合併後的文件的記錄數:

看來我們正確地合併了文件,輸出的元組中的第一個數字代表行數,第二個數字代表列數,所以我們合併後的數據集共有384行七列(注意在Excel文件中是385行,因為Excel文件將標題行也作為一行,但是python默認是不將行統計進行數的),這裡可以看一下合併後的數據的前幾行。

excel合併後的數據表

雖然不是必須的,但是對於最後一列我們最好還是將其轉換為日期格式,這在python中很容易實現,直接輸入一下命令即可:

輸出效果表和上面一樣,這裡不再展示,只是將原來格式改變成了日期類型。

上面主要講述了怎樣將多個Excel文件合併成一個Excel文件,但是在現實中,我們可能更多的時候需要去根據原數據表中的某列值去相應地擴充原數據表的特徵列,這在Excel中主要通過vlookup函數進行實現,下面我們將剛剛建成的sales_all數據表中增加一列等級列,以展示每一個客戶的等級。等級數據已經在上文的下載出給出了,這裡我們將其讀入進來,並稍稍地看一些相關的數據特徵。

可以看出客戶的等級主要分成了金銀銅三等,既然擁有了這一等級數據,下面就是要將其與sales_all數據進行連接,從而將sales_all數據表中的客戶進行等級劃分。

擴充列後的數據表

這樣你便將等級數據表和原數據表合併在了一起,恭喜你完成了一個階段性的成果。至此,小編完成了對Excel文件的行合併以及列擴充的相關介紹。在完成數據合併之後,你接著需要進行的是對於數據的清洗,從而獲得整潔的數據以便進行分析。

第二講:pandas完成數據清洗

上面雖然完成了對於數據表的合併連接,但是現實中因為數據的質量問題,往往會存在著數據記錄重複、數據缺失以及異常值的情況。因為異常值的定義各有不同,通常的標準是三西格瑪標準,所以這裡不對其進行介紹,有需要的朋友可以留言給我。這裡主要講述重複值的剔除以及缺失數據的處理。

所謂重複值就是這那些行記錄完全一致的數據,對這些數據,從數據角度看來,它們是無效數據,因此是必須要從數據集中進行剔除的,通過運行一下命令便可以將這些數據進行剔除。

這樣便剔除了數據表中的重複值,因為本數據集並不存在重複值,所以這裡這條命令實際上並沒有剔除任何值,命令中的參數是指對原數據進行修改,而不是生成重新生成一個數據表副本。當然你也可以根據數據表中的某幾列重複來剔除數據,這隻需要你在上面的函數中增加一個參數即可,見下面:

這條命令會會剔除數據表中account number,name以及sku完全相同的記錄,但是這裡千萬不要運行這條命令,小編這裡只是舉一個例子,如果你真的運行了這條命令,那麼你就失去了很多有效的數據,所以可千萬不要刪除了!!!

完成了重複值處理,下面接著進行缺失值的處理吧,我們現在命令行中運行以下命令:

可以看出在客戶的等級一列中存在著一些缺失值nan,這些值的存在在很多時候會嚴重地影響分析,所以任何數據分析之前都需要對這些缺失值進行妥善處理,因為這裡的缺失值主要存在於等級列,而我們知道一般對於客戶的分類中,如果你沒有等級也就是最低等級,所以這裡可以將這些缺失的等級全部定位青銅級,使用以下命令即可完成。

現在你的等級一列不再存在缺失值了,但是另外一個問題又再一次引起了主要,即等級列的數據類型竟然是,這與我們的認知存在一定偏差,對於這種具有明確等級的數據,一般我們都是將其定義為類別格式,所以下面運行以下命令將其改正過來。

第一條命令將等級列設置為了類別格式,而第二條命令則將這種類別予以了等級排序,其中,這與我們的觀念相符。接著運行一下以下命令去查看一下數據表中的各列是否都具有的合適的數據格式。

OK!截止到這裡已經完成了對於數據表的初步清洗,下面開始對這些相對整潔的數據進行數據分析,從而去發現一些有趣的現象。

第三講:pandas與數據分析

數據分析,這個是一個比較綜合的分析體系,如果指望這篇文章講述清楚,那是完全不可能的,這裡只是稍稍地講解幾點,後續文章中會進一步進行完善。上文對列完成了分類,那麼如果你想知道等級下的人員分布情況,只需一條命令便可進行解決:

現在如果你想統計每種等級客戶的成交量、單位價格以及總價的均值情況,那麼你也僅僅只需要一條命令即可:

當然你不會滿足與只了解均值,你可能還想了解總額以及標準差等,那麼不好意思,我還是一條語句:

匯總數據

是不是很方便,在Excel中可能需要你做蠻久的工作,在python中,最多也就是這麼一條語句就可以了,對於數據分析的更多內容,這裡就不再進行講述了,詳情見後續文章。

後記

本期文章寫到這裡就告一段落了,通過本期文章,了解到了python+pandas如何去快速有效地對Excel文件進行合併、清洗與分析,當然這裡的介紹只是冰山一角,更多內容留待後續。下一期文章中,筆者將對matplotib庫繪圖進行初步介紹,讓大家再一次震撼於python的能力,敬請期待!最後,再一次感謝你們的支持,你們的支持是小編不斷前行的動力。

PS:數據文件的下載請到小編的個人博客,微信在這方面真的很不方便呀


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

Python實現地理信息可視化
小白如何入門Python?這四個方法你要知道

TAG:Python |