二、groupby函式
三、聚合、過濾和變換
第3章 分組.
經過groupby後會生成乙個groupby物件,該物件本身不會返回任何東西,只有當相應的方法被呼叫才會起作用
grouped_single = df.groupby(
'school'
)# 根據某一列分組
grouped_single.get_group(
's_1'
).head(
)# 取出某乙個組
grouped_mul = df.groupby(
['school'
,'class'])
#根據某幾列分組
grouped_mul.get_group(
('s_2'
,'c_4'))
grouped_single.size(
)# 組容量與組數
grouped_mul.size(
)grouped_single.ngroups
grouped_mul.ngroups
for name,group in grouped_single:
# 組的遍歷
print
(name)
display(group.head())
#level引數(用於多級索引)和axis引數
df.set_index(
['gender'
,'school'])
.groupby(level=
1,axis=0)
.get_group(
's_1'
).head(
)
(a)檢視所有可呼叫的方法
groupby物件可以使用相當多的函式,靈活程度很高.
(b)分組物件的head和first
對分組物件使用head函式,返回的是每個組的前幾行,而不是資料集前幾行.
(c)分組依據
對於groupby函式而言,分組的依據是非常自由的,只要是與資料框長度相同的列表即可,同時支援函式型分組
(d)groupby的操作
可以用選出groupby物件的某個或者某幾個列.
(e)連續型變數分組
例如利用cut函式對數學成績分組.
(a)常用聚合函式
所謂聚合就是把一堆數,變成乙個標量,因此mean/sum/size/count/std/var/sem/describe/first/last/nth/min/max都是聚合函式
(b)同時使用多個聚合函式:
利用元組進行重新命名或指定哪些函式作用哪些列等。
(c)還可以使用自定義函式
(d)利用namedagg函式進行多個聚合
注意:不支援lambda函式,但是可以使用外接的def函式
(e)帶引數的聚合函式
注意:如果需要使用多個函式,並且其中至少有乙個帶引數,則使用wrap技巧
filter函式是用來篩選某些組的(務必記住結果是組的全體),因此傳入的值應當是布林標量
(a)傳入物件:transform函式中傳入的物件是組內的列,並且返回值需要與列長完全一致,
如果返回了標量值,那麼組內的所有元素會被廣播為這個值。
(b)利用變換方法進行組內標準化
(c)利用變換方法進行組內缺失值的均值填充
對於我這樣會一點python程式設計的菜鳥來說,以前只會用的pandas是,import pandas as pd, 然後就是pd.read_csv()……等如此簡單的操作,以前以為pandas是乙個讀取資料的,這一次進入到這麼系統的學習pandas中,發現了它的強大。
ps. 還是先學好基礎吧,感覺這些題目,對於目前的我來說還是有難度的,學習之路,未完待續……
Pandas基礎學習筆記
python data analysis library 或 pandas 是基於numpy 的一種工具,該工具是為了解決資料分析任務而建立的。pandas 納入了大量庫和一些標準的資料模型,提供了高效地操作大型資料集所需的工具。pandas提供了大量能使我們快速便捷地處理資料的函式和方法 impo...
pandas學習筆記(三)
生成乙個以2017 01開始,月為頻率的時間構造器 pd.period 引數 乙個時間戳 freq p pd.period 2017 freq m print p 通過加減整數,將週期整體移動 print p 1 print p 2 輸出 2017 01 2017 02 2016 11 prng p...
pandas學習筆記 三
import pandas as pd import numpy as npdata pd.read csv student.csv data.head 學號姓名 班級年齡 01.0 小明1.0 7.01 2.0小華 1.06.0 23.0 小紅2.0 6.03 4.0小麗 3.08.0 45.0 ...