数据清洗,查看groupby分组数据的几种方法总结
发布于 作者:苏南大叔 来源:程序如此灵动~

目光聚焦到dataframe
数据,在python
中,给数据进行分组的方式就是.groupby()
,得到的数据结果就是的groupby
分组对象,本文主要探讨查看groupby
数据的几种方法。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码经验文章。本文测试环境:python@3.12.3
,pandas@2.2.2
,numpy@1.26.4
。根据不同的数据查看目标,可以分为以下几种数据查看方案。
前置内容
有如下几篇前置阅读内容,有助于帮助你可以更好的理解本文。
- https://newsn.net/say/dataframe-groupby.html
- https://newsn.net/say/pandas-dataframe.html
- https://newsn.net/say/python-tuple.html
本文的龙套数据,依然是苏南大叔的宠物列表。
多重分组
.groupby()
可以设置多个grouby
,比如下面的苏南大叔的宠物数据中,可以这样普通分组。
先按种类进行分类,再按年龄进行分类。
但是,下面的写法是错误的!!!
数据查看
.groupby()
的返回值是个pandas.core.groupby.generic.DataFrameGroupBy
对象。如果想要查看里面的数据的话,需要对它进行循环。例如:
输出:
多重分组的输出结果中,可以看到组名产生了很大的变化,从字符串变成了元组数据:
查看特定组数据
从上面的数据输出,可以看到:一共分成了两个组:“猫”和“狗”。那么,可以明确的指明要查看的数据:
输出:
多重分组的时候,组名就是个元组了。
输出:
.first()
和.last()
每组被分组的数据,都有第一条和最后一条。那么,
分离出每组数据的第一条数据就是.first()
操作。
输出:
分离出每组数据的最后一条数据就是.last()
操作。
输出:
多重分组的情况下,测试数据:
输出:
对于某些特殊情况下,这种.first()
和.last()
还是很好用的,不过确实有丢失数据的危险。
.head(n) 和 .tail(n)【不推荐】
可以设置n
为一个特别大的值,以期待输出所有数据。
输出:
这个数据输出虽然确实得到了全部数据,完全丢失了分组效果,所以不推荐。
获取dataframe
的条数的方式,使用len(df)
或者df.shape[0]
。
.reset_index()
重置索引
groupby
对象,是无法重置索引的。
输出:
但是每一个分组可以。
输出:
强转为dataframe
groupby
虽然不可以直接查看,但是dataframe
可以。所以,可以强制转化为dataframe
类型,再进行查看。
输出:
很奇特的数据输出。
结束语
本文存在的更多意义在于:重温数据清洗的过程中的数据分组操作,并对其加深更多的认识。特别是如何查看分组数据的方法,进行了深入总结。更多苏南大叔的python
文章,请参考:


