数据分组技术GroupBy和聚合技术Aggregation

数据准备


数据分组技术GroupBy和聚合技术Aggregation

这里事先准备了一个city_weather.csv文件,其中包括四行:日期、城市、温度、风力。它的大小为20行。

按列分组


加入这里按照city这一列进行分组:
数据分组技术GroupBy和聚合技术Aggregation

通过groupby方法指定列进行分组,最后得到一个DataFrameGroupBy 类型的对象,可以对这个对象进行后续的操作。

查看分组信息

groups方法可以查看DataFrameGroupBy 对象的分组信息:
数据分组技术GroupBy和聚合技术Aggregation

它返回了根据city分组后的所有的组,以及这个组所在的索引值。

查看某一个分组

get_group可以指定一个分组的名称查看一个分组的具体信息:
数据分组技术GroupBy和聚合技术Aggregation

他相当于把city为BJ的行都过滤出来,并形成了一个新的dataframe

分组计算

求平均值

数据分组技术GroupBy和聚合技术Aggregation

这里将BJ的所有行过滤出来并计算得到了温度和风力两列的平均值

还可以直接对g这个对象求平均值,将得到一个新的dataframe,包括所有城市的温度和分离的平均值:
数据分组技术GroupBy和聚合技术Aggregation

最大最小值

数据分组技术GroupBy和聚合技术Aggregation

分组对象转化为列表和字典

转换成列表的话直接通过list方法就可以,然后每一个分组就是字典中的一个元素:
数据分组技术GroupBy和聚合技术Aggregation

转换成字典需要先通过list转换成列表然后通过dict转换成字典,其中key就是分组指定的依据(city),value是一个dataframe:
数据分组技术GroupBy和聚合技术Aggregation
数据分组技术GroupBy和聚合技术Aggregation

遍历DataFrameGroupBy对象中的数据:

数据分组技术GroupBy和聚合技术Aggregation

GroupBy的操作过程


以区平均值为例:

GroupBy对一个group中的某一组取平均值,得到的结果为series,而对整个分组对象取平均值,得到的是dataframe。所以对整个分组对象取平均值的过程就是分别对每一组取平均值然后combine。
数据分组技术GroupBy和聚合技术Aggregation

数据聚合Aggregation


可以通过agg方法传入需要使用的聚合的函数,来对数据进行聚合:
数据分组技术GroupBy和聚合技术Aggregation

也可以通过传入自定义的聚合函数来得到聚合的结果:
数据分组技术GroupBy和聚合技术Aggregation