Python 数据处理(三十九)—— groupby(过滤)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 数据处理(三十九)—— groupby(过滤)相关的知识,希望对你有一定的参考价值。
参考技术Afilter 方法可以返回原始对象的子集.
例如,我们想提取分组内的和大于 3 的所有分组的元素
filter 的参数必须是一个函数,函数参数是每个分组,并且返回 True 或 False
例如,提取元素个数大于 2 的分组
另外,我们也可以过滤掉不满足条件的组,而是返回一个类似索引对象。在这个对象中,没有通过的分组的元素被 NaN 填充
对于具有多列的 DataFrames ,过滤器应明确指定一列作为过滤条件
在进行聚合或转换时,你可能想对每个分组调用一个实例方法,例如
但是,如果需要传递额外的参数时,它会变得很冗长。我们可以直接使用分派到组对象上的方法
实际上这生成了一个函数包装器,在调用时,它接受所有传递的参数,并在每个分组上进行调用。
然后,这个结果可以和 agg 和 transform 结合在一起使用
在上面的例子中,我们按照年份分组,然后对每个分组中使用 fillna 补缺失值
nlargest 和 nsmallest 可以在 Series 类型的 groupby 上使用
对分组数据的某些操作可能并不适合聚合或转换。或者说,你可能只是想让 GroupBy 来推断如何合并结果
我们可以使用 apply 函数,例如
改变返回结果的维度
在 Series 上使用 apply 类似
对于之前的示例数据
假设,我们想按 A 分组并计算组内的标准差,但是 B 列的数据我们并不关心。
如果我们的函数不能应用于某些列,则会隐式的删除这些列,所以
直接计算标准差并不会报错
可以使用分类变量进行分组,分组的顺序会按照分类变量的顺序
可以使用 pd.Grouper 控制分组,对于如下数据
可以按照一定的频率对特定列进行分组,就像重抽样一样
可以分别对列或索引进行分组
类似于 Series 和 DataFrame ,可以使用 head 和 tail 获取分组前后几行
在 Series 或 DataFrame 中可以使用 nth() 来获取第 n 个元素,也可以用于获取每个分组的某一行
如果你要选择非空项,可以使用关键字参数 dropna ,如果是 DataFrame ,需要指定为 any 或 all (类似于 DataFrame.dropna(how=\'any|all\') )
与其他方法一样,使用 as_index=False 分组名将不会作为索引
你也可以传入一个整数列表,一次性选取多行
使用 cumcount 方法,可以查看每行在分组中出现的顺序
可以使用 ngroup() 查看分组的顺序,该顺序与 cumcount 的顺序相反。
注意 :该顺序与迭代时的分组顺序一样,并不是第一次观测到的顺序
python数组插入排序编程实践练习三十九
知识要点:数组的插入,内置方法python insert()列表添加。
问题:对已经排好序的数量增加新数据项,又要让新数据遵循原有的规律
思考: 已知有一个已经排好序的数组。插入一个新的数据项,要求按原来的规律将它插入数组中。
思路:比较最后一个数与这个数的大小,然后依次往前比较,一直找到合适的位置插入,插入后,这个数之后的数,都往后移动一个位置。
if __name__ == '__main__':
# 方法一
a = [1, 4, 6, 9, 13, 16, 19, 28, 40, 100, 0]
print('original list is:')
for i in range(len(a)):
print(a[i])
number = int(input("insert a new number:\n"))
end = a[9]
if number > end:
a[10] = number
else:
for i in range(10):
if a[i] > number:
temp1 = a[i]
a[i] = number
for j in range(i + 1, 11):
temp2 = a[j]
a[j] = temp1
temp1 = temp2
break
for i in range(11):
print(a[i])
喜欢就扫码关注吧,你会发现更多有趣的实用的学习技巧。
扫码关注
以上是关于Python 数据处理(三十九)—— groupby(过滤)的主要内容,如果未能解决你的问题,请参考以下文章
Python 数据处理(三十九)—— groupby(过滤)