Pandas數(shù)據(jù)分析之groupby函數(shù)用法實(shí)例詳解
正文
今天本人在趕學(xué)校課程作業(yè)的時(shí)候突然發(fā)現(xiàn)groupby這個(gè)分組函數(shù)還是蠻有用的,有了這個(gè)分組之后你可以實(shí)現(xiàn)很多統(tǒng)計(jì)目標(biāo)。
當(dāng)然,最主要的是,他的使用非常簡單
本期我們以上期作業(yè)為例,單走一篇文章來看看這個(gè)函數(shù)可以實(shí)現(xiàn)哪些功能:
(本期需要準(zhǔn)備的行囊):
- jupyter notebook環(huán)境(anaconda自帶)
- pandas第三方庫
- numpy第三方庫(也許會(huì)用吧)
- 能運(yùn)行以上依賴的電腦和舒服的外設(shè)
- 一定的python基礎(chǔ)
- 需要是吃飽喝足的你,帶上能運(yùn)作的小腦瓜來繼續(xù)
一、了解groupby
這是一個(gè)函數(shù),一般作用于dataframe上,有返回值,不改變原變量。輸出的是原dataframe按照傳入?yún)?shù)分組后的結(jié)果。
我們一通引入獲得了一個(gè)dataframe,按照“user”進(jìn)行了分組,發(fā)現(xiàn)得到的是一個(gè)dataframegroupby對象。這個(gè)對象內(nèi)部是什么呢?我們用遍歷循環(huán)來看看:
for i in f.groupby("user"): print(i)
發(fā)現(xiàn)這個(gè)對象內(nèi)部是一個(gè)個(gè)元組,每個(gè)元組的第一個(gè)元素是我們設(shè)定的分組依據(jù)的值
(例如這里我們設(shè)定的分組依據(jù)是user,這里第一個(gè)元組包含的是user為19500時(shí)的所有記錄,元組第一個(gè)元素就是19500)
而當(dāng)我們輸出元組里的第二個(gè)元素的時(shí)候,發(fā)現(xiàn)得到的是類似dataframe的結(jié)果
看前面user下面的數(shù)據(jù),整齊劃一,是不是?o(〃^▽^〃)o
二、數(shù)據(jù)文件簡介
文章中所用數(shù)據(jù)為某時(shí)段內(nèi)消費(fèi)者的行為數(shù)據(jù)。user為消費(fèi)者編號,brand為品牌編號,behavr為消費(fèi)者行為(0代表瀏覽,1代表購買,2代表收藏,3代表加入購物車。且允許存在不瀏覽直接購買的行為)
接下來我們要針對這些數(shù)據(jù)進(jìn)行處理,輸出一些有用的結(jié)果
三、求各個(gè)商品購買量
因?yàn)橐蠼y(tǒng)計(jì)的“購買”行為屬于behavr列中的某特殊值。很容易想到先用條件篩選選出所有購買的記錄,再用groupby按各個(gè)商品分類,再用size()方法統(tǒng)計(jì)分組后每組的數(shù)量,以此輸出各個(gè)商品的購買量。
那么會(huì)了這個(gè)之后來舉一反三一下:求各個(gè)商品瀏覽量
自行思考一下再往下翻哦
沒錯(cuò),就是改一下一開始條件過濾的數(shù)值即可。把購買(1)改成瀏覽(0)
四、求各個(gè)商品轉(zhuǎn)化率
商業(yè)數(shù)據(jù)分析經(jīng)常會(huì)遇到一個(gè)數(shù)據(jù)量——轉(zhuǎn)化率,其實(shí)就是購買的數(shù)量比上瀏覽的數(shù)量。以此來看這個(gè)商品是否足夠吸引人。
我們這里在上面已經(jīng)計(jì)算出了各個(gè)商品的瀏覽量和購買量,事實(shí)上只需要比一比就可以了。
正好,pandas的series計(jì)算是我們想要的,他會(huì)根據(jù)鍵值對去分別計(jì)算
這個(gè)series里user名字是鍵,數(shù)量是值,非常完美符合series計(jì)算設(shè)定,我們直接除一下就行。
pandas用.div()
來實(shí)現(xiàn)比值功能(前面的比后面的)。
要注意的是,series計(jì)算可能會(huì)帶來缺失值,因?yàn)閮蓚€(gè)series計(jì)算的時(shí)候并不能保證兩個(gè)series的鍵完全一樣
即有可能出現(xiàn)前一個(gè)series有的鍵而后一個(gè)沒有。比如這里可以看出brand 11就只有瀏覽沒有購買,因此統(tǒng)計(jì)購買量的時(shí)候沒有11這個(gè)鍵,但是瀏覽量中有11這個(gè)鍵。
在計(jì)算的時(shí)候不共有的鍵會(huì)以缺失值的形式出現(xiàn),即NaN:
如果我們不想看到這個(gè)缺失值NaN,在div內(nèi)添加fill_value參數(shù)可以把缺失值補(bǔ)充上
五、轉(zhuǎn)化率最高的30個(gè)商品及其轉(zhuǎn)化率
這就需要用到排序了。其實(shí)也很簡單。我們把前面計(jì)算好的轉(zhuǎn)化率用sort_values()
函數(shù)排序之后輸出前30個(gè)即可:
- sort_value()函數(shù)中設(shè)置ascending參數(shù)為False即為降序,默認(rèn)為True升序
- head(n)用來輸出前n個(gè),同理tail(n)用來輸出最后n個(gè)
小小の總結(jié)
其實(shí)我們不難發(fā)現(xiàn),python語言其實(shí)本身過于“高級”。他不需要你思考用什么算法來完成這些操作(特別是你本身還在用第三方庫的時(shí)候)。
她總有相關(guān)的函數(shù)或者方法可以替你完成。并且這個(gè)函數(shù)內(nèi)部可能是C語言等基礎(chǔ)語言實(shí)現(xiàn)的,代碼效率會(huì)比你自己在python上手碼要快很多
作為使用者,想要快速入門的話,你所需要的——
只是把這些都記住就行了
大概這就是一個(gè)像文科一樣的編程語言吧……
以上就是Pandas數(shù)據(jù)分析之groupby函數(shù)用法實(shí)例詳解的詳細(xì)內(nèi)容,更多關(guān)于Pandas數(shù)據(jù)分析groupby函數(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!
- pandas groupby()的使用小結(jié)
- Pandas實(shí)現(xiàn)groupby分組統(tǒng)計(jì)方法實(shí)例
- pandas中g(shù)roupby操作實(shí)現(xiàn)
- pandas中df.groupby()方法深入講解
- pandas?groupby?用法實(shí)例詳解
- pandas中pd.groupby()的用法詳解
- 詳解Pandas中GroupBy對象的使用
- Pandas實(shí)現(xiàn)groupby分組統(tǒng)計(jì)的實(shí)踐
- Pandas中GroupBy具體用法詳解
- Pandas分組函數(shù)groupby的用法詳解
相關(guān)文章
python實(shí)現(xiàn)word文檔批量轉(zhuǎn)成自定義格式的excel文檔的思路及實(shí)例代碼
這篇文章主要介紹了python實(shí)現(xiàn)word文檔批量轉(zhuǎn)成自定義格式的excel文檔的解決思路及實(shí)例代碼,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-0215款Python編輯器的優(yōu)缺點(diǎn),別再問我“選什么編輯器”啦
這篇文章主要介紹了15款Python編輯器的優(yōu)缺點(diǎn),別再問我“選什么編輯器”啦,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2020-10-10Python實(shí)現(xiàn)簡易信息分類存儲(chǔ)軟件
這篇文章主要介紹的是通過Python制作一個(gè)簡易的文件分類存儲(chǔ)文件,可以實(shí)現(xiàn)信息的增刪改查以及內(nèi)容的導(dǎo)出和回復(fù),文中的示例代碼對我們的學(xué)習(xí)有一定的價(jià)值,感興趣的同學(xué)可以了解一下2021-12-12python爬取企查查企業(yè)信息之selenium自動(dòng)模擬登錄企查查
這篇文章主要介紹了python爬取企查查企業(yè)信息之自動(dòng)模擬登錄企查查以及selenium獲取headers,selenium獲取cookie,需要的朋友可以參考下2021-04-04