脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - Pandas实现groupby分组统计的实践

Pandas实现groupby分组统计的实践

2022-08-27 10:50梦捷者 Python

本文主要介绍了Pandas实现groupby分组统计的实践,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

类似SQL:
select city,max(temperature) from city_weather group by city;

groupby:先对数据分组,然后在每个分组上应用聚合函数、转换函数

本次演示:
一、分组使用聚合函数做数据统计
二、遍历groupby的结果理解执行流程
三、实例分组探索天气数据

1、创建数据和导入包

?
1
2
3
4
5
6
7
8
9
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,查询所有数据列的统计

?
1
df.groupby('A').sum()

groupby中的’A’变成了数据的索引列
因为要统计sum,但B列不是数字,所以被自动忽略掉

2、多个列groupby,查询所有数据列的统计

?
1
df.groupby(['A','B']).mean()

我们看到:(‘A’,‘B’)成对变成了二级索引

?
1
df.groupby(['A','B'], as_index=False).mean() #这会使得A、B两列不会成为二级索引

3、同时查看多种数据统计

?
1
df.groupby('A').agg([np.sum, np.mean, np.std])#列变成了多级索引

4、查看单列的结果数据统计

?
1
2
3
4
5
# 方法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、不同列使用不同的聚合函数

?
1
df.groupby('A').agg({"C":np.sum, "D":np.mean})

3、遍历groupby的结果理解执行流程

for循环可以直接遍历每个group

1、遍历单个列聚合的分组

?
1
2
3
4
5
g = df.groupby('A')
 
for name,group in g:
    print(name)
    print(group)

可以获取单个分组的数据

?
1
g.get_group('bar')

2、遍历多个列聚合的分组

?
1
2
3
4
5
g = df.groupby(['A', 'B'])
for name,group in g:
    print(name)
    print(group)
    print()

name是一个2个元素的tuple,代表不同的列

?
1
g.get_group(('foo', 'one'))#可以获取单个分组的数据

可以直接查询group后的某几列,生成Series或者子DataFrame

?
1
2
3
4
5
6
7
g['C']
 
for name, group in g['C']:
    print(name)
    print(group)
    print(type(group))
    print()

其实所有的聚合统计,都是在dataframe和series上进行的

4、实例分组探索天气数据

?
1
2
3
4
5
6
7
8
9
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、查看每个月的最高温度

?
1
2
3
data = df.groupby('month')['bWendu'].max()
data
data.plot()#绘图

2、查看每个月的最高温度、最低温度、平均空气质量指数

?
1
2
group_data = df.groupby('month').agg({"bWendu":np.max, "yWendu":np.min, "aqi":np.mean})
group_data.plot()

到此这篇关于Pandas实现groupby分组统计的实践的文章就介绍到这了,更多相关Pandas groupby分组统计内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/qq_41706810/article/details/105960139

延伸 · 阅读

精彩推荐
  • Python三个Python自动化办公好用到爆的模块分享

    三个Python自动化办公好用到爆的模块分享

    本文小编来给大家推荐几个在自动化办公领域当中非常好用的Python模块,可以帮助大家在工作当中及大地提高效率,避免重复机械化地操作流程...

    俊欣4252022-07-28
  • Pythondjango允许外部访问的实例讲解

    django允许外部访问的实例讲解

    今天小编就为大家分享一篇django允许外部访问的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    中国男人的骄傲8432021-02-21
  • PythonPython标准库shutil用法实例详解

    Python标准库shutil用法实例详解

    这篇文章主要介绍了Python标准库shutil用法,结合实例形式分析了shutil库针对文件与文件夹各种常见操作技巧与相关使用注意事项,需要的朋友可以参考下...

    喷跑的豆子12642021-03-27
  • PythonPython字符串中查找子串小技巧

    Python字符串中查找子串小技巧

    这篇文章主要介绍了Python字符串中查找子串小技巧,,需要的朋友可以参考下 ...

    脚本之家18062020-06-03
  • Python详解Open Folder as PyCharm Project怎么添加的方法

    详解Open Folder as PyCharm Project怎么添加的方法

    这篇文章主要介绍了详解Open Folder as PyCharm Project怎么添加的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需...

    ElTarget10372021-08-19
  • PythonPython提取Word中图片的实现步骤

    Python提取Word中图片的实现步骤

    本文主要介绍了Python提取Word中图片的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随...

    Jayce~7992022-07-19
  • Pythondjango 删除数据库表后重新同步的方法

    django 删除数据库表后重新同步的方法

    今天小编就为大家分享一篇django 删除数据库表后重新同步的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    T_world5462021-02-25
  • Python解读python logging模块的使用方法

    解读python logging模块的使用方法

    logging模块是Python内置的标准模块,这篇文章主要介绍了解读python logging模块的使用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟...

    dahu的菜园子3622021-02-01