標籤:

這樣做,你也會數據分析

一直認為數據分析是神秘高大的一項工作,心裡對從事這種工作的人充滿了崇拜之情,總幻想自己也能成為其中一員,牛逼哄哄的讓大家仰視。今天要寫的就是跟著老師的套路也能做數據分析啦~,當然是要用到Python編程的哦。

數據分析的幾個步驟是必須要牢記於心滴。以後分析一項指標,做項目前,先捋下這幾個步驟就錯不了。

數據分析的基本步驟

提出問題就是,要明確自己的目的,是為了解決什麼問題,需要得出什麼樣的指標,等等。本案例以一家藥店的銷售流水明細為數據源,想要知道「月均消費次數,月均消費金額,客單價等指標。

第一步,數據的導入。需要把原始數據源,這裡是excel表格,導入到jupyter notebook中。讀取excel數據的前提是,python中安裝了pandas和xlrd這兩個包。具體代碼如不清楚可以自行百度。讀取數據之後,利用一些常用的代碼,head()、shape、dtypes查看數據是否讀入正確。

第二步,數據的清洗。需要注意的是數據的清洗是需要反覆多次完成的,並不是一次就可以的。這要根據我們最初的問題進行的。數據清洗的一般步驟如下:,一共多少行多少列,數據類型特徵。這樣可以更好的理解數據。

(1) 選擇子集的方法:一般loc方法:pandas中數據框的切片功能

下面是我選擇的前5行,購葯時間到銷售數量這兩個之間的列。

subSalesDf=salesDf.loc[0:4,購葯時間:銷售數量]

(2)列名重命名的方法:數據框的rename方法

一般先定義一個舊列名和新列名對應關係的字典,然後用數據框的rename方法。

下面是我將「購葯時間」這列重命名為「銷售時間」

colNameDict={購葯時間:銷售時間}salesDf.rename(columns=colNameDict,inplace=True) #參數inplace為True表示重命名在原始數據框上,為False表示,原始數據框不變,會有一個新的命名後的數據框產生

(3)缺失數據處理方法:dropna方法

#刪除列(銷售時間,社保卡號)中為空的行#how=any在給定的任何一列中有缺失值就刪除salesDf=salesDf.dropna(subset=[銷售時間,社保卡號],how=any)

(4)數據類型轉換方法:

#字元串轉換為數值(浮點數)salesDf[銷售數量]=salesDf[銷售數量].astype(float)salesDf[應收金額]=salesDf[應收金額].astype(float)salesDf[實收金額]=salesDf[實收金額].astype(float)#字元串轉換日期salesDf.loc[:,銷售時間]=pd.to_datetime(salesDf.loc[:,銷售時間], format=%Y-%m-%d,errors=coerce)

此處,還有個知識點就是字元串的分割。一般用split方法

#字元串分割testList=2018-06-03 星期五.split( )#傳入的是分割符是空格

(5)數據排序方法:sort_values

#按銷售日期進行升序排列salesDf=salesDf.sort_values(by=銷售時間,ascending=True)

注釋:by:表示按哪幾列排序,ascending=True,表示升序排列,ascending=False,表示降序排列

(6)異常值處理方法:根據數據框的複雜查詢功能:條件判斷

#刪除異常值,通過條件判斷篩選出數據#查詢條件querySer=salesDf.loc[:,銷售數量]>0#應用查詢條件print(刪除異常值前:,salesDf.shape)salesDf=salesDf.loc[querySer,:]print(刪除異常值後:,salesDf.shape)

第三步,就是構建模型。

首先,我們需要月均消費次數這個指標,月均消費次數=總消費次數/月份數,總消費次數是同一天內,同一個人發生的所有消費次數要算作一次消費,所以,這裡要對銷售時間和社保卡號這兩列相同的要算作一條數據,要刪除重複項。

刪除重複項的方法:drop_duplicate

kpi1_Df=salesDf.drop_duplicates(subset=[銷售時間,社保卡號])

然後,統計行數。就是總消費次數了

totalI=kpi1_Df.shape[0]

月份數獲取方法:先把銷售時間這列升序排,獲取時間範圍,除以30就可以了。

#月份數獲取方法,先排序,獲取時間範圍,計算月份數

kpi1_Df=kpi1_Df.sort_values(by=銷售時間,ascending=True)

#重命名行名(index)

kpi1_Df=kpi1_Df.reset_index(drop=True)

#獲取時間範圍

#最小時間值

startTime=kpi1_Df.loc[0,銷售時間]

#最大時間值

endTime=kpi1_Df.loc[totalI-1,銷售時間]

#計算月份數

#天數

daysI=(endTime-startTime).daysmonthsI=daysI//30 #//運算符表示取整除

月均消費次數=總消費次數/月份數,月均消費金額=總消費金額/月份數,客單價=總消費金額/總消費次數

經過前面對數據的清洗處理,就可以完成相應指標的計算了。數據可視化會在以後的教程中學習,所以這裡就不提及了。

上面的步驟,可以算作一個比較簡單標準的數據分析流程了。也非常期待以後的學習~~


推薦閱讀:

為什麼要學大數據
如何評價三菱數據造假醜聞事件?
Python LEVEL4:數據分析標準步驟
沒有比腳更長的路,沒有比人更高的山
學習數據分析要給自己訂一個計劃

TAG:數據分析 |