1.1 內涵:
在改過程中,往往會遇到四類問題:
整合(aggregation) —— 即分組計算統計量(如求均值、求每組元素個數)
變換(transformation) —— 即分組對每個單元的資料進行操作(如元素標準化)
過濾(filtration) —— 即按照某些規則篩選出一些組(如選出組內某一指標小於50的組)
綜合問題 —— 即上面三種問題的混合。
ipl_data =
df = pd.dataframe(ipl_data)
#經過groupby後會生成乙個groupby物件,該物件本身不會返回任何東西,只有當相應的方法被呼叫才會起作用
group_year = df.groupby(
'year'
)#對於groupby函式而言,分組的依據是非常自由的,只要是與資料框長度相同的列表即可,同時支援函式型分組
np.random.choice(
['a'
,'b'
,'c'
],df.shape[0]
)df.groupby(np.random.choice(
['a'
,'b'
,'c'
],df.shape[0]
)).get_group(
'a')
#函式型分組
df.groupby(
lambda x:
'奇數行'
if df.index.get_loc(x)%2
==1else
'偶數行'
).get_group(
'奇數行'
)
2.1 索引groups
#索引全部groups,返回dict
group_year.groups
#索引單個group,返回dataframe
group_year.get_group(
2014
)#索引單列
group_year[
'rank'
].mean(
)>
1#遍歷groups
for name,group in group_year:
name
group
2.2 常用方法輸出groups每個組前幾行、統計groups大小
#對分組物件使用head函式,返回的是每個組的前幾行,而不是資料集前幾行
group_year.head(1)
group_year.size(
)#compute count of group, excluding missing values.
group_year.count(
)
3.1 聚合(aggregation)
a)常用聚合函式
所謂聚合就是把一堆數,變成乙個標量,因此mean/sum/size/count/std/var/sem/describe/first/last/nth/min/max都是聚合函式,也可以使用自定義函式
group_m = grouped_single[
'math'
]group_m.std(
).values/np.sqrt(group_m.count(
).values)
== group_m.sem(
).values
array(
[true
,true
])
(b)同時使用多個聚合函式
group_m.agg(
['sum'
,'mean'
,'std'
])
(c)使用自定義函式:
grouped_single[
'math'
].agg(
lambda x:
print
(x.head(),
'間隔'
))
3.2 過濾(filteration)
filter函式是用來篩選某些組的(務必記住結果是組的全體),因此傳入的值應當是布林標量。
grouped_single[
['math'
,'physics']]
.filter
(lambda x:
(x['math'
]>32)
.all()
).head(
)
3.3變換
grouped_single[
['math'
,'height']]
.transform(
lambda x:x-x.
min())
.head(
)grouped_single[
['math'
,'height']]
.transform(
lambda x:
(x-x.mean())
/x.std())
.head(
)df_nan = df[
['math'
,'school']]
.copy(
).reset_index(
)df_nan.loc[np.random.randint(
0,df.shape[0]
,25),
['math']]
=np.nan
df_nan.head(
)df_nan.groupby(
'school'
).transform(
lambda x: x.fillna(x.mean())
).join(df.reset_index()[
'school'])
.head(
)
#返回值是列表
group_year[
['rank'
,'points']]
.(lambda x:x-x.
min())
#返回值是標量
group_year[
['rank'
,'points']]
.(lambda x:x.mean(
))
第三次打卡
2.什麼是多重賦值?什麼是增強賦值操作符?多重賦值技巧是一種快捷方式,讓你在一行 中,用列表中的值為多個變數 賦值new1 dsdf 34,wdf dfffff r1 r2 r3 r4 new1 r1,r2,r3,r4 new1 print r1,r2,r3,r4 dsdf 34 wdf dffff...
伯禹第三次打卡
生成對抗網路 只是提出一種網路架構。gan簡單的想法就是用兩個模型,乙個是生成模型,乙個是判別模型,判斷模型用於對資料的判斷,生成模型則是模型自己去產生資料。這兩個模型一同對抗,生成模型生成的資料去欺騙判別模型,判別模型去判斷資料的真假,從而二者共同完善從而達到穩定。判別模型比較好理解,就像分類一樣...
第三次打卡,異常處理
首先,執行 try 子句 在關鍵字 try 和關鍵字 except 之間的語句 如果沒有異常發生,忽略 except 子句,try 子句執行後結束。如果在執行 try 子句的過程中發生了異常,那麼 try 子句餘下的部分將被忽略。如果異常的型別和 except 之 後的名稱相符,那麼對應的 exce...