最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pandas分組聚合詳解

 更新時(shí)間:2020年04月10日 11:45:31   作者:知識(shí)追尋者  
這篇文章主要介紹了pandas分組聚合詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一 前言

pandas學(xué)到分組迭代,那么基礎(chǔ)的pandas系列就學(xué)的差不多了,自我感覺不錯(cuò),知識(shí)追尋者用pandas處理過一些數(shù)據(jù),蠻好用的;

知識(shí)追尋者(Inheriting the spirit of open source, Spreading technology knowledge;)

二 分組

2.1 數(shù)據(jù)準(zhǔn)備

# -*- coding: utf-8 -*-

import pandas as pd
import numpy as np

frame = pd.DataFrame({
 'user' : ['zszxz','craler','rose','zszxz','rose'],
 'hobby' : ['reading','running','hiking','reading','hiking'],
 'price' : np.random.randn(5),
 'number' : np.random.randn(5)
})
print(frame)

輸出

     user    hobby     price    number
0   zszxz  reading  0.275752 -0.075841
1  craler  running -1.410682  0.259869
2    rose   hiking -0.353269 -0.392659
3   zszxz  reading  1.484604  0.659274
4    rose   hiking -1.348315  2.492047

2.2 分組求均值

提取DataFrame中price 列,根據(jù)hobby列進(jìn)行分組,最后對(duì)分好組的數(shù)據(jù)進(jìn)行處理求均值;

# 是個(gè)生成器
group = frame['price'].groupby(frame['hobby'])
# 求均值
print(group.mean())

輸出

hobby
hiking    -0.850792
reading    0.880178
running   -1.410682
Name: price, dtype: float64

Tip: 可以理解為 根據(jù)愛好分組,查詢價(jià)格;查詢的列必須是數(shù)字,否則求均值時(shí)會(huì)報(bào)異常

如果是根據(jù)多列分組則在groupby后面使用列表指定,并且調(diào)用求均值函數(shù);輸出的值將是分組列,均值結(jié)果;

group = frame['price'].groupby([frame['hobby'],frame['user']])
print(group.mean())

輸出

hobby    user 
hiking   rose      0.063972
reading  zszxz     0.393164
running  craler   -1.395186
Name: price, dtype: float64

如果對(duì)整個(gè)DataFrame進(jìn)行分組,則不再需要提取指定的列;

group = frame.groupby(frame['hobby'])
print(group.mean())

輸出

hobby                     
hiking  -0.116659 -0.316222
reading -0.651365  0.856299
running -0.282676 -0.585124

Tip: 求均值后,默認(rèn)是對(duì)數(shù)字類型的數(shù)據(jù)進(jìn)行分組求均值;非數(shù)字列自動(dòng)忽略

2.3 分組求數(shù)量

分組求數(shù)量是統(tǒng)計(jì)分析中應(yīng)用最為廣泛的函數(shù);如下示例中對(duì)DataFrame根據(jù)hobby分組,并且調(diào)用 size()函數(shù)統(tǒng)計(jì)個(gè)數(shù);此方法常用的統(tǒng)計(jì)技巧;

group = frame.groupby(frame['hobby'])
print(group.size())

輸出

hobby
hiking     2
reading    2
running    1
dtype: int64

2.4 分組迭代

當(dāng)對(duì)groupby的列只有單個(gè)時(shí)(示例根據(jù)hobby進(jìn)行分組),可以 使用 key , value 形式 對(duì)分組后的數(shù)據(jù)進(jìn)行迭代,其中key 是分組的名稱,value是分組的數(shù)據(jù);

group = frame['price'].groupby(frame['hobby'])
for key , data in group:
 print(key)
 print(data)

輸出

hiking
2   -0.669410
4   -0.246816
Name: price, dtype: float64
reading
0    1.362191
3   -0.052538
Name: price, dtype: float64
running
1    0.8963
Name: price, dtype: float64

