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

pandas中df.groupby()方法深入講解

 更新時間:2022年12月20日 11:07:41   作者:HTDiiii  
在使用pandas進行數(shù)據(jù)統(tǒng)計分析時遇到了問題,找了很久才找到解決辦法,所以下面這篇文章主要給大家介紹了關于pandas中df.groupby()方法的相關資料,需要的朋友可以參考下

分組:根據(jù)研究目的,將所有樣本點按照一個或多個屬性劃分為多個組,就是分組。

pandas中,數(shù)據(jù)表就是DataFrame對象,分組就是groupby方法。將DataFrame中所有行按照一列或多列來劃分,分為多個組,列值相同的在同一組,列值不同的在不同組。

分組后,就得到一個groupby對象,代表著已經(jīng)被分開的各個組。后續(xù)所有的動作,比如計數(shù),求平均值等,都是針對這個對象,也就是都是針對各個組。即在每個組組內(nèi)進行計數(shù),求平均值等。

分組的返回結果

df = pd.DataFrame([['a', 'man', 120, 90],
                   ['b', 'woman', 130, 100],
                   ['a', 'man', 110, 108],
                   ['a', 'woman', 120, 118]], columns=['level', 'gender', 'math','chinese'])
group = df.groupby('gender')

df.groupby() 函數(shù)返回的對象是一系列鍵值對,其中鍵是分組的字段值,值是該字段值下的數(shù)據(jù)表。分組的結果是無法直接輸出的,print()只能看到該結果的數(shù)據(jù)類型??梢杂醚h(huán)對分組后的結果進行遍歷。

print(group)
# <pandas.core.groupby.generic.DataFrameGroupBy object at 0x11cb60f50>
for key, value in group:
    print(key)
    print(value)
    print("")
man
  level gender  math  chinese
0     a    man   120       90
2     a    man   110      108

woman
  level gender  math  chinese
1     b  woman   130      100
3     a  woman   120      118

按一列分組:df.groupby(column)

group = df.groupby('gender') # 按照'gender'列的值來分組,創(chuàng)建一個groupby對象
# group = df.groupby(['gender']) # 等價寫法
for key, df in group:
    print(key)
    print(df)
man
  level gender  math  chinese
0     a    man   120       90
2     a    man   110      108

woman
  level gender  math  chinese
1     b  woman   130      100
3     a  woman   120      118

按多列分組:df.groupby([column1, column2])

group = df.groupby(['gender', 'level'])
# 先按照'grade'列的值來分組。每組內(nèi),再按'level'列來分組。也返回一個groupby對象
for key, value in group:
    print(key)
    print(value)
    print("")
('man', 'a')
  level gender  math  chinese
0     a    man   120       90
2     a    man   110      108

('woman', 'a')
  level gender  math  chinese
3     a  woman   120      118

('woman', 'b')
  level gender  math  chinese
1     b  woman   130      100

查看每組的統(tǒng)計數(shù)據(jù):df.groupby(column).describe()

對數(shù)據(jù)表中的數(shù)值列進行統(tǒng)計,給出包括count = 計數(shù),mean = 平均數(shù),std = 方差,min = 最小值,25% = 四分位數(shù),50% = 二分位數(shù),75% = 四分之三分位數(shù),max = 最大值的信息。不會對非數(shù)值列統(tǒng)計。

返回的是一個dataframe。

查看所有列的統(tǒng)計信息

group = df.groupby(['gender'])
df1 = group.describe()
# df1 = df.groupby(['gender']).describe() # 等價寫法

print(type(df1)) 
print(df1)
<class 'pandas.core.frame.DataFrame'>

 math                                                     chinese  \
       count   mean       std    min    25%    50%    75%    max   count   
gender                                                                     
man      2.0  115.0  7.071068  110.0  112.5  115.0  117.5  120.0     2.0   
woman    2.0  125.0  7.071068  120.0  122.5  125.0  127.5  130.0     2.0   


         mean        std    min    25%    50%    75%    max  
gender                                                       
man      99.0  12.727922   90.0   94.5   99.0  103.5  108.0  
woman   109.0  12.727922  100.0  104.5  109.0  113.5  118.0

查看指定列的統(tǒng)計信息

