Python 数据处理(三十九)—— groupby(过滤)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 数据处理(三十九)—— groupby(过滤)相关的知识,希望对你有一定的参考价值。

参考技术A

filter 方法可以返回原始对象的子集.

例如,我们想提取分组内的和大于 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()列表添加。

问题:对已经排好序的数量增加新数据项,又要让新数据遵循原有的规律

思考: 已知有一个已经排好序的数组。插入一个新的数据项,要求按原来的规律将它插入数组中。 

思路:比较最后一个数与这个数的大小,然后依次往前比较,一直找到合适的位置插入,插入后,这个数之后的数,都往后移动一个位置。

 
   
   
 

  1. if __name__ == '__main__':

  2.    # 方法一

  3.    a = [1, 4, 6, 9, 13, 16, 19, 28, 40, 100, 0]

  4.    print('original list is:')

  5.    for i in range(len(a)):

  6.        print(a[i])

  7.    number = int(input("insert a new number:\n"))

  8.    end = a[9]

  9.    if number > end:

  10.        a[10] = number

  11.    else:

  12.        for i in range(10):

  13.            if a[i] > number:

  14.                temp1 = a[i]

  15.                a[i] = number

  16.                for j in range(i + 1, 11):

  17.                    temp2 = a[j]

  18.                    a[j] = temp1

  19.                    temp1 = temp2

  20.                break

  21.    for i in range(11):

  22.        print(a[i])



          

以上是关于Python 数据处理(三十九)—— groupby(过滤)的主要内容,如果未能解决你的问题,请参考以下文章

实例三十九 序列插入排序 python编程天天练

Python 数据处理(三十九)—— groupby(过滤)

Python机器学习(三十九)基于数值区间创建数组

python数组插入排序编程实践练习三十九

Python之路(第三十九篇)管道进程间数据共享Manager

三十九python面向对象一