數據分析之Pandas實戰

這裡主要是通過Pandas的實戰來講述Pandas在數據分析中的應用,推薦Live從零學會數據分析:數據分析的基本過程,推薦書目《利用python進行數據分析》。

這裡主要是對有一份朝陽醫院2018年高血壓藥物的銷售數據,根據上面的銷售記錄,我們需要得到以下三個指標:

月消費次數,也就是總的消費次數除以月份數,往往也是銷售部門重要的指標值一。但要注意,同一天同一個人的消費為一次消費。

月均消費金額,總的消費金額除以月份數,主要作為部門收益的一個指標。

客單價,也就是平均交易金額,即月均消費金額/月消費次數。銷售部門看看是否需要提高客單價來提高收益。

總的來說其實就是銷售部門這段時間銷售的業績如何,收益怎麼樣,以及是否可以通過提高客單價增加收益。

導入數據

首先導入數據包以及銷售數據(Sheet1),數據類型為Object,這裡運用的是Pandas里的pd.ExcelFile的方法將excel格式轉化過來

檢驗數據結果,發現這個數據總共有7列(購葯時間等),6578條數據,如果人為計算,不但會任務量巨大,而且容易出錯,所以利用python進行數據分析。

選擇子集

如果列數太多的情況下可以通過截取片段進行將列表重組(這組銷售數據並不需要,所以僅僅展示一下,截取過程)

列表重命名

這裡我們發現換一個問題就是,購葯時間是醫院方面的說法,而對於銷售人員來說,購葯時間即為銷售時間,所以這裡我們對這列進行重命名。

缺失數據處理

因為數據量比較大,我們不可能一頁一頁翻找數據,對於有缺陷的數據,我們選擇直接刪除,所以這個部分主要就是去除掉一些無效數據。

從數據中可以看出,總共有3條數據是無效數據,所以這份數據還是比較完整的。

數據類型轉化

我們通過觀察發現,銷售數量,應收金額和實收金額為數字部分(整數或者浮點數),而我們之前為了規整統一將數據類型選擇為object,所以這裡要進行數據轉化,使數據變得規整

目前後面3列數據類型已經轉化為浮點數,這邊讓我們看一下轉化之後的效果。

轉化格式前

轉化格式後

數據排序

數據雖然工整了,但數據是亂序的,比如第二行是星期六,而第三行是星期三,這樣不但不利於觀察數據變化,而且也使之後計算指標變得比較困難,所以對數據進行排序,也就是對銷售時間進行排序。

因為對於這組數據來講,本身不需要星期這一項,所以在這個階段直接清理掉,首先定義一個函數,這個函數的目的就是取空格以前的部分。

我們需要確定這部分代碼是否有效,並列出前三行

發現這部分代碼沒有什麼問題,就用新形成的格式替換原有格式

整理時間的格式問題,銷售數據中日期的格式為format,而對不合格的日期格式,將其值轉化為NaT(errors=coerce),這裡運用Pandas里的to_datetime的方法對時間格式進行整理

同時對原有數據進行降序排列(ascending = True為降序排列,ascending = False升序排列)

不難看出這組數據的行數變化比較大(0,3436,1190等),所以要對行數進行重命名。

異常值處理

通過對數據進行一個大致的描述,可以看出這裡的銷售數量有負數,這完全不符合常理,也就說明這裡很明顯有異常值存在,我們需要對這些異常值進行清理。而清理辦法就是取銷售數量為正的數據。

這組銷售數據中,異常的數據為43個,最後我們看一眼數據的大致情況

計算指標

指標1. 月均消費次數:

計算這部分指標需要兩個數據,就是總的消費次數和月數。

總的消費次數,就是同一天同一個人(社保號)為一次消費,剔除掉這部分數據後的的總數據量。我們這裡用到的是pandas里的drop_duplicates方法

總的月份,就是總的天數(截止天數減去起始天數),每個月按30天計算進行整除。因為之前的數據是處理過,它剔除了同一天同一個人的消費記錄所以,這個記錄的量是不準確的,這裡面有效的數據量為6548條

月均消費次數,就是總的消費次數除以總的月份,共1072次

指標2. 月均消費金額:

因為銷售的過程會打折,這也就是會有應收金額和實收金額兩個數據。對於計算銷售的收益,我們以實收金額為準,也就是計算實際收費金額的總和(sum函數)再除以總的月數。

指標3. 客單價:

這個就比較簡單了,就是指標1除以指標2

總結

數據分析的過大致分為五個部分定義問題讀取數據數據清理數據可視化闡述結論。可以說是相輔相成的一個過程。

定義問題,主要是確定目標,以及解決方案,以這組數據分析為例,主要目的實際上想知道這段時間的銷售業績如何。而我們通過對問題的定義,找到計算的方法從而去找尋我們想要的數據。而從長遠的來件,就是要解決什麼樣的問題,就去找尋什麼樣的數據,並了解如何挖掘數據。

數據讀取,這裡其實包含兩部分就是數據的獲取和數據的讀取,而這裡的數據是現成的EXCEL格式。如果要獲取數據主要是專門的網站下載,機構(客戶)和爬蟲的方式獲取。而根據其數據的格式不同進行數據的導入即可。

數據清洗,這部分才是這篇文章的重點。在數據分析中很多數據是雜亂無章的,我們需要對其進行規整,其重點是排序,去除缺失值和去除異常值。可以說相當於整容,不但有益於我們觀察數據,也方便後邊的數據處理。

數據可視化,這部分並沒有在這篇文章里介紹,是因為其可以獨立成為一個章節。如果說數據的價值是人的內在價值的話,那麼數據可視化就是人的面貌和身材。就算你是一個才子,但你長相醜陋也很難獲得佳人芳心。所以數據可視化,主要就是把枯燥,乏味的數據,用簡潔,富有藝術的形式展現出來。所以作為一個大的章節,會再寫一篇文章(立個flag)。

闡述結論,其實也就是一個輸出的過程,將數據可視化的內容講出來,並獲得別人認同的一個過程。前邊幾步主要是準備菜品的過程,而這步就是將菜品端上餐桌,給客人品嘗的一個過程。而這其中很多都跟演講等有關,多多練習。

推薦閱讀:

Python 單元測試
為什麼 Python 不是 lexical scoping?
10行Python代碼的詞雲
Python中實現iterator
為什麼用pycharm在同目錄下import,pycharm會報錯,但是實際可以運行?

TAG:数据分析 | Python |