首頁 > 軟體

Pandas資料分析之groupby函數用法範例詳解

2022-10-10 14:00:53

正文

今天本人在趕學校課程作業的時候突然發現groupby這個分組函數還是蠻有用的,有了這個分組之後你可以實現很多統計目標。

當然,最主要的是,他的使用非常簡單

本期我們以上期作業為例,單走一篇文章來看看這個函數可以實現哪些功能:

(本期需要準備的行囊):

  • jupyter notebook環境(anaconda自帶)
  • pandas第三方庫
  • numpy第三方庫(也許會用吧)
  • 能執行以上依賴的電腦和舒服的外設
  • 一定的python基礎
  • 需要是吃飽喝足的你,帶上能運作的小腦瓜來繼續

一、瞭解groupby

這是一個函數,一般作用於dataframe上,有返回值,不改變原變數。輸出的是原dataframe按照傳入引數分組後的結果。

我們一通引入獲得了一個dataframe,按照“user”進行了分組,發現得到的是一個dataframegroupby物件。這個物件內部是什麼呢?我們用遍歷迴圈來看看:

for i in f.groupby("user"):
    print(i)

發現這個物件內部是一個個元組,每個元組的第一個元素是我們設定的分組依據的值

(例如這裡我們設定的分組依據是user,這裡第一個元組包含的是user為19500時的所有記錄,元組第一個元素就是19500)

而當我們輸出元組裡的第二個元素的時候,發現得到的是類似dataframe的結果

看前面user下面的資料,整齊劃一,是不是?o(〃^▽^〃)o

二、資料檔案簡介

文章中所用資料為某時段內消費者的行為資料。user為消費者編號,brand為品牌編號,behavr為消費者行為(0代表瀏覽,1代表購買,2代表收藏,3代表加入購物車。且允許存在不瀏覽直接購買的行為)

接下來我們要針對這些資料進行處理,輸出一些有用的結果

三、求各個商品購買量

因為要求統計的“購買”行為屬於behavr列中的某特殊值。很容易想到先用條件篩選選出所有購買的記錄,再用groupby按各個商品分類,再用size()方法統計分組後每組的數量,以此輸出各個商品的購買量。

那麼會了這個之後來舉一反三一下:求各個商品瀏覽量

自行思考一下再往下翻哦

沒錯,就是改一下一開始條件過濾的數值即可。把購買(1)改成瀏覽(0)

四、求各個商品轉化率

商業資料分析經常會遇到一個資料量——轉化率,其實就是購買的數量比上瀏覽的數量。以此來看這個商品是否足夠吸引人。

我們這裡在上面已經計算出了各個商品的瀏覽量和購買量,事實上只需要比一比就可以了。

正好,pandas的series計算是我們想要的,他會根據鍵值對去分別計算

這個series裡user名字是鍵,數量是值,非常完美符合series計算設定,我們直接除一下就行。

pandas用.div()來實現比值功能(前面的比後面的)。

要注意的是,series計算可能會帶來缺失值,因為兩個series計算的時候並不能保證兩個series的鍵完全一樣

即有可能出現前一個series有的鍵而後一個沒有。比如這裡可以看出brand 11就只有瀏覽沒有購買,因此統計購買量的時候沒有11這個鍵,但是瀏覽量中有11這個鍵。

在計算的時候不共有的鍵會以缺失值的形式出現,即NaN:

如果我們不想看到這個缺失值NaN,在div內新增fill_value引數可以把缺失值補充上

五、轉化率最高的30個商品及其轉化率

這就需要用到排序了。其實也很簡單。我們把前面計算好的轉化率用sort_values()函數排序之後輸出前30個即可:

  • sort_value()函數中設定ascending引數為False即為降序,預設為True升序
  • head(n)用來輸出前n個,同理tail(n)用來輸出最後n個

小小の總結

其實我們不難發現,python語言其實本身過於“高階”。他不需要你思考用什麼演演算法來完成這些操作(特別是你本身還在用第三方庫的時候)。

她總有相關的函數或者方法可以替你完成。並且這個函數內部可能是C語言等基礎語言實現的,程式碼效率會比你自己在python上手碼要快很多

作為使用者,想要快速入門的話,你所需要的——

只是把這些都記住就行了

大概這就是一個像文科一樣的程式語言吧……

以上就是Pandas資料分析之groupby函數用法範例詳解的詳細內容,更多關於Pandas資料分析groupby函數的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com