资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

python更新聚合函数 numpy聚合函数

Python分组

前言分组原理

成都创新互联公司主要从事做网站、网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务沙坡头,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792

核心:

1.不论分组键是数组、列表、字典、Series、函数,只要其与待分组变量的轴长度一致都可以传入groupby进行分组。

2.默认axis=0按行分组,可指定axis=1对列分组。

对数据进行分组操作的过程可以概括为:split-apply-combine三步:

1.按照键值(key)或者分组变量将数据分组。

2.对于每组应用我们的函数,这一步非常灵活,可以是python自带函数,可以是我们自己编写的函数。

3.将函数计算后的结果聚合。

1 分组模式及其对象

1.1 分组的一般模式

三个要素:分组依据、数据来源、操作及其返回结果

df.groupby(分组依据)[数据来源].使用操作

1.2 分组依据的本质

1.3Groupby 对象

通过 ngroups 属性,可以访问分为了多少组:

通过 groups 属性,可以返回从 组名映射到 组索引列表的字典:

当 size 作为 DataFrame 的属性时,返回的是表长乘以表宽的大小,但在 groupby 对象上表示统计每个组的 元素个数:

通过 get_group 方法可以直接获取所在组对应的行,此时必须知道组的具体名字:

1.4 分组的三大操作

分组的三大操作:聚合、变换和过滤

2.聚合函数

2.1内置聚合函数

包括如下函数: max/min/mean/median/count/all/any/idxmax/idxmin/mad/nunique/skew/quantile/sum/std/var/sem/size/prod

2.2agg 方法

【a】使用多个函数

当使用多个聚合函数时,需要用列表的形式把内置聚合函数的对应的字符串传入,先前提到的所有字符串都是合法的。

【b】对特定的列使用特定的聚合函数

对于方法和列的特殊对应,可以通过构造字典传入 agg 中实现,其中字典以列名为键,以聚合字符串或字符串列表为值。

【c】使用自定义函数

在 agg 中可以使用具体的自定义函数,需要注意传入函数的参数是之前数据源中的列,逐列进行计算

【d】聚合结果重命名 如果想要对结果进行重命名,只需要将上述函数的位置改写成元组,元组的第一个元素为新的名字,第二个位置为原来的函数,包括聚合字符串和自定义函数

3 变换和过滤

3.1 变换函数与 transform 方法

变 换 函 数 的 返 回 值 为 同 长 度 的 序 列, 最 常 用 的 内 置 变 换 函 数 是 累 计 函 数:cum- count/cumsum/cumprod/cummax/cummin ,它们的使用方式和聚合函数类似,只不过完成的是组内 累计操作。

3.2 组索引与过滤

过滤在分组中是对于组的过滤,而索引是对于行的过滤

组过滤作为行过滤的推广,指的是如果对一个组的全体所在行进行统计的结果返回 True 则会被保留,False 则该组会被过滤,最后把所有未被过滤的组其对应的所在行拼接起来作为 DataFrame 返回。

在 groupby 对象中,定义了 filter 方法进行组的筛选,其中自定义函数的输入参数为数据源构成的 DataFrame 本身,在之前例子中定义的 groupby 对象中,传入的就是 df[['Height', 'Weight']] ,因此所有表方法和属性 都可以在自定义函数中相应地使用,同时只需保证自定义函数的返回为布尔值即可。

4 跨列分组

4.1 apply 的引入

4.2 apply 的使用

在设计上,apply 的自定义函数传入参数与 filter 完全一致,只不过后者只允许返回布尔值

【a】标量情况:结果得到的是 Series ,索引与 agg 的结果一致

【b】Series 情况:得到的是 DataFrame ,行索引与标量情况一致,列索引为 Series 的索引

【c】DataFrame 情况:得到的是 DataFrame ,行索引最内层在每个组原先 agg 的结果索引上,再加一层返 回的 DataFrame 行索引,同时分组结果 DataFrame 的列索引和返回的 DataFrame 列索引一致

Windows下如何更新python?

首先查看python当前版本,在此用win10 系统举例:

查看当前python版本

⌘+ R ---- 输入 cmd(回车)---- 输入python 查看

2.卸载当前python

全部程序中,找到python当前版本(带有32/64bit的图标),右键卸载,点击uninstall,等待

3.安装最新版本的python

打开python官网 :

点击Downloads ----windows ------找到对应版本的Windows x86-64 executable installer文件下载。

运行下载的文件,选中 Add python to Path ------ install now

最后,重复步骤1,查看当前版本,即完成

Python聚合函数使用

#encoding=utf-8

def getRows():

names = ["A", "B"]

rows = [

[1, 'm'],

[2, 'm'],

[3, 'q'],

[3, 'q'],

[2, 'q'],

[1, 's'],

[4, 's'],

[2, 's'],

[1, 's'],

[3, 'm']

]

rs = []

for row in rows:

rs.append(dict(zip(names, row)))

return rs

def count():

rs = getRows()

# 取所有B=m的行

rs = [r for r in rs if r["B"] == 'm']

rs = sorted(rs, key=lambda r: r["B"])

# 计算数量

result = {}

for r in rs:

if r["A"] in result:

result[r["A"]] += 1

else:

result[r["A"]] = 1

return result

print count()

python--pandas分组聚合

groupby 方法是pandas中的分组方法,对数据框采用 groupby 方法后,返回的是 DataFrameGroupBy 对象,一般分组操作后会进行聚合操作。

对数据框按 A 列进行分组,产生分组数据框。分组数据框是可迭代对象,可以进行循环遍历,可以看出在循环中,每个元素的类型是元组,

元组的第一个元素是分组值,第二个元素是对应的分组数据框。

可以对分组后的数据框直接使用聚合方法 agg ,对分组数据框的每一列计算统计函数值。

可以根据数据框外的序列数据对数据框进行分组,需要注意 序列长度需要与数据框行数相同 。

可以根据数据框的多列对数据框进行分组。

根据 A , B 列进行分组,然后求和。

可以根据索引对数据框进行分组,需要设置 level 参数。

数据框只有一层索引,设置参数 level=0 。

当数据框索引有多层时,也可以根据需求设置 level 参数,完成分组聚合。

设置 level 参数,如需要根据第一层索引,即 id1 进行分组,可以设置 level=0 或 level='id1' 完成分组聚合。

分组后一般会进行聚合操作,用 agg 方法进行聚合。

对分组后数据框使用单个函数进行聚合,单个聚合函数会对每列进行计算,然后合并返回。聚合函数以字符串的形式传入。

可以对分组后的数据指定列进行分组聚合。需要注意 子列需要用[]包裹 。

聚合函数也可以传入自定义的匿名函数。

聚合函数可以是多个函数。聚合时,多个聚合函数会对每列进行计算,然后合并返回。聚合函数以列表的形式传入。

聚合返回后的数据列名有两层索引,第一层是聚合的列名,第二层是使用的聚合函数名。如果需要对返回的聚合函数名重命名,

需要在传参时,传入元组,第一个元素为聚合函数名,第二个元素为聚合函数。

同样,也可以传入匿名函数。

如果需要对不同的列进行不同的聚合计算,则需要传入字典的形式。

可以重命名聚合后的列名,注意 只能对一列传入一个聚合函数时有效 。


当前文章:python更新聚合函数 numpy聚合函数
链接URL:http://cdkjz.cn/article/dosejoc.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220