groupby 方法是pandas中的分组方法,对数据框采用 groupby 方法后,返回的是 DataFrameGroupBy 对象,一般分组 *** 作后会进行聚合 *** 作。
对数据框按 A 列进行分组,产生分组数据框。分组数据框是可迭代对象,可以进行循环遍历,可以看出在循环中,每个元素的类型是元组,
元组的第一个元素是分组值,第二个元素是对应的分组数据框。
可以对分组后的数据框直接使用聚合方法 agg ,对分组数据框的每一列计算统计函数值。
可以根据数据框外的序列数据对数据框进行分组,需要注意 序列长度需要与数据框行数相同 。
可以根据数据框的多列对数据框进行分组。
根据 A , B 列进行分组,然后求和。
可以根据索引对数据框进行分组,需要设置 level 参数。
数据框只有一层索引,设置参数 level=0 。
当数据框索引有多层时,也可以根据需求设置 level 参数,完成分组聚合。
设置 level 参数,如需要根据第一层索引,即 id1 进行分组,可以设置 level=0 或 level='id1' 完成分组聚合。
分组后一般会进行聚合 *** 作,用 agg 方法进行聚合。
对分组后数据框使用单个函数进行聚合,单个聚合函数会对每列进行计算,然后合并返回。聚合函数以字符串的形式传入。
可以对分组后的数据指定列进行分组聚合。需要注意 子列需要用[]包裹 。
聚合函数也可以传入自定义的匿名函数。
聚合函数可以是多个函数。聚合时,多个聚合函数会对每列进行计算,然后合并返回。聚合函数以列表的形式传入。
聚合返回后的数据列名有两层索引,第一层是聚合的列名,第二层是使用的聚合函数名。如果需要对返回的聚合函数名重命名,
需要在传参时,传入元组,第一个元素为聚合函数名,第二个元素为聚合函数。
同样,也可以传入匿名函数。
如果需要对不同的列进行不同的聚合计算,则需要传入字典的形式。
可以重命名聚合后的列名,注意 只能对一列传入一个聚合函数时有效 。
#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()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)