學習筆記,這個筆記以例子為主。
開發工具:spyder
透視表(pivot table)是各種電子**程式和其他資料分析軟體中一種常見的資料彙總工具。它根據乙個或多個鍵對資料進行分組聚合,並對每個分組進行資料彙總。
# 以a與b做分組彙總資料,針對d的每個值列級分組統計,統計每個分組下c列的最大值,並新增行、列小計
data.pivot_table(index=
['a'
,'b'
], values=
['c'],
columns=
['d'
], margins=
true
, aggfunc=
'max'
)
接下來,我們用幾個例子來學習如何用pandas來製作想要的資料透視表。
首先,我們來康康接下來幾個例子所要使用的資料:
**:
import pandas as pd
leftd =
rightd =
df_leftd = pd.dataframe(leftd)
df_rightd = pd.dataframe(rightd)
df = pd.merge(df_leftd, df_rightd, how =
'outer'
)print
(df)
資料:
bunny_id age gender name weight foods
0 1 9 m ada 8 a
1 1 9 m peter 5 a
2 2 9 f tom 4 b
3 2 10 m lee 10 b
4 3 10 m black 5 c
5 3 8 m blue 4 c
6 4 10 m jack 6 d
7 4 10 f yellow 10 d
8 4 7 m green 4 d
9 5 8 f trump 8 e
**:
#以bunny_id做分組彙總資料,預設統計所有列的均值
print
(df.pivot_table(index=
['bunny_id'])
)
結果:
age weight
bunny_id
1 9.0 6.500000
2 9.5 7.000000
3 9.0 4.500000
4 9.0 6.666667
5 8.0 8.000000
由結果可知,由於除了bunny_id這個變數以外,只有age和weight為數值型變數,故pandas計算了age和weight的均值。
**:
#以bunny_id與gender做分組彙總資料,預設統計所有列的最大值
print
(df.pivot_table(index=
['bunny_id'
,'gender'
], aggfunc=
'max'
))
結果:
age foods name weight
bunny_id gender
1 m 9 a peter 8
2 f 9 b tom 4
m 10 b lee 10
3 m 10 c blue 5
4 f 10 d yellow 10
m 10 d jack 6
5 f 8 e trump 8
由結果可知,pandas先按照bunny_id進行分組,再按照gender進行分組。最後對分組結果,分別計算age、foods、name、weight的最大值。
**:
#以bunny_id與gender做分組彙總資料,統計age列的均值
print
(df.pivot_table(index=
['bunny_id'
,'gender'
], values=
['age'])
)
結果:
age
bunny_id gender
1 m 9.0
2 f 9.0
m 10.0
3 m 9.0
4 f 10.0
m 8.5
5 f 8.0
由結果可知,pandas先對bunny_id和gender進行分組,並只顯示age的分組平均值。
**:
#以bunny_id與gender做分組彙總資料,針對weight的每個值列級分組,統計age列的均值。
print
(df.pivot_table(index=
['bunny_id'
,'gender'],
values=
['age'
], columns=
['weight'])
)
結果;
age
weight 4 5 6 8 10
bunny_id gender
1 m nan 9.0 nan 9.0 nan
2 f 9.0 nan nan nan nan
m nan nan nan nan 10.0
3 m 8.0 10.0 nan nan nan
4 f nan nan nan nan 10.0
m 7.0 nan 10.0 nan nan
5 f nan nan nan 8.0 nan
由結果可知,bunny_id和gender的組合作為行,weight作為列,共同構造了二維表,表中值為每個分組中age的平均值,如果對應分組沒有值,則該位置用nan代替。
交叉表(cross-tabulation, 簡稱crosstab)是一種用於計算分組頻率的特殊透視表
# 按照a列的觀測值進行分組,針對不同的b,統計頻數
pd.crosstab(data.a, data.b, margins=
true
)
**:
print
(pd.crosstab(df.gender, df.foods)
)
結果:
foods a b c d e
gender
f 0 1 0 1 1
m 2 1 2 2 0
Part 5 多元函式基礎
設 d subset mathbb n,d not varnothing 如果存在乙個對應法則 f 對每乙個 p x 1,x 2 cdots x n in d 都有唯一的乙個實數 y 與之對應,則稱 f forall p in d mapsto y 是 d 上的 n 元函式,記作 y f p p i...
基本概念 part5
今天我們要正式的開始學習object型別 object型別又稱為物件型別,不僅僅只是在js中有物件型別,其他的語言裡面也有物件型別,但是js中的物件其實就是一組資料和功能的集合,那麼我們要怎麼建立乙個物件呢?new關鍵字就可以創造出來乙個新的物件 這裡想起了乙個段子,程式設計師的物件都是new出來的...
Golang 學習路線 Part 5 常量
這裡是 golang 教程系列的第五部分。請閱讀 golang 教程第四部分 型別以了解 golang 基本型別。常量,一詞在 go 中用來表示固定值,如 5 89 i love go 67.89 等等。參考以下 var a int 50 var b string i love go 在上面的 中,...