欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中的數(shù)據(jù)分組統(tǒng)計、分組運算及透視方式

 更新時間:2024年07月19日 10:53:55   作者:云曉-  
這篇文章主要介紹了Python中的數(shù)據(jù)分組統(tǒng)計、分組運算及透視方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

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

  • 分割 split: 按照鍵值(key)或者分組變量將數(shù)據(jù)分組
  • 應用 apply: 對每個組應用函數(shù), 通常是累計,轉換或過濾函數(shù)
  • 組合 combine: 將每一組的結果合并成一個輸出組

常用功能

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

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

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

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

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

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

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

# 創(chuàng)建示例DataFrame
data = {'年級': ['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

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

新增加一列 年齡ew 將填充后的年齡補充上去

2 分組運算 agg

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

2.1 傳入標準函數(shù) df.groupby(‘班級’).agg(np.sum)

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

2.2 不同的列不同的聚合函數(shù) df.groupby(‘班級’).agg({‘數(shù)量’:np.sum,‘分數(shù)’:np.mean})

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

2.3 自定義函數(shù)

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

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

df[['班級','分數(shù)']].groupby('班級').agg([np.max,np.min,np.mean])

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

3.1 透視表 pivot_table

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

#pivot_table 其實就是將groupby封裝起來了
df[['班級','分數(shù)']].pivot_table(index = ['班級']) #先按照班級分組,再求mean

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

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

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

3.2 交叉表 crosstab

交叉表(crosstab): 交叉表用于統(tǒng)計分組頻率的特殊透視表

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

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 100 個 Python 小例子(練習題一)

    100 個 Python 小例子(練習題一)

    這篇文章主要介紹 Python 小例子,有數(shù)字組合、個稅計算、完全平方數(shù)、三數(shù)排序、斐波那契數(shù)列、copy、九九乘法表、暫停一秒輸出等多個實例,需要的朋友可以參考一下
    2021-10-10
  • Python實現(xiàn)雙向鏈表基本操作

    Python實現(xiàn)雙向鏈表基本操作

    這篇文章主要為大家詳細介紹了Python實現(xiàn)雙向鏈表基本操作,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Python socket實現(xiàn)簡單聊天室

    Python socket實現(xiàn)簡單聊天室

    這篇文章主要為大家詳細介紹了Python socket實現(xiàn)簡單聊天室,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Python操作lxml庫實戰(zhàn)之Xpath篇

    Python操作lxml庫實戰(zhàn)之Xpath篇

    XPath是一門在XML文檔中查找信息的語言,下面這篇文章主要給大家介紹了關于Python操作lxml庫實戰(zhàn)之Xpath篇的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • 用Python寫漏洞驗證腳本的代碼

    用Python寫漏洞驗證腳本的代碼

    這篇文章主要介紹了用Python寫漏洞驗證腳本,本文給大家分享完整實例代碼,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • 詳解分布式系統(tǒng)中如何用python實現(xiàn)Paxos

    詳解分布式系統(tǒng)中如何用python實現(xiàn)Paxos

    提到分布式算法,就不得不提 Paxos 算法,在過去幾十年里,它基本上是分布式共識的代 名詞,因為當前最常用的一批共識算法都是基于它改進的。比如,F(xiàn)ast Paxos 算法、 Cheap Paxos 算法、Raft 算法、ZAB 協(xié)議等等。
    2021-05-05
  • 如何使用python爬取csdn博客訪問量

    如何使用python爬取csdn博客訪問量

    這篇文章主要介紹了如何使用python爬取csdn博客訪問量的相關資料,需要的朋友可以參考下
    2016-02-02
  • python3.3教程之模擬百度登陸代碼分享

    python3.3教程之模擬百度登陸代碼分享

    因工作需要,研究了一下模擬百度的登陸,開發(fā)環(huán)境使用了python3,大家參考使用吧
    2014-01-01
  • python+opencv實現(xiàn)目標跟蹤過程

    python+opencv實現(xiàn)目標跟蹤過程

    這篇文章主要介紹了python+opencv實現(xiàn)目標跟蹤過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • python實現(xiàn)Pyecharts實現(xiàn)動態(tài)地圖(Map、Geo)

    python實現(xiàn)Pyecharts實現(xiàn)動態(tài)地圖(Map、Geo)

    這篇文章主要為大家詳細介紹了python實現(xiàn)Pyecharts實現(xiàn)動態(tài)地圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評論