Pandas基础之groupby

学习过数据库系统原理的的小伙伴们应该对groupby函数有一定的了解,groupby根据指定的属性对数据进行分组聚合

类似SQL: select student,sum(grade) from stu_grade group by student

groupby 先对数据进行分组,之后在每个分组上使用聚合函数、转换函数

这次使用的数据依旧是前面操作使用过的天气csv文件,没有办法给宝子们粘贴了,宝子们可以自己创造一点数据进行操作练习。每天学习一点点,最后会有大收获。大家加油哦!

import pandas as pd
import datetime as dt
fpath="D:/weather_20230115134249.xls"
data=pd.read_csv(fpath)
print(data)
print('-'*80)
#取出20条数据
data1=data.head(20)
print(data1)
#根据索引的奇偶进行聚合
print('-'*80)
data_index=data1.groupby(data1.index%2==0)['气温(度)'].sum()
print(data_index)
print('-'*80)
#根据城市的第一个字聚合
data_city=data1.groupby(data1.城市.str[0])[['行政区','气温(度)']].sum()
print(data_city.head())
print('-'*80)
data_city1=data1.groupby(data1.城市.isin(['新北市','南投縣']))[['相对湿度(%)']].sum()
print(data_city1)
print('-'*80)
#使用agg函数
dict_data={'气温(度)':'max','相对湿度(%)':'count','累积雨量(mm)':'sum'}
data_agg=data1.groupby('城市').agg(dict_data)
print(data_agg)
print('-'*80)
#取出data的前120条数据
data2=pd.read_csv(fpath)
data3=data2.head(120)
print(data3)
print('-'*80)
data3['日期1']=pd.to_datetime(data3['日期'])
print(data3)
print('-'*80)
data3_month=data3.groupby([data3.日期1.dt.month])['气温(度)'].min()
print(data3_month)
#根据观测站的字数分类
print('-'*80)
data4=pd.read_csv(fpath,index_col="观测站").head(20)
data_len=data4.groupby(len)[['气温(度)']].max()
print(data_len)

运行结果:

D:\Python\p\Scripts\python.exe "D:\Python\python-learning\数据分析(二)\分组聚合.py" 
             日期   城市  行政区  观测站  气温(度)  相对湿度(%)  累积雨量(mm)
0    2015-01-01  新北市  烏來區   福山  13.7℃       92       0.0
1    2015-01-02  臺南市  安平區   安平  23.5℃       70       0.0
2    2015-01-03  臺東縣  東河鄉  七塊厝  19.6℃       86       0.0
3    2015-01-04  新北市  貢寮區   福隆  14.2℃       96     -99.0
4    2015-01-05  南投縣  仁愛鄉  小奇萊   8.3℃       57       0.0
..          ...  ...  ...  ...    ...      ...       ...
479  2016-04-24  新北市  板橋區   板橋  15.6℃       73       5.0
480  2016-04-25  宜蘭縣  大同鄉  翠峰湖   7.8℃      100       0.0
481  2016-04-26  花蓮縣  壽豐鄉   大坑  15.7℃       94       0.0
482  2016-04-27  新竹縣  五峰鄉   雪霸  15.7℃       62       0.0
483  2016-04-28  桃園市  大溪區   大溪  14.8℃       77       8.0

[484 rows x 7 columns]
--------------------------------------------------------------------------------
            日期   城市  行政区    观测站  气温(度)  相对湿度(%)  累积雨量(mm)
0   2015-01-01  新北市  烏來區     福山  13.7℃       92       0.0
1   2015-01-02  臺南市  安平區     安平  23.5℃       70       0.0
2   2015-01-03  臺東縣  東河鄉    七塊厝  19.6℃       86       0.0
3   2015-01-04  新北市  貢寮區     福隆  14.2℃       96     -99.0
4   2015-01-05  南投縣  仁愛鄉    小奇萊   8.3℃       57       0.0
5   2015-01-06  嘉義縣  大林鎮     大林  23.2℃       63       0.0
6   2015-01-07  花蓮縣  玉里鎮     玉里  18.5℃       85       0.0
7   2015-01-08  嘉義市   東區  嘉義市東區    25℃       64       0.0
8   2015-01-09  宜蘭縣  頭城鎮    龜山島    12℃      100       0.5
9   2015-01-10  新北市  平溪區    火燒寮  12.3℃      100       2.5
10  2015-01-11  彰化縣  大城鄉     三豐  17.4℃       81       0.0
11  2015-01-12  雲林縣  斗六市     斗六    23℃       58       0.0
12  2015-01-13  南投縣  魚池鄉     魚池  26.3℃       50       0.0
13  2015-01-14  臺東縣  海端鄉     向陽  16.3℃       71       0.0
14  2015-01-15  屏東縣  竹田鄉     竹田  26.7℃       80       0.0
15  2015-01-16  苗栗縣  造橋鄉     造橋   -99℃    -9900     -99.0
16  2015-01-17  新北市  石門區    白沙灣  13.7℃       90       8.5
17  2015-01-18  苗栗縣  頭屋鄉     明德    17℃       65     -99.0
18  2015-01-19  臺南市  下營區     下營  26.2℃       58       0.0
19  2015-01-20  屏東縣  萬丹鄉     萬丹    27℃       62       0.0
--------------------------------------------------------------------------------
False          23.5℃14.2℃23.2℃25℃12.3℃23℃16.3℃-99℃17℃27℃
True     13.7℃19.6℃8.3℃18.5℃12℃17.4℃26.3℃26.7℃13.7℃26.2℃
Name: 气温(度), dtype: object
--------------------------------------------------------------------------------
       行政区      气温(度)
