0
点赞
收藏
分享

微信扫一扫

Python结构化数据分析工具Pandas之高级应用

五殳师兄 2022-04-23 阅读 51

文章目录

1. 分组与聚合的原理

在Pandas中:
分组是指使用特定的条件将原数据划分多个组

聚合在这里指的是,对每个分组中的数据执行某些操作,最后将计算的结果进行整合。

Pandas分组方式-官方参考文档地址

分组与聚合的过程大概分为以下三步

在这里插入图片描述

分组与聚合的原理
在这里插入图片描述

2. 通过groupby()方法将数据划分成组

groupby(by=None, axis=0, level=None, as_index=True, sort=True,group_keys=True, squeeze=False, observed=False, **kwargs)
  • by:用于确定进行分组的依据
  • axis:表示分组轴的方向
  • sort:表示是否对分组标签进行排序,接收布尔值,默认为True
  • 使用Series调用groupby()方法返回的是SeriesGroupBy对象。
  • 使用DataFrame调用groupby()方法返回的是DataFrameBy对象。
列表或数组DataFrame某列字典或Series对象函数

2.1 按列名进行分组

df.groupby(by='Key')
#<DataFrameGroupBy object at         0x0000000006E274A8>
group_obj = df.groupby('Key')
# 遍历分组对象
for i in group_obj:
              print(i)

2.2 按Series对象进行分组

ser_obj = pd.Series(['a', 'b', 'c', 'a', 'b'])
# 按自定义Series对象进行分组
group_obj = df.groupby(by = ser_obj)

思考:

答:

df = se = pd.Series(['a', 'a', 'b'])
group_obj = df.groupby(se)['one', 'two', 'one','two', 'one'],
                                  'data1': [2, 3, 4, 6, 8],
                                  'data2': [3, 5, 6, 3, 7]})
se = pd.Series(['a', 'a', 'b'])
group_obj = df.groupby(se)

2.3 按字典进行分组

mapping = {'a':'第一组','b':'第二组','c':'第一组','d':'第三组','e':'第二组'}
by_column = num_df.groupby(mapping, axis=1)

2.4 按函数进行分组

# 使用内置函数len进行分组
groupby_obj = df.groupby(len)

3. 数据聚合

3.1 使用内置统计方法聚合数据

# 按key1进行分组,求每个分组的平均值
df.groupby('key1').mean()

3.2 面向列的聚合方法

agg(func,axis = 0,* args,** kwargs )
  • func:表示用于汇总数据的函数,可以为单个函数或函数列表。
  • axis:表示函数作用于轴的方向0index表示将函数应用到每一列;
  • columns表示将函数应用到每一行,该参数的默认值为0

3.3 对每一列数据应用同一个函数

def range_data_group(arr):
      return arr.max()-arr.min()
      # 使用自定义函数聚合分组数据
data_group.agg(range_data_group)  

3.4 对某列数据应用不同的函数

# 对一列数据用两种函数聚合
data_group.agg([range_data_group, sum])

在这里插入图片描述

data_group.agg([("极差", range_data_group), ("和", sum)])

在这里插入图片描述

3.5 对不同列数据应用不同函数

data_group.agg({'a': 'sum', 'b': 'mean', 'c': range_data_group})

4. 分组级运算

4.1 数据转换

思考:

答:

transform(func, *args, **kwargs)
  • 上述方法中只有一个func参数,表示操作Pandas对象的函数。
  • transfrom()方法会把func函数应用到各个分组中,并且将计算结果放在适当的位置上。

4.2 数据应用

apply(func, axis=0, broadcast=None, raw=False, reduce=None,result_type=None, args=(), **kwds)
  • func:表示应用于某一行或某一列的函数
  • axis:表示函数操作的轴向
  • broadcast:表示是否将数据进行广播

5. 总结

主要针对Pandas的分组聚合和其它组内运算进行了介绍,包括分组与聚合的原理分组操作聚合操作,以及其它分组级的相关操作,最后介绍了一个分析运动员基本信息的案例,真实地演示如何运用这些知识。

举报

相关推荐

0 条评论