網站首頁 編程語言 正文
類似SQL:
select city,max(temperature) from city_weather group by city;
groupby:先對數據分組,然后在每個分組上應用聚合函數、轉換函數
本次演示:
一、分組使用聚合函數做數據統計
二、遍歷groupby的結果理解執行流程
三、實例分組探索天氣數據
1、創建數據和導入包
import pandas as pd import numpy as np # 加上這一句,能在jupyter notebook展示matplot圖表 %matplotlib inline df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'], ? ? ? ? ? ? ? ? ? ?'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'], ? ? ? ? ? ? ? ? ? ?'C': np.random.randn(8), ? ? ? ? ? ? ? ? ? ?'D': np.random.randn(8)})
2、分組使用聚合函數做數據統計
1、單個列groupby,查詢所有數據列的統計
df.groupby('A').sum()
groupby中的’A’變成了數據的索引列
因為要統計sum,但B列不是數字,所以被自動忽略掉
2、多個列groupby,查詢所有數據列的統計
df.groupby(['A','B']).mean()
我們看到:(‘A’,‘B’)成對變成了二級索引
df.groupby(['A','B'], as_index=False).mean() #這會使得A、B兩列不會成為二級索引
3、同時查看多種數據統計
df.groupby('A').agg([np.sum, np.mean, np.std])#列變成了多級索引
4、查看單列的結果數據統計
# 方法1:預過濾,性能更好 df.groupby('A')['C'].agg([np.sum, np.mean, np.std]) # 方法2 df.groupby('A').agg([np.sum, np.mean, np.std])['C']
5、不同列使用不同的聚合函數
df.groupby('A').agg({"C":np.sum, "D":np.mean})
3、遍歷groupby的結果理解執行流程
for循環可以直接遍歷每個group
1、遍歷單個列聚合的分組
g = df.groupby('A') for name,group in g: ? ? print(name) ? ? print(group)
可以獲取單個分組的數據
g.get_group('bar')
2、遍歷多個列聚合的分組
g = df.groupby(['A', 'B']) for name,group in g: ? ? print(name) ? ? print(group) ? ? print()
name是一個2個元素的tuple,代表不同的列
g.get_group(('foo', 'one'))#可以獲取單個分組的數據
可以直接查詢group后的某幾列,生成Series或者子DataFrame
g['C'] for name, group in g['C']: ? ? print(name) ? ? print(group) ? ? print(type(group)) ? ? print()
其實所有的聚合統計,都是在dataframe和series上進行的
4、實例分組探索天氣數據
fpath = "./datas/beijing_tianqi/beijing_tianqi_2018.csv" df = pd.read_csv(fpath) # 替換掉溫度的后綴℃ df.loc[:, "bWendu"] = df["bWendu"].str.replace("℃", "").astype('int32') df.loc[:, "yWendu"] = df["yWendu"].str.replace("℃", "").astype('int32') df.head() # 新增一列為月份 df['month'] = df['ymd'].str[:7] df.head()
1、查看每個月的最高溫度
data = df.groupby('month')['bWendu'].max() data data.plot()#繪圖
2、查看每個月的最高溫度、最低溫度、平均空氣質量指數
group_data = df.groupby('month').agg({"bWendu":np.max, "yWendu":np.min, "aqi":np.mean}) group_data.plot()
原文鏈接:https://blog.csdn.net/qq_41706810/article/details/105960139
相關推薦
- 2021-12-29 CentOS系統rpm安裝Nginx和配置_nginx
- 2022-09-14 Python深入淺出分析enum枚舉類_python
- 2022-07-26 Assertion failed: cond.is_weights() && con
- 2022-08-25 C語言詳細分析結構體的內存對齊規則_C 語言
- 2022-02-17 URLError和HTTPError基礎用法
- 2022-12-08 C語言如何實現成績等級判別_C 語言
- 2021-12-16 .NET?Core配置TLS?Cipher(套件)的詳細過程_實用技巧
- 2022-04-08 C++中左值和右值的區別詳解_C 語言
- 最近更新
-
- 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同步修改后的遠程分支