group = df.groupby(['gender'])
df1 = group.describe()['math'] # 只看math列的統(tǒng)計信息
print(df1)
count   mean    std    min    25%    50%    75%    max
gender                                                           
man       2.0  115.0  7.071068  110.0  112.5  115.0  117.5  120.0
woman     2.0  125.0  7.071068  120.0  122.5  125.0  127.5  130.0

查看縱向視圖

unstack()可以將每列的統(tǒng)計信息垂直排列。

group = df.groupby(['gender'])
df1 = group.describe().unstack()
print(df1)
gender
math     count  man         2.000000
                woman       2.000000
         ...
         max    man       120.000000
                woman     130.000000
chinese  count  man         2.000000
                woman       2.000000
         ...
                woman     113.500000
         max    man       108.000000
                woman     118.000000
dtype: float64

組內(nèi)離散列計數(shù):df.groupby(column)[column2].value_counts()

數(shù)據(jù)表中的列按值是否連續(xù),可以分為連續(xù)值列、離散值列。對于離散值列,可以統(tǒng)計其不重復值的個數(shù)。對于連續(xù)值列,統(tǒng)計不重復值一般沒有意義。統(tǒng)計結果是一個Series對象。

group = df.groupby(['gender'])
df1 = group['level'].value_counts() # 統(tǒng)計'level'列的不重復值個數(shù)

print(type(df1))
print(df1)
<class 'pandas.core.series.Series'>

gender  level
man     a        2
woman   a        1
        b        1py
Name: level, dtype: int64

組內(nèi)數(shù)值列和:df.groupby(column).sum()

group = df.groupby(['gender'])
df1 = group.sum()
print(df1)
math  chinese
gender               
man      230      198
woman    250      218

組內(nèi)成員數(shù):df.groupby(column).count()

每組內(nèi),按列統(tǒng)計每組的成員數(shù)。每列的統(tǒng)計結果是一樣的

group = df.groupby(['gender'])
df1 = group.count()
print(df1)
level  math  chinese
gender                      
man         2     2        2
woman       2     2        2

組內(nèi)數(shù)值列均值:df.groupby(column).mean()

每組內(nèi),統(tǒng)計所有數(shù)值列的均值,非數(shù)值列無均值。

所有組的均值

group = df.groupby(['gender'])
df1 = group.mean()
print(df1)
math  chinese
gender               
man      115       99
woman    125      109

單組的均值

group = df.groupby(['gender'])
df1 = group['math'].mean()
print(df1)
gender
man      115
woman    125
Name: math, dtype: int64

組內(nèi)數(shù)值列最大值:df.groupby(column).max()

每組內(nèi),統(tǒng)計所有數(shù)值列的最大值,非數(shù)值列無最大值

統(tǒng)計所有數(shù)值列的最大值

group = df.groupby(['gender'])
df1 = group.max()
print(df1)
level  math  chinese
gender                     
man        a   120      108
woman      b   130      118

統(tǒng)計單個數(shù)值列的最大值

group = df.groupby(['gender'])
df1 = group['math'].max()
print(df1)
gender
man      120
woman    130
Name: math, dtype: int64

組內(nèi)應用函數(shù):df.groupby(column1)[column2].apply()

group = df.groupby(['gender'])
df1 = group['math'].apply(np.mean) # 求組內(nèi)均值
print(df1)
gender
man      115.0
woman    125.0
Name: math, dtype: float64

組內(nèi)不同列用不同函數(shù):df.groupby(column).agg({column1:func, column2:func,…})

group = df.groupby(['gender'])
df1 = group.agg({'math':np.mean, 'chinese':np.std})
print(df1)
math    chinese
gender                 
man      115  12.727922
woman    125  12.727922

總結

到此這篇關于pandas中df.groupby()方法講解的文章就介紹到這了,更多相關pandas df.groupby()方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

垣曲县| 福清市| 高要市| 天祝| 连云港市| 高州市| 霍城县| 额尔古纳市| 临汾市| 河北省| 永和县| 新河县| 久治县| 桓仁| 海淀区| 营口市| 怀来县| 裕民县| 垫江县| 惠州市| 启东市| 吉木乃县| 视频| 昭觉县| 黄梅县| 襄垣县| 勐海县| 南充市| 准格尔旗| 永济市| 旺苍县| 绥中县| 新龙县| 天镇县| 茂名市| 汾阳市| 吴川市| 大埔区| 甘南县| 浪卡子县| 汕头市|