數據分析利器pandas初步學習(四)

數據分析利器pandas初步學習(四)

來自專欄 我的python學習之路

在進入猴子社群前,自己就已經開始初步學習pandas了,這次跟著猴子老師的課程再來梳理一遍。自己用的書是《利用python進行數據分析》,這本書是2014年第一次出版,跟現在比,有些代碼改進了,自己在學的的時候受到過不少的困擾。現在直接開始吧。

導入庫和定義兩個一維數組:

創建一個series,可以傳入元組,列表,array數組和字典,傳入字典時,他的鍵為series的索引。

查詢元素:

要說明的一點是,在老師的課程中有一點小錯誤

不自定義索引的情況下,一維數組(包括series)的切片選取跟列表的切片是一樣的,右末端不包含。

自定義索引的情況,是末端都是包含。

一維數組跟列表的區別

1.一維數組可以方便的實現一些統計功能。

2.一維數組可以實現向量化運算。

關於series的構造

傳入字典也是可以的,不過因為字典不是有序的,所以series的索引就不是固定的。

series元素的選取

針對series一維數組來說,可以用以上的的簡便方法來選取,因為只有一列,所以默認是axis為0。但是盡量推薦老師的規範方法,這樣別人一看就能準確的明白。

series之間的向量運算

兩個series

series2*series2

從上面可以知道,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重新索引:

沒有drop參數時

6、異常值處理

查看下數據:

銷售數量不可能存在負的,所以我們用條件判斷來刪除異常值。

對比一下可以看到異常值已經刪除掉了。

第四、構建模型

1、月均消費次數

有一個前提,一個人在同一天的消費視作一次消費,所以我們要去掉重複項:

5343為有效的消費次數。

然後計算數據集裡面有多少個自然月。

先排序:

再計算時間跨度:

跨度為199天,enddate和startdate必須是datetime格式才能相減。

轉換為月份數:

最後求月均消費次數:

2.月均消費金額:

這裡跟老師算的不一樣,先放著吧。

3、客單價

因為有點基礎所以這次課程完成的比較快,最大的收穫就是了解了數據清洗的方法,數據清洗是數據分析中可以說是最難最磨練人的一個內容。以後會繼續換其他的數據源來進行分析,提高自己的能力。


推薦閱讀:

(學習筆記)利用python進行數據分析(二):一些範例數據集
20180226上周文章更新匯總
簡單數據處理與分析
小白爬蟲,數據分析艱辛之路
皇帝與太子,不,前太子

TAG:Python | 數據分析 |