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