婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > pandas數據分組groupby()和統計函數agg()的使用

pandas數據分組groupby()和統計函數agg()的使用

熱門標簽:地圖地圖標注有嘆號 正安縣地圖標注app 阿里電話機器人對話 舉辦過冬奧會的城市地圖標注 400電話申請資格 qt百度地圖標注 螳螂科技外呼系統怎么用 電銷機器人系統廠家鄭州 遼寧智能外呼系統需要多少錢

數據分組

  • 使用 groupby() 方法進行分組
  • group.size()查看分組后每組的數量
  • group.groups 查看分組情況
  • group.get_group('名字') 根據分組后的名字選擇分組數據

準備數據

# 一個Series其實就是一條數據,Series方法的第一個參數是data,第二個參數是index(索引),如果沒有傳值會使用默認值(0-N)
# index參數是我們自定義的索引值,注意:參數值的個數一定要相同。
# 在創建Series時數據并不一定要是列表,也可以將一個字典傳進去。
from pandas import Series, DataFrame

# 使用字典創建
index_list = ['001', '002', '003', '004', '005', '006', '007', '008', '009', '010']
name_list = ['李白', '王昭君', '諸葛亮', '狄仁杰', '孫尚香', '妲己', '周瑜', '張飛', '王昭君', '大喬']
age_list = [25, 28, 27, 25, 30, 29, 25, 32, 28, 26]
gender_list = ['F', 'M', 'F', 'F', 'M', 'M', 'F', 'F', 'M', 'M']
salary_list = ['10k', '12.5k', '20k', '14k', '12k', '17k', '18k', '21k', '22k', '21.5k']
marital_list = ['NO', 'NO', 'YES', 'YES', 'NO', 'NO', 'NO', 'YES', 'NO', 'YES']
dic = {
 '姓名': Series(data=name_list, index=index_list),
 '年齡': Series(data=age_list, index=index_list),
 '薪資': Series(data=salary_list, index=index_list),
 '性別': Series(data=gender_list, index=index_list),
 '婚姻狀況': Series(data=marital_list, index=index_list)
}
df = DataFrame(dic)

# 寫入csv,path_or_buf為寫入文本文件
df.to_csv(path_or_buf='./People.csv', encoding='utf_8_sig')
print('end')

上面代碼會在當前目錄下生成一個 People.csv 文件

import pandas as pd
df = pd.read_csv('./People.csv')
df.head()

# 根據 '性別列' 進行分組, 得到的是一個分組后的對象
groups = df.groupby('性別')
print(groups)
pandas.core.groupby.generic.DataFrameGroupBy object at 0x000002953DAEBC88>

size()

使用groupby的size方法可以查看分組后每組的數量, 并返回一個含有分組大小的Series

print(groups.size())
性別
F 5
M 5
dtype: int64

可以只對一列數據進行分組, 只保留想要的數據

例如: 通過性別, 只對年齡進行分組

