python 的 groupby() 函式和sql中的很像,都是聚類函式,按照一定的function將一組資料集合成乙個group,返回成series。
groupby 函式的基本理念
paste_image.png
groupby 具體函式
series.groupby(*by=none*, *axis=0*, *level=none*, *as_index=true*, *sort=true*, *group_keys=true*, *squeeze=false*, ***kwargs*)
函式的具體解釋
groupby split 階段
1. split by row
grouped = df['data'].groupby(df['key'])
2. split by column
import pandas as pd
traffic=pd.read_csv("test.csv")
3. index split
多重列index
columns = pd.multiindex.from_arrays([['us','us','us','jp','jp'],[1,3,5,1,3]],names=['cty','tenor'])
hier_df = dataframe(np.random.randn(4,5),columns=columns)
print(hier_df)
print(hier_df.groupby(level='tenor',axis=1).count())
多重行index
traffic1=traffic.set_index(['week','weektype'])
print(traffic1)
print(traffic1.groupby(level='weektype').count())
4.function split
目前還沒想到什麼好的應用場景,只能先舉書中的例子了
people = dataframe(np.random.randn(5,5),columns=['a','b','c','d','e'],
index=['li','zhao','qian','sun','zhou'])
print(people)
print(people.groupby(len).sum())
aggregation
將乙個維度的陣列降至乙個數值的情況
1.經常用在groupby 型別中的函式
paste_image.png
2.自定義函式
def peak_to_peak(arr):
return arr.max()-arr.min()
grouped = people.groupby(len)
print(grouped.agg(peak_to_peak))
3.多函式應用
(1) 單排資料多函式~復合index形式
tips=pd.read_csv("tips.csv")
print(tips)
tips['tip_pct']=tips['tip']/tips['total_bill']
print(tips[:6])
grouped =tips.groupby(['***','smoker']) #用***、smoker分組
grouped_pct=grouped['tip_pct']
print(grouped_pct.agg('mean')) # 取均值of tip_pct
print(grouped_pct.agg([('foo','mean'),('bar',np.std)])) # 平均值列為foo,標準差列為bar
(2)多排資料多函式
functions =['count','mean','max']~復合index形式
result = grouped['tip_pct','total_bill'] # 取tip_pct 和 total_bill兩個列取多個函式
print(result.agg(functions))
print(grouped.agg()) # tip_pct取多個函式,size取sum
(3) 單index形式
print(tips.groupby(['***','smoker'],as_index=false).mean())
transform
transform 將乙個函式應用於每個組,並將結果放置在相應的位置上。適用可傳播的函式比如mean,或者transform之後和原來的frame有相同的大小
df1=df.groupby('key').transform(np.mean)
df2=df.groupby('key').mean()
print(df1)
print(df2)
df:|data |key
0 |0 |a
1 |5 |b
2 |10 |c
3 |5 |a
4 |10 |b
5 |15 |c
6 |10 |a
7 |15 |b
8 |20 |c
df.groupby('key').transform(np.mean)
index
data
df.groupby('key').mean()
index
data
keyabc
def top(df,n=5,column='tip_pct'):
return df.sort_values(by=column)[-n:]
print(top(tips,n=6))
##print(tips.groupby('smoker').agg(top))
f = lambda x:x.describe()
pivot tables and cross-tabulation
pivot tables 類似excel中的資料透視表,思路什麼的完全一致。
print(tips.pivot_table('size',index=['time','***','smoker'],columns='day',aggfunc='sum',fill_value=0,margins=true))
#橫軸為time,***,smoker ,縱軸為day,算size總和,如果為空,填0,同時算總和
paste_image.png
flash單選題教程
前言 1 寫本教程得到了 終極討厭 老師的大力幫助,在此表示感謝!2 初學者寫的教程面向初學者,讓我們成為高手吧!效果 步驟 第一步 在主場景中從下到上依次建立幾個圖層 背景 標題 題目 答案顯示 答案按鈕 成績 判斷 交卷 動作 背景 標題 題目 圖層中設定較簡單,這裡不再敘述 第二步 在 答案顯...
ipo模型python Python單選題 一
python版本的年份是 a 1991 b 1998 c 2002 d 2008 2 以下關於python語言中 縮排 說法正確的是 a 縮排是程式中長度統一且強制使用 b 縮排是非強制的,僅為了提高 可讀性 c 縮排可以用在任何語句之後,表示語句間的包含關係 d 縮排統一為四個空格 3 以下不屬於...
HCIA Kunpeng認證(一) 單選題
a 支援neokylin server v5.0 u5 b 支援neokylin server v4.0 u4 c kylin server v5.0 u5 d kylin server v4.0 u4 a 國產化,自主安全可控 b 多物理核心,併發效能高 c 低功耗,綠色節能 d 生態完備,上層應...