數據分析利器pandas初步學習(四)
來自專欄 我的python學習之路
在進入猴子社群前,自己就已經開始初步學習pandas了,這次跟著猴子老師的課程再來梳理一遍。自己用的書是《利用python進行數據分析》,這本書是2014年第一次出版,跟現在比,有些代碼改進了,自己在學的的時候受到過不少的困擾。現在直接開始吧。
導入庫和定義兩個一維數組:
創建一個series,可以傳入元組,列表,array數組和字典,傳入字典時,他的鍵為series的索引。
查詢元素:
要說明的一點是,在老師的課程中有一點小錯誤。
在不自定義索引的情況下,一維數組(包括series)的切片選取跟列表的切片是一樣的,右末端不包含。
自定義索引的情況,是末端都是包含。
一維數組跟列表的區別:
1.一維數組可以方便的實現一些統計功能。
2.一維數組可以實現向量化運算。
關於series的構造:
傳入字典也是可以的,不過因為字典不是有序的,所以series的索引就不是固定的。
series元素的選取:
針對series一維數組來說,可以用以上的的簡便方法來選取,因為只有一列,所以默認是axis為0。但是盡量推薦老師的規範方法,這樣別人一看就能準確的明白。
series之間的向量運算:
從上面可以知道,series之間的運算是索引對齊後再配對計算的。不存在相同的索引運算就會產生NaN值。我們可以用fill_value方法來填充NaN值。
這裡有兩個注意的地方:
1.要使用fill_value方法必須使用算數方法,不能用算術運算了。
2.這裡的填充值是配對的時候,如果對方沒有這個索引,就給他創建這個索引並填充值,再計算。
二位數據框dataframe的定義:
dataframe_test = pd.DataFrame()
其中參數可以傳入:
1.二維ndarray
2.由數組,列表,元組,series和字典組成的字典
3.字典或者series組成的列表
4.另一個dataframe
dataframe元素的選取:
1.列與行的簡單選取方法
2.行與列萬能的選法
loc方法的參數中,逗號的左邊表示行,右邊表示列,可以用元組,列表,切片的方法來選取,某一行,某一列或者某行某列的那個值。不推薦用iloc方法,不是很方便。
3.通過條件判斷來選取。
dataframe數據集描述統計信息:
describe方法:
我們發現一個問題,社保卡號和商品編碼被當成一個數值,按照常理來說他們當成一個文本更方便使用。我一開始在原execl表中將這兩列設置成文本,但是讀取進來後發現還是沒變化。後來查閱百度發現,使用python的pandas模塊在讀取本地文件時,它會自動猜測欄位的類型並轉換為對應的格式。我們可以顯式地指定列的類型。
通過astype方法:
現在就老師的數據分析的基本過程來實踐一下。
第一、提出問題
四個問題。1、月均消費次數2、月均消費金額3、客單價4、消費趨勢
第二、理解數據
上面已完成,大概知道整個數據集都有哪些信息。
第三、數據清洗
數據清洗的步驟:1、選擇子集2、列名重命名3、缺失值處理4、數據類型轉換5、數據排序6、異常值處理。
1、選擇子集
整個數據都是我們需要的,所以全部選下來
2、列名重命名
我們把購葯時間改成銷售時間
rename的colunms傳入一個字典做參數,鍵為原來的列名,值為新的列名,可以同時修改多個列。
3、缺失值處理
將銷售時間和社保卡號兩列裡面的缺失值都丟掉:
how=any的意思就是只要有某一列存在缺失值,這一行就丟掉。
4、數據類型轉換
查看一下所有列的數據類型
因為我讀取的方式跟老師的不一樣,所以後面三項數據類型就不需要修改了。
將銷售時間改為datetime類型
賦值:我們獲得的列表datelist轉換為series賦值給dataframe1
此時銷售時間的類型還str,現在對其進行轉換:
這時已經好了,format表示的是時間的格式,有好多種,選擇跟你str格式的時間類似的格式就可以啦。errors參數是表示如果時間格式不符合format的格式就為NaT(not a time)。
5、數據排序
按銷售時間進行排序:
將index重新索引:
6、異常值處理
查看下數據:
銷售數量不可能存在負的,所以我們用條件判斷來刪除異常值。
對比一下可以看到異常值已經刪除掉了。
第四、構建模型
1、月均消費次數
有一個前提,一個人在同一天的消費視作一次消費,所以我們要去掉重複項:
5343為有效的消費次數。
然後計算數據集裡面有多少個自然月。
先排序:
再計算時間跨度:
跨度為199天,enddate和startdate必須是datetime格式才能相減。
轉換為月份數:
最後求月均消費次數:
2.月均消費金額:
這裡跟老師算的不一樣,先放著吧。
3、客單價
因為有點基礎所以這次課程完成的比較快,最大的收穫就是了解了數據清洗的方法,數據清洗是數據分析中可以說是最難最磨練人的一個內容。以後會繼續換其他的數據源來進行分析,提高自己的能力。
推薦閱讀:
※(學習筆記)利用python進行數據分析(二):一些範例數據集
※20180226上周文章更新匯總
※簡單數據處理與分析
※小白爬蟲,數據分析艱辛之路
※皇帝與太子,不,前太子