group = df['年齡'].groupby(df['性別'])
# 查看分組
print(group.groups)
# 根據分組后的名字選擇分組
print(group.get_group('F'))
{'F': Int64Index([0, 2, 3, 6, 7], dtype='int64'), 'M': Int64Index([1, 4, 5, 8, 9], dtype='int64')}
0 25
2 27
3 25
6 25
7 32
Name: 年齡, dtype: int64
  • 代碼df['年齡'].groupby(df['性別'])的邏輯是:取出df中'年齡'列數據,并且對該列數據根據df[‘性別']列數據進行分組操作
  • 這個代碼也可寫成df.groupby(df['性別'])['年齡'], 他的邏輯是: 將df數據通過df[‘性別']進行分組,然后再取出分組后的'年齡'列數據。兩種寫法達到的效果是一樣的
  • group.groups的結果是一個字典,字典的key是分組后每個組的名字,對應的值是分組后的數據,此方法方便我們產看分組的情況
  • group.get_group('F')這個方法可以根據具體分組的名字獲取,每個組的數據

 對分組進行遍歷

import pandas as pd
df = pd.read_csv('./People.csv')
groups = df.groupby('性別')
# print(groups)
for group_name,group_df in groups:
 print('分組的名稱:', group_name, '分組的數據', group_df.shape)
 print('-'*10)

分組的名稱: F 分組的數據 (5, 6)
----------
分組的名稱: M 分組的數據 (5, 6)
----------

- 將分組后的對象groups進行遍歷,可以獲取到group_name每個組的名字,group_df每個組的數據

import pandas as pd
df = pd.read_csv('./People.csv')
groups = df.groupby('性別')
for group_name,group_df in groups:
 f_mean = group_df['年齡'].mean()
 f_max = group_df['年齡'].max()
 f_min = group_df['年齡'].min()
 print('{}組的最大年齡是{},最小年齡是{},平均年齡是{}'.format(group_name,f_max,f_min,f_mean))

F組的最大年齡是32,最小年齡是25,平均年齡是26.8
M組的最大年齡是30,最小年齡是26,平均年齡是28.2

按多列進行分組

當需要按照多列進行分組的時候, groupby 方法里面我們傳入一個列表, 列表分別存儲分組依據的列名

注意: 列表中列名的順序, 確定了先按XXXX列分組, 然后在按照YYYY列分組, 不同的順序產生的分組名字是不同的

df = pd.read_csv('./People.csv')
group=df.groupby(['性別', '婚姻狀況'])
df1 = group.size()
print(df1)

性別 婚姻狀況
F  NO   2
  YES   3
M  NO   4
  YES   1
dtype: int64

group.size()返回的結果中發現索引值是多層的, 所以對于多索引值的獲取, 只需要從外往里一層一層的取就可以啦, 就像我們睡覺之前,需要先脫外衣再脫掉內衣是一樣的

size = df1['F'][ 'NO']
print(size)

2

pandas 常用統計函數

  • count() 統計列表中非空手機開的個數
  • nunique() 統計非重復的數據個數
  • sum() 統計列表中所有數值的和
  • mean() 計算列表中數據的平均值
  • median() 統計列表中數據中位數
  • max() 求列表中數據的最大值
  • min() 求列表中數據的最小值

對分組后的數據進行統計 agg()

import pandas as pd
df = pd.read_csv('./People.csv')
groups = df.groupby('性別')
for group_name,group_df in groups:
  f_se = group_df['年齡'].agg(['max','min','mean'])
  print('{}組的最大年齡是{},最小年齡是{},平均年齡是{}'.format(group_name,f_se[0],f_se[1],f_se[2]))

F組的最大年齡是32.0,最小年齡是25.0,平均年齡是26.8
M組的最大年齡是30.0,最小年齡是26.0,平均年齡是28.2

  • 在使用 agg() 函數時, 我們可以將多個統計函數一起放在一個 agg() 函數中
  • 如果是統計函數是pandas 提供的, 只需要將函數名字以字符串的形式存儲到列表中即可
  • 例如: 將 max() 改成 ‘max'

自定義統計函數

當使用自定義的統計函數時
先創建統計函數

# 自定義的統計函數
def my_peak_range(df):
  """
  返回最大值與最小之間的范圍
  """
  return df.max() - df.min()

# 使用
for group_name,group_df in groups:
  f_se = group_df['年齡'].agg(['max','min','mean',my_peak_range])
  print(f_se[0],f_se[1],f_se[3])
32.0 25.0 7.0
30.0 26.0 4.0

注意: 自定義函數名字傳入agg() 函數時, 不需要轉換成字符串

補充: 在這個數據中, 性別是什么的人總年齡最高

import pandas as pd
df = pd.read_csv('./People.csv')
groups = df.groupby('性別')
gende=groups.sum().sort_values(by='年齡',ascending=False).index.to_list()[0]
"""
這行代碼, 先按性別進行分組, 然后吧每組中的數據求和得到總的年齡, 在按照年齡排序
再取出index,最后使用to_list()轉換為列表,取出第一個數據
"""

print(gende)

M

開始按照性別分組, 組量太少, 數據也比較少, 本來準備算薪資總數, 但是單位忘記換了, 就這樣吧

到此這篇關于pandas數據分組groupby()和統計函數agg()的使用的文章就介紹到這了,更多相關pandas groupby()和agg()內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • pandas之分組groupby()的使用整理與總結
  • 分享Pandas庫中的一些寶藏函數transform()
  • Pandas中的 transform()結合 groupby()用法示例詳解

標簽:興安盟 信陽 合肥 淘寶好評回訪 昭通 隨州 濟源 阜新

巨人網絡通訊聲明:本文標題《pandas數據分組groupby()和統計函數agg()的使用》,本文關鍵詞  pandas,數據,分組,groupby,和,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《pandas數據分組groupby()和統計函數agg()的使用》相關的同類信息!
  • 本頁收集關于pandas數據分組groupby()和統計函數agg()的使用的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    色综合久久综合网97色综合| 狠狠色2019综合网| 中文字幕成人网| 久久精品人人做人人爽97| 精品国产亚洲在线| 久久久一区二区三区捆绑**| 国产69精品久久99不卡| 国产高清一区日本| 成人午夜伦理影院| 91污在线观看| 在线亚洲免费视频| 91精品婷婷国产综合久久竹菊| 国产在线精品一区二区| 国产成人亚洲综合a∨猫咪| 亚洲韩国精品一区| 日韩福利视频网| 黄色日韩网站视频| 99热国产精品| 4438x成人网最大色成网站| 日韩小视频在线观看专区| 久久精品欧美一区二区三区麻豆| 欧美日韩免费观看一区三区| 欧美精品久久99久久在免费线 | 亚洲免费高清视频在线| 91视频国产资源| 中文字幕一区三区| 亚洲欧美另类综合偷拍| 一区av在线播放| 另类的小说在线视频另类成人小视频在线 | 中文字幕一区二| 日韩美女精品在线| 视频一区二区国产| 国产成人夜色高潮福利影视| 欧美性淫爽ww久久久久无| 久久综合一区二区| 7777精品伊人久久久大香线蕉 | 国产精品女主播av| 日韩专区在线视频| www.色精品| 精品少妇一区二区三区在线播放| 欧美精品日韩一区| 亚洲日本中文字幕区| 狠狠色狠狠色综合系列| 欧美视频一区在线观看| 在线观看免费一区| 欧美专区亚洲专区| 久久精品夜色噜噜亚洲aⅴ| 欧美成人a∨高清免费观看| 一区二区三区在线观看网站| 一区二区三区欧美| 亚洲国产aⅴ天堂久久| 国产成人免费视频| 久久先锋影音av| 婷婷久久综合九色综合绿巨人 | 亚洲精品免费在线观看| 国产一区二区免费在线| 这里只有精品免费| 亚洲乱码日产精品bd| 国产91在线观看| 欧美精品一区二区三区在线| 日韩中文欧美在线| 精品视频999| 欧美一区二区人人喊爽| 亚洲在线一区二区三区| 在线视频综合导航| 一区二区三区视频在线看| 色综合婷婷久久| 亚洲你懂的在线视频| 色老汉一区二区三区| 亚洲嫩草精品久久| 色老汉av一区二区三区| 亚洲电影在线免费观看| 日本黄色一区二区| 婷婷综合在线观看| 91麻豆精品久久久久蜜臀| 青青草原综合久久大伊人精品| 国产精品一级黄| 欧美伊人久久大香线蕉综合69| 日韩一区二区三区在线视频| 人人爽香蕉精品| 欧美一区三区二区| 韩国三级中文字幕hd久久精品| 91蝌蚪porny九色| 亚洲人成在线观看一区二区| 94-欧美-setu| 亚洲国产成人porn| 欧美一区二区久久| 亚洲一区二区三区中文字幕 | 欧美网站大全在线观看| 一区二区成人在线视频| 欧美精品 国产精品| 久久99国产精品免费网站| 久久综合九色综合欧美98 | 欧美三片在线视频观看 | 精品一区二区免费| 国产日韩欧美制服另类| 日韩电影在线观看一区| 91久久人澡人人添人人爽欧美 | 色婷婷av一区二区三区之一色屋| 日韩精品一区国产麻豆| 国产成人午夜电影网| 亚洲一区在线观看视频| 精品电影一区二区| 免费美女久久99| 国产精品传媒入口麻豆| 欧美二区在线观看| 成人性生交大片免费看中文| 亚洲一区成人在线| 国产人妖乱国产精品人妖| 色播五月激情综合网| 久久成人羞羞网站| 一区二区三区电影在线播| 久久人人超碰精品| 欧美色综合久久| 国产成人综合亚洲网站| 青青草精品视频| 中文字幕在线不卡一区二区三区| 福利91精品一区二区三区| 亚洲mv在线观看| 欧美人成免费网站| 99视频热这里只有精品免费| 蜜桃视频在线观看一区| 一区二区三区日韩精品视频| 国产精品区一区二区三区 | 精品少妇一区二区三区在线视频| 爽好多水快深点欧美视频| 欧美日韩一区二区三区高清 | 久久精品男人天堂av| 欧美精选在线播放| 色偷偷一区二区三区| 成人一级视频在线观看| 国产电影精品久久禁18| 韩国欧美一区二区| 日韩国产成人精品| 国产女人水真多18毛片18精品视频| 国产成人8x视频一区二区| 青青青伊人色综合久久| 国产视频一区不卡| 337p粉嫩大胆噜噜噜噜噜91av| 丰满岳乱妇一区二区三区| 狠狠色丁香久久婷婷综| 亚洲视频图片小说| 亚洲欧美日韩在线| 亚洲欧洲日产国码二区| 亚洲欧洲99久久| 《视频一区视频二区| 亚洲欧美日韩国产另类专区| 亚洲欧洲综合另类在线| 亚洲男人的天堂一区二区| 亚洲精品乱码久久久久久黑人| 欧美mv日韩mv国产网站app| 日韩一区二区三区av| 精品欧美乱码久久久久久 | 欧美老人xxxx18| 欧美一区二区三区爱爱| 日韩一本二本av| www久久久久| 国产精品视频九色porn| 亚洲欧美国产77777| 亚洲一区二区三区视频在线播放| 久久男人中文字幕资源站| 在线观看av一区| 欧美高清一级片在线| 91在线国产福利| 91激情五月电影| 91精品国产综合久久精品图片| 99久久综合99久久综合网站| 91麻豆自制传媒国产之光| 欧美日韩一级二级三级| 精品久久久久久久人人人人传媒 | 蜜臀久久久99精品久久久久久| 国产精品久久看| 亚洲一级片在线观看| 国产精品动漫网站| 无码av免费一区二区三区试看| 亚洲视频香蕉人妖| 国产色综合一区| 亚洲宅男天堂在线观看无病毒| 国产精品理论在线观看| 欧美成人激情免费网| 欧美精品丝袜中出| 国产网红主播福利一区二区| 亚洲综合色网站| 国产精品一区二区久久不卡| 91色|porny| 精品国产乱码久久久久久蜜臀 | 色狠狠一区二区| 日韩亚洲欧美在线| 51精品秘密在线观看| 欧美三级韩国三级日本一级| 久久久www免费人成精品| 久久网站热最新地址| 一区二区三区高清在线| 亚洲一区二区高清| 亚洲1区2区3区视频| 国产盗摄一区二区三区| 91精品国产全国免费观看| 亚洲乱码国产乱码精品精的特点| 亚洲国产精品99久久久久久久久| 久久久精品国产免费观看同学|