国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視

這篇具有很好參考價(jià)值的文章主要介紹了Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1 數(shù)據(jù)分組統(tǒng)計(jì) groupby

分割 split: 按照鍵值(key)或者分組變量將數(shù)據(jù)分組
應(yīng)用 apply: 對(duì)每個(gè)組應(yīng)用函數(shù), 通常是累計(jì),轉(zhuǎn)換或過(guò)濾函數(shù)
組合 combine: 將每一組的結(jié)果合并成一個(gè)輸出組

常用功能

1. len(gp1) #組數(shù)
2. gp1.size() #每組的記錄個(gè)數(shù)
3. df3.groupby(["小組","評(píng)級(jí)"])  #得到的結(jié)果是一個(gè)groupby對(duì)象
4. gp1.mean()  #每組組內(nèi)的平均值,還有sum、max、min、count
5. apply #自定義統(tǒng)計(jì)函數(shù)(自己定義一個(gè)函數(shù),作為參數(shù),會(huì)自動(dòng)將函數(shù)應(yīng)用到每一組數(shù)據(jù)當(dāng)中去)

1.1 按照單列進(jìn)行分組統(tǒng)計(jì)df.groupby(‘列名’).count()

# 創(chuàng)建示例DataFrame
data = {'班級(jí)': ['一班', '一班','一班','二班', '二班','二班','三班','三班','三班'],
        '科目': ['物理', '化學(xué)', '生物','物理', '化學(xué)', '生物','物理', '化學(xué)', '生物'],
        '數(shù)量': [17, 29, 18,37,48,32,17, 29, 18],
        '分?jǐn)?shù)': [87, 89, 88,77,98,82,97, 89, 78]}
df = pd.DataFrame(data)

Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視
Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視
Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視
Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視
Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視
Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視

# 創(chuàng)建示例DataFrame
data = {'班級(jí)': ['一班', '一班','一班','二班', '二班','二班','三班','三班','三班'],
        '科目': ['物理','生物','生物','物理', '物理', '生物','化學(xué)', '化學(xué)', '生物'],
        '姓名': ['張三', '章中', '賀天','紫瞳','西德','魏斯','明峰', '希方', '塞法'],
        '分?jǐn)?shù)': [87, 89, 88,77,98,82,97, 89, 78]}
df = pd.DataFrame(data)
#實(shí)現(xiàn)組內(nèi)排序,排序的時(shí)候,科目作為第一排序依據(jù),用來(lái)排序的數(shù)值字段(分?jǐn)?shù))作為第二排序依據(jù)
df.sort_values(['科目','分?jǐn)?shù)'],ascending=[False,True]).groupby('科目').head(3)

Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視

1.2 按照多列進(jìn)行分組統(tǒng)計(jì) df.groupby([‘列名1’,‘列名2’]).count()

# 創(chuàng)建示例DataFrame
data = {'班級(jí)': ['一班', '一班','一班','二班', '二班','二班','三班','三班','三班'],
        '科目': ['物理','生物','生物','物理', '物理', '生物','化學(xué)', '化學(xué)', '生物'],
        '姓名': ['張三', '章中', '賀天','紫瞳','西德','魏斯','明峰', '希方', '塞法'],
        '分?jǐn)?shù)': [87, 89, 88,77,98,82,97, 89, 78]}
df = pd.DataFrame(data)
#按照科目、班級(jí)進(jìn)行分組求平均
df[['科目','班級(jí)','分?jǐn)?shù)']].groupby(['科目','班級(jí)']).mean()

Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視
Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視
Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視
Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視

1.3 分組填充缺失值 df.groupby(‘需填充列名’).apply(lambda x:x.fillna(x.mean()))

# 創(chuàng)建示例DataFrame
data = {'年級(jí)': ['1', '1','1','2', '2','3','3','3','3'],
        '姓名': ['張三', '章中', '賀天','紫瞳','西德','魏斯','明峰', '希方', '塞法'],
        '年齡': [17, 19, np.NaN,18,np.NaN,15,18, 18,np.NaN ]}
df = pd.DataFrame(data)
df

Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視

