pandas第三次打卡

2021-10-05 12:15:49 字數 3210 閱讀 1355

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...