城市                   
南   仁愛鄉魚池鄉  8.3℃26.3℃
嘉    大林鎮東區   23.2℃25℃
宜      頭城鎮        12℃
屏   竹田鄉萬丹鄉   26.7℃27℃
彰      大城鄉      17.4℃
--------------------------------------------------------------------------------
       相对湿度(%)
城市            
False    -8957
True       485
--------------------------------------------------------------------------------
     气温(度)  相对湿度(%)  累积雨量(mm)
城市                           
南投縣   8.3℃        2       0.0
嘉義市    25℃        1       0.0
嘉義縣  23.2℃        1       0.0
宜蘭縣    12℃        1       0.5
屏東縣    27℃        2       0.0
彰化縣  17.4℃        1       0.0
新北市  14.2℃        4     -88.0
臺南市  26.2℃        2       0.0
臺東縣  19.6℃        2       0.0
花蓮縣  18.5℃        1       0.0
苗栗縣    17℃        2    -198.0
雲林縣    23℃        1       0.0
--------------------------------------------------------------------------------
D:\Python\python-learning\数据分析(二)\分组聚合.py:32: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  data3['日期1']=pd.to_datetime(data3['日期'])
             日期   城市  行政区  观测站  气温(度)  相对湿度(%)  累积雨量(mm)
0    2015-01-01  新北市  烏來區   福山  13.7℃       92       0.0
1    2015-01-02  臺南市  安平區   安平  23.5℃       70       0.0
2    2015-01-03  臺東縣  東河鄉  七塊厝  19.6℃       86       0.0
3    2015-01-04  新北市  貢寮區   福隆  14.2℃       96     -99.0
4    2015-01-05  南投縣  仁愛鄉  小奇萊   8.3℃       57       0.0
..          ...  ...  ...  ...    ...      ...       ...
115  2015-04-26  宜蘭縣  員山鄉   內城  16.3℃       83       0.0
116  2015-04-27  花蓮縣  秀林鄉   和平    19℃       71       0.0
117  2015-04-28  臺中市  潭子區   潭子  22.4℃       64       0.0
118  2015-04-29  屏東縣  車城鄉   保力  23.3℃       72       0.0
119  2015-04-30  新北市  淡水區  六塊厝  13.4℃       94      19.5

[120 rows x 7 columns]
--------------------------------------------------------------------------------
             日期   城市  行政区  观测站  气温(度)  相对湿度(%)  累积雨量(mm)        日期1
0    2015-01-01  新北市  烏來區   福山  13.7℃       92       0.0 2015-01-01
1    2015-01-02  臺南市  安平區   安平  23.5℃       70       0.0 2015-01-02
2    2015-01-03  臺東縣  東河鄉  七塊厝  19.6℃       86       0.0 2015-01-03
3    2015-01-04  新北市  貢寮區   福隆  14.2℃       96     -99.0 2015-01-04
4    2015-01-05  南投縣  仁愛鄉  小奇萊   8.3℃       57       0.0 2015-01-05
..          ...  ...  ...  ...    ...      ...       ...        ...
115  2015-04-26  宜蘭縣  員山鄉   內城  16.3℃       83       0.0 2015-04-26
116  2015-04-27  花蓮縣  秀林鄉   和平    19℃       71       0.0 2015-04-27
117  2015-04-28  臺中市  潭子區   潭子  22.4℃       64       0.0 2015-04-28
118  2015-04-29  屏東縣  車城鄉   保力  23.3℃       72       0.0 2015-04-29
119  2015-04-30  新北市  淡水區  六塊厝  13.4℃       94      19.5 2015-04-30

[120 rows x 8 columns]
--------------------------------------------------------------------------------
日期1
1     -99℃
2     -99℃
3    11.1℃
4    13.4℃
Name: 气温(度), dtype: object
--------------------------------------------------------------------------------
    气温(度)
观测站      
2     27℃
3    8.3℃
5     25℃

进程已结束,退出代码为 0

注意:运行结果中有一处提示警告,但是我查询了很多资料也没有解决,如果宝宝们找到了合适的解决方法,欢迎评论,我会及时查看学习,谢谢大家。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值