Python資料分析之groupby語法糖

是羅羅攀啊發表於2017-05-15

對於dataframe的groupby聚合函式來說,我們適當瞭解下語法糖,會對資料分析起到事半功倍的效果。

對分組進行迭代

首先看下各欄位的型別

import numpy as np
import pandas as pd
import pymysql
conn = pymysql.connect(host=`localhost`, user=`root`, passwd=`123456`, db=`test`, port=3306, charset=`utf8`)
jianshu = pd.read_sql(`select * from jianshu1`,conn)
jianshu.dtypes
img_9d16aab1177c77445d1d1d1ca6d95c9a.png

可以看出,view這些欄位是整數型別的資料,但這裡是object資料,所以我們需要進行資料型別的修改,以view為例。

jianshu[`view`] = jianshu[`view`].astype(`int64`)
jianshu.dtypes
img_a44c1dd31ee6bc7346075f4153af42d7.png

把user列作為索引。

jianshu.set_index(`user`,inplace=True)
jianshu
3629157-c65836200fae921d.jpg

通過分組後的資料型別為groupby物件,可進行迭代。

jianshu.groupby(jianshu.index)
img_e8f1485ab9123c9d1807ed4948ef4b43.png
for name,group in jianshu.groupby(jianshu.index):
    print(name,group)
3629157-c974e9ea8c9802bf.jpg

語法糖一:選取一個或多個列

jianshu.groupby(jianshu.index)[[`view`]].sum()
img_b9307388a684a263812a33a70482c8d1.png

語法糖二:資料聚合
通過aggregate或者agg方法

jianshu.groupby(jianshu.index)[[`view`]].agg([`mean`,`sum`])
3629157-c9a3589246b2c747.jpg


相關文章