網站首頁 編程語言 正文
一、分組原理
核心:
1、不論分組鍵是數組、列表、字典、Series、函數,只要其與待分組變量的軸長度一致都可以傳入groupby進行分組。
2、默認axis=0按行分組,可指定axis=1對列分組。
groupby()語法格式
DataFrame.groupby(by=None, axis=0, level=None, as_index=True, group_keys=True, squeeze=False, observed=False, **kwargs)
groupby原理
groupby就是按XX分組,比如將一個數據集按A進行分組,效果如下
使用groupby實現功能
import numpy as np
import pandas as pd
data = pd.DataFrame({
'name': ['Tom', 'Kaggle', 'Litter', 'Sam', 'Sam', 'Sam'],
'race': ['B', 'C', 'D', 'E', 'B', 'C'],
'age': [37.0, 61.0, 56.0, 87.0, 58.0, 34.0],
'signs_of_mental_illness': [True, True, False, False, False, False]
})
data.groupby('race')
?返回結果如上? 得到一個叫DataFrameGroupBy的東西,pandas不能直接顯示出來 可以調用list顯示出來
groupby()的配合函數 函數?適用場景備注.mean()均值.count()計數.min()最小值.mean().unstack()求均值,聚合表的層次索引不堆疊.size()計算分組大小GroupBy的size方法,將返回一個含有分組大小的Series.apply().agg()
這里演示.mean()和.count()
# mean()
data.groupby('name')['age'].mean()
# count()
data.groupby('name')['age'].count()
data.groupby('age').count()
?也可以根據單鍵多列進行聚合
# 單鍵多列聚合
data.groupby('name')[['race','age',]].count()
?.agg操作 可以取多個函數進行選擇 有時候我們既需要平均值,有需要計數(也可是取一個)
agg為列表
print(data.groupby('name')['age'].agg(['mean']))
print(data.groupby('name')['age'].agg(['mean','count']))
也可以傳入字典,對組內不同列采取不同的操作
print(data.groupby('race').agg({'age': np.median, 'signs_of_mental_illness': np.mean}))
.apply()
可以使用我們自己所創建的函數
print('apply之前')
grouped = data.groupby('name')
for name, group in grouped:
print(name)
print(group)
print('\n')
print('apply之后')
print(data.groupby('name').apply(lambda x: x.head(2)))
?簡單操作基本介紹完成
有時候需要將聚合的另一列放到一起 并且取消鍵的重復值 這個時候可以這樣做
上面是構建的數據,需要對訂購時間進行處理,這里我們是將月份+天數/30,然后對ID列進行去重,并將后面Time列計算的結果放到一起
import numpy as np
import pandas as pd
data = pd.read_excel('訂購時間預測2.xlsx')
def cut_m_d(x):
return round(x.month + x.day / 30, 2)
data['m_d'] = data['Time'].apply(cut_m_d)
grouped = data.groupby('ID')
# 這一步是去重(ID),不去重會出現錯誤
result = grouped['m_d'].unique()
result2 = result.reset_index()
print(result2)
總結
原文鏈接:https://blog.csdn.net/KIKI_ZSH/article/details/118722642
相關推薦
- 2022-09-18 iOS?xcconfig編寫示例教程_IOS
- 2022-03-10 使用.Net6中的WebApplication打造最小API_自學過程
- 2022-05-22 xampp安裝后Apache無法啟動解決辦法_Linux
- 2022-11-05 關于Python?Tkinter?復選框?->Checkbutton_python
- 2023-01-28 GoLang分布式鎖與snowflake雪花算法_Golang
- 2022-10-16 C++的array和&array有什么區別_C 語言
- 2021-12-02 Spring?Boot?分層打包?Docker?鏡像實踐及分析(推薦)_docker
- 2022-04-17 WPF框架Prism中ViewModelLocator用法介紹_基礎應用
- 最近更新
-
- 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同步修改后的遠程分支