當(dāng)對(duì)多個(gè)列進(jìn)行分組迭代時(shí),有多少列則需要指定多少個(gè)key與其對(duì)應(yīng),key可以是任何不重復(fù)的變量名稱

group = frame['price'].groupby([frame['hobby'],frame['user']])
for (key1, key2) , data in group:
 print(key1,key2)
 print(data)

輸出

hiking rose
2   -0.019423
4   -2.642912
Name: price, dtype: float64
reading zszxz
0    0.405016
3    0.422182
Name: price, dtype: float64
running craler
1   -0.724752
Name: price, dtype: float64

2.5 分組數(shù)據(jù)轉(zhuǎn)為字典

可以對(duì)分組后的數(shù)據(jù)轉(zhuǎn)為字典;

dic = dict(list(frame.groupby(frame['hobby'])))
print(dic)

輸出

{'hiking':    user   hobby     price    number
2  rose  hiking  0.351633  0.523272
4  rose  hiking  0.800039  0.331646,
'reading':     user    hobby     price    number
0  zszxz  reading -0.074857 -0.928798
3  zszxz  reading  0.666925  0.606706,
'running':      user    hobby     price    number
1  craler  running -2.525633  0.895776}

獲取key

print(dic['hiking'])

輸出

   user   hobby     price    number
2  rose  hiking  0.382225 -0.242055
4  rose  hiking  1.055785 -0.328943

2.6 分組取值

對(duì)frame進(jìn)行hobby分組,就算查詢 price 的均值;返回Series;

mean = frame.groupby('hobby')['price'].mean()
print(type(mean))
print(mean)

輸出

<class 'pandas.core.series.Series'>
hobby
hiking     0.973211
reading   -1.393790
running   -0.286236
Name: price, dtype: float64

Tip: frame.groupby(‘hobby')[‘price'] 與 frame[‘price'] .groupby(frame[‘hobby']) 相等

如果想要返回 DataFrame

mean = frame.groupby('hobby')[['price']].mean()
print(type(mean))
print(mean)

輸出

<class 'pandas.core.frame.DataFrame'>
            price
hobby           
hiking   0.973211
reading -1.393790
running -0.286236

2.5 Series作為分組

也可以傳入Series作為DataFrame的分組列

ser = pd.Series(['hiking','reading','running'])
data = frame.groupby(ser).mean()
print(data)

輸出

            price    number
hiking   1.233396  0.313839
reading -0.298887  0.982853
running -0.797734 -1.230811

Tip: 本質(zhì)上都是數(shù)組,除了Series,還可以使用字典,列表,數(shù)組,函數(shù)作為分組列

2.6 通過索引層級(jí)分組

傳入級(jí)別的名稱即可實(shí)現(xiàn)層級(jí)化索引分組

# 創(chuàng)建2個(gè)列,并且指定名稱
columns = pd.MultiIndex.from_arrays([['Python', 'Java', 'Python', 'Java', 'Python'],
          ['a', 'b', 'a', 'b', 'c']], names=['language', 'alpha'])
frame = pd.DataFrame(np.random.randint(1, 10, (5, 5)), columns=columns)
print(frame)

# 根據(jù)language進(jìn)行分組
print(frame.groupby(level='language', axis=1).sum())
# 根據(jù)index進(jìn)行分組
print(frame.groupby(level='alpha', axis=1).sum())

frame輸出如下

language Python Java Python Java Python
alpha         a    b      a    b      c
0             9    9      7    4      5
1             3    4      7    6      6
2             6    6      3    9      1
3             1    1      8    5      2
4             6    5      9    5      4

language分組如下

language  Java  Python
0           13      21
1           10      16
2           15      10
3            6      11
4           10      19

alpha分組如下

