網站首頁 編程語言 正文
Python Pandas聚合函數
在前一節,我們重點介紹了窗口函數。我們知道,窗口函數可以與聚合函數一起使用,聚合函數指的是對一組數據求總和、最大值、最小值以及平均值的操作,本節重點講解聚合函數的應用。
應用聚合函數
首先讓我們創建一個 DataFrame 對象,然后對聚合函數進行應用。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5, 4),index = pd.date_range('12/14/2020', periods=5),columns = ['A', 'B', 'C', 'D'])
print (df)
#窗口大小為3,min_periods 最小觀測值為1
r = df.rolling(window=3,min_periods=1)
print(r)
輸出結果:
? ? ? ? ? ? ? ? ? ?A ? ? ? ? B ? ? ? ? C ? ? ? ? D
2020-12-14 ?0.941621 ?1.205489 ?0.473771 -0.348169
2020-12-15 -0.276954 ?0.076387 ?0.104194 ?1.537357
2020-12-16 ?0.582515 ?0.481999 -0.652332 -1.893678
2020-12-17 -0.286432 ?0.923514 ?0.285255 -0.739378
2020-12-18 ?2.063422 -0.465873 -0.946809 ?1.590234Rolling [window=3,min_periods=1,center=False,axis=0]
1) 對整體聚合
您可以把一個聚合函數傳遞給 DataFrame,示例如下:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5, 4),index = pd.date_range('12/14/2020', periods=5),columns = ['A', 'B', 'C', 'D'])
print (df)
#窗口大小為3,min_periods 最小觀測值為1
r = df.rolling(window=3,min_periods=1)
#使用 aggregate()聚合操作
print(r.aggregate(np.sum))
輸出結果:
? ? ? ? ? ? ?A ? ? ? ? B ? ? ? ? C ? ? ? ? D
2020-12-14 ?0.133713 ?0.746781 ?0.499385 ?0.589799
2020-12-15 -0.777572 ?0.531269 ?0.600577 -0.393623
2020-12-16 ?0.408115 -0.874079 ?0.584320 ?0.507580
2020-12-17 -1.033055 -1.185399 -0.546567 ?2.094643
2020-12-18 ?0.469394 -1.110549 -0.856245 ?0.260827? ? ? ? ? ? ? ? ? ?A ? ? ? ? B ? ? ? ? C ? ? ? ? D
2020-12-14 ?0.133713 ?0.746781 ?0.499385 ?0.589799
2020-12-15 -0.643859 ?1.278050 ?1.099962 ?0.196176
2020-12-16 -0.235744 ?0.403971 ?1.684281 ?0.703756
2020-12-17 -1.402513 -1.528209 ?0.638330 ?2.208601
2020-12-18 -0.155546 -3.170027 -0.818492 ?2.863051
2) 對任意某一列聚合
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5, 4),index = pd.date_range('12/14/2020', periods=5),columns = ['A', 'B', 'C', 'D'])
#窗口大小為3,min_periods 最小觀測值為1
r = df.rolling(window=3,min_periods=1)
#對 A 列聚合
print(r['A'].aggregate(np.sum))
輸出結果:
2020-12-14 ? ?1.051501
2020-12-15 ? ?1.354574
2020-12-16 ? ?0.896335
2020-12-17 ? ?0.508470
2020-12-18 ? ?2.333732
Freq: D, Name: A, dtype: float64
3) 對多列數據聚合
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5, 4),index = pd.date_range('12/14/2020', periods=5),columns = ['A', 'B', 'C', 'D'])
#窗口大小為3,min_periods 最小觀測值為1
r = df.rolling(window=3,min_periods=1)
#對 A/B 兩列聚合
print(r['A','B'].aggregate(np.sum))
輸出結果:
? ? ? ? ? ? ? ? ? A ? ? ? ? B
2020-12-14 ?0.639867 -0.229990
2020-12-15 ?0.352028 ?0.257918
2020-12-16 ?0.637845 ?2.643628
2020-12-17 ?0.432715 ?2.428604
2020-12-18 -1.575766 ?0.969600
4) 對單列應用多個函數
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5, 4),index = pd.date_range('12/14/2020', periods=5),columns = ['A', 'B', 'C', 'D'])
#窗口大小為3,min_periods 最小觀測值為1
r = df.rolling(window=3,min_periods=1)
#對 A/B 兩列聚合
print(r['A','B'].aggregate([np.sum,np.mean]))
輸出結果:
? ? ? ? ? ? ? ? ?sum ? ? ?mean
2020-12-14 -0.469643 -0.469643
2020-12-15 -0.626856 -0.313428
2020-12-16 -1.820226 -0.606742
2020-12-17 -2.007323 -0.669108
2020-12-18 -0.595736 -0.198579
5) 對不同列應用多個函數
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5, 4),
index = pd.date_range('12/11/2020', periods=5),
columns = ['A', 'B', 'C', 'D'])
r = df.rolling(window=3,min_periods=1)
print( r['A','B'].aggregate([np.sum,np.mean]))
輸出結果:
? ? ? ? ? ? ? ? ? ?A ? ? ? ? ? ? ? ? ? B ? ? ? ??
? ? ? ? ? ? ? ? ?sum ? ? ?mean ? ? ? sum ? ? ?mean
2020-12-14 -1.428882 -1.428882 -0.417241 -0.417241
2020-12-15 -1.315151 -0.657576 -1.580616 -0.790308
2020-12-16 -2.093907 -0.697969 -2.260181 -0.753394
2020-12-17 -1.324490 -0.441497 -1.578467 -0.526156
2020-12-18 -2.400948 -0.800316 -0.452740 -0.150913
6) 對不同列應用不同函數
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(3, 4),
index = pd.date_range('12/14/2020', periods=3),
columns = ['A', 'B', 'C', 'D'])
r = df.rolling(window=3,min_periods=1)
print(r.aggregate({'A': np.sum,'B': np.mean}))
輸出結果:
? ? ? ? ? ? ? ? A ? ? ? ? B
2020-12-14 ?0.503535 -1.301423
2020-12-15 ?0.170056 -0.550289
2020-12-16 -0.086081 -0.140532
總結
原文鏈接:https://ruikezhishiyun.blog.csdn.net/article/details/124270681
相關推薦
- 2022-11-18 Redis?存儲對象信息用?Hash?和String的區別_Redis
- 2023-07-26 TypeScript中的對象類型(可選屬性 只讀屬性 交叉類型)
- 2022-03-15 go: unknown environment setting GO111MODULE=no
- 2022-05-28 Entity?Framework?Core表名映射_實用技巧
- 2022-04-01 Android實現字母導航控件的示例代碼_Android
- 2022-12-01 Entity?Framework使用DBContext實現增刪改查_實用技巧
- 2022-12-24 Kubernetes?kubectl中Pod創建流程源碼解析_云和虛擬化
- 2022-07-21 CSS復合型寫法
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支