#按照年級(jí)分組填充缺失的年齡
df.groupby('年級(jí)').apply(lambda x:x.fillna(x.mean()))

Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視
新增加一列 年齡ew 將填充后的年齡補(bǔ)充上去
Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視

2 分組運(yùn)算 agg

數(shù)據(jù)聚合(agg):一般指的是能夠從數(shù)組產(chǎn)生的標(biāo)量值的數(shù)據(jù)轉(zhuǎn)換過(guò)程,常見(jiàn)的聚合運(yùn)算都有相關(guān)的統(tǒng)計(jì)函數(shù)快速實(shí)現(xiàn),也可以自定義聚合運(yùn)算。

2.1 傳入標(biāo)準(zhǔn)函數(shù) df.groupby(‘班級(jí)’).agg(np.sum)

data = {'班級(jí)': ['一班', '一班','一班','二班', '二班','二班','三班','三班','三班'],
        '科目': ['物理', '化學(xué)', '生物','物理', '化學(xué)', '生物','物理', '化學(xué)', '生物'],
        '數(shù)量': [17, 29, 18,37,48,32,17, 29, 18],
        '分?jǐn)?shù)': [87, 89, 88,77,98,82,97, 89, 78]}
df = pd.DataFrame(data)
#數(shù)值列按照分組標(biāo)準(zhǔn)快速聚合
df.groupby('班級(jí)').agg(np.sum) 

Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視

2.2 不同的列不同的聚合函數(shù) df.groupby(‘班級(jí)’).agg({‘?dāng)?shù)量’:np.sum,‘分?jǐn)?shù)’:np.mean})

#不同的列傳入不同的函數(shù)
mappping = {'數(shù)量':np.sum,'分?jǐn)?shù)':np.mean}
df.groupby('班級(jí)').agg(mappping)

Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視

2.3 自定義函數(shù)

#求針對(duì)各科目最高分?jǐn)?shù)與最低分?jǐn)?shù)之間的差值
def cha(x):
    return x.max() - x.min()
df[['科目','分?jǐn)?shù)']].groupby('科目').agg([cha])

Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視

2.4 調(diào)用多個(gè)聚合函數(shù)

df[['班級(jí)','分?jǐn)?shù)']].groupby('班級(jí)').agg([np.max,np.min,np.mean])

Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視

3 數(shù)據(jù)透視表

3.1 透視表 pivot_table

透視表(pivot table): 透視表指根據(jù)一個(gè)或多個(gè)鍵值對(duì)數(shù)據(jù)進(jìn)行聚合,根據(jù)行或列的分組鍵將數(shù)據(jù)劃分到各個(gè)區(qū)域中

#pivot_table 其實(shí)就是將groupby封裝起來(lái)了
df[['班級(jí)','分?jǐn)?shù)']].pivot_table(index = ['班級(jí)']) #先按照班級(jí)分組,再求mean

Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視

data = {'班級(jí)': ['一班', '一班','一班','二班', '二班','二班','三班','三班','三班'],
        '科目': ['物理', '化學(xué)', '生物','物理', '化學(xué)', '生物','物理', '化學(xué)', '生物'],
        '數(shù)量': [17, 29, 18,37,48,32,17, 29, 18],
        '分?jǐn)?shù)': [87, 89, 88,77,98,82,97, 89, 78]}
df = pd.DataFrame(data)
df.pivot_table(index = ['班級(jí)','科目']) #先按照班級(jí)然后按照科目分許,默認(rèn)求均值

Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視

df.pivot_table(index = ['班級(jí)'],aggfunc = np.sum)#求和

Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視

pd.pivot_table(df3,values="總分",index="評(píng)級(jí)",columns=["班級(jí)","小組"])

Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視

3.2 交叉表 crosstab

交叉表(crosstab): 交叉表用于統(tǒng)計(jì)分組頻率的特殊透視表
Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視

#groupby實(shí)現(xiàn)pd.crosstab(df['班級(jí)'],df['科目']) 
df[['班級(jí)','科目','姓名']].groupby(['班級(jí)','科目']).count().unstack().fillna(0)

Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-495543.html

到了這里,關(guān)于Python學(xué)習(xí)——數(shù)據(jù)分組統(tǒng)計(jì)、分組運(yùn)算及透視的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包