alpha   a   b  c
0      16  13  5
1      10  10  6
2       9  15  1
3       9   6  2
4      15  10  4

 到此這篇關(guān)于pandas分組聚合詳解的文章就介紹到這了,更多相關(guān)pandas 分組聚合內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Django項(xiàng)目在pycharm新建的步驟方法

    Django項(xiàng)目在pycharm新建的步驟方法

    在本篇文章里小編給大家整理的是一篇關(guān)于Django項(xiàng)目在pycharm新建的步驟方法,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-03-03
  • Python translator使用實(shí)例

    Python translator使用實(shí)例

    translator實(shí)例應(yīng)用代碼
    2008-09-09
  • Python?Plotly庫安裝及使用教程

    Python?Plotly庫安裝及使用教程

    這篇文章主要介紹了包括安裝、導(dǎo)入庫、Plotly的基本結(jié)構(gòu)、常見圖表類型、樣式定制以及如何與Pandas數(shù)據(jù)框結(jié)合使用,通過示例代碼和解釋,幫助讀者快速掌握Plotly的使用技巧,需要的朋友可以參考下
    2025-03-03
  • 整理Python 常用string函數(shù)(收藏)

    整理Python 常用string函數(shù)(收藏)

    這篇文章主要介紹了整理Python 常用string函數(shù)(收藏)的相關(guān)資料,具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-05-05
  • Python基本數(shù)據(jù)類型及內(nèi)置方法

    Python基本數(shù)據(jù)類型及內(nèi)置方法

    這篇文章主要介紹了Python基本數(shù)據(jù)類型及內(nèi)置方法,??數(shù)據(jù)類型是用來記錄事物狀態(tài)的,而事物的狀態(tài)是不斷變化的,下文圍繞主題展開相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-04-04
  • 詳解Python裝飾器 給你的咖啡加點(diǎn)料

    詳解Python裝飾器 給你的咖啡加點(diǎn)料

    今天你的咖啡加糖了嗎? 讓我們通過一個(gè)簡(jiǎn)單的例子來引出裝飾器的概念及用法。在引出裝飾器之前,我們先來了解一下函數(shù)的概念,感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • pycharm遠(yuǎn)程連接服務(wù)器調(diào)試tensorflow無法加載問題

    pycharm遠(yuǎn)程連接服務(wù)器調(diào)試tensorflow無法加載問題

    最近打算在win系統(tǒng)下使用pycharm開發(fā)程序,并遠(yuǎn)程連接服務(wù)器調(diào)試程序,其中在import tensorflow時(shí)報(bào)錯(cuò),本文就來介紹一下如何解決,感興趣的可以了解一下
    2021-06-06
  • Python如何使用PIL Image制作GIF圖片

    Python如何使用PIL Image制作GIF圖片

    這篇文章主要介紹了Python如何使用PIL Image制作GIF圖片,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 如何用python抓取B站數(shù)據(jù)

    如何用python抓取B站數(shù)據(jù)

    今天介紹一個(gè)獲取B站數(shù)據(jù)的Python擴(kuò)展庫-bilibili_api,對(duì)此感興趣的同學(xué),可以實(shí)驗(yàn)一下
    2021-05-05
  • python 爬取嗶哩嗶哩up主信息和投稿視頻

    python 爬取嗶哩嗶哩up主信息和投稿視頻

    本項(xiàng)目主要功能是爬取部分嗶哩嗶哩up主信息和up主投稿視頻信息,用作數(shù)據(jù)處理與分析學(xué)習(xí)(不得用于商業(yè)和其他侵犯他人權(quán)益的用途)。有此需求的朋友可以了解下本項(xiàng)目
    2021-06-06

最新評(píng)論

柘城县| 武强县| 饶平县| 滦南县| 静安区| 金门县| 微山县| 万盛区| 怀柔区| 怀仁县| 醴陵市| 分宜县| 河曲县| 阜康市| 弥渡县| 大化| 阳原县| 蒲城县| 江达县| 衡东县| 绥宁县| 准格尔旗| 太白县| 翁源县| 纳雍县| 昌江| 蒙阴县| 吕梁市| 蒙阴县| 那坡县| 山西省| 筠连县| 延吉市| 西吉县| 宁都县| 都江堰市| 乐东| 北票市| 金乡县| 定西市| 顺平县|