首页>>后端>>Python->python数据分组后看每组多少个(python给数据按顺序分组)

python数据分组后看每组多少个(python给数据按顺序分组)

时间:2023-12-02 本站 点击:0

今天首席CTO笔记来给各位分享关于python数据分组后看每组多少个的相关内容,其中也会对python给数据按顺序分组进行详细介绍,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

1、分组问题,32个数分8组,每组中数不能有相同的,请用python编程?2、Python 统计字符串中子字符串的个数,能够按照指定长度进行分组统计3、Python分组4、Python之pandas数据整理及分组统计5、python 查看dataframe每列有多少个不同元素

分组问题,32个数分8组,每组中数不能有相同的,请用python编程?

#!/usr/bin/env python

# coding: utf-8

"""

分组问题:以数字举例,假如我有7个1,4个2,3个3,5个4,7个5,4个6,2个7,

如何用python编程,分用8个组,每组中的4个数互不相等。

可能分组的结果不唯一,没关系。

"""

datasource = {"1": 7, "2": 4, "3": 3, "4": 5, "5": 7, "6": 4, "7": 2}

groups = map(lambda x: [], range(8))

def showgroups():

    """show groups

    """

    print "-" * 16

    for group in groups:

        print group

def getrandompos(x):

    """在groups中找到不包含x的最短分组

    """

    return sorted([(i, group) for (i, group) in enumerate(groups)

                               if x not in group],

                   key=lambda (i, group): len(group)

                   )[0][0]

for element, cnts in sorted(datasource.iteritems(),

                            key=lambda x: x[1],

                            reverse=True):

    while cnts:

        R = getrandompos(element)

        if len(groups[R])  4 and element not in groups[R]:

            groups[R].append(element)

            cnts -= 1

showgroups()

Python 统计字符串中子字符串的个数,能够按照指定长度进行分组统计

你可以先把s截断成两个字符组成的array,然后再count

 s='120120'

 import re

 pat = re.compile('\d\d')

 m = pat.findall(s)

 m

['12', '01', '20']

 m.count('12')

1

Python分组

前言分组原理

核心:

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 列索引一致

Python之pandas数据整理及分组统计

对数据进行整理以及分组统计

一、数据整理

1、行、列的插入与删除

2、索引整理

3、重复值处理

4、排序,排名

5、数据框连接

6、数据分段

pandas.cut(x,bins,right=True,labels=None,retbins=False,precision=3,include_lowest=False)

x:需要切分的数据

bins:切分区域

right : 是否包含右端点默认True,包含

labels:对应标签,用标记来代替返回的bins,若不在该序列中,则返回NaN

retbins:是否返回间距bins

precision:精度

include_lowest:是否包含左端点,默认False,不包含

7、多级索引

8、字符串处理

类似于Python

二、分组统计

python 查看dataframe每列有多少个不同元素

方法一:

mylist = set(say)      #say为所要统计的列表    

for item in mylist:     #将列表中的元素无重复的抽取出来,赋值给另一个列表

print item + str( say.count(item))      #list.count(item)  输出item在list中出现的次数

方法二:

counts = { }          #字典

for x in time_zones:       #time_zones 为列表

if  x in counts:

counts[x] += 1

else:

counts[x] = 1

print  counts

方法三:

(Series与Datafram用法相同)

import numpy as np 

import pandas as pd  

from pandas import DataFrame 

from pandas import Series  

ss = Series(['Tokyo', 'Nagoya', 'Nagoya', 'Osaka', 'Tokyo', 'Tokyo'])     

ss.value_counts()   #value_counts 直接用来计算series里面相同数据出现的频率

扩展资料:

python函数的其他高级用法

1.使用函数变量:

Python 的函数也是一种值:所有函数都是 function 对象,这意味着可以把函数本身赋值给变量,就像把整数、浮点数、列表、元组赋值给变量一样。

2.使用函数作为函数形参:

有时候需要定义一个函数,该函数的大部分计算逻辑都能确定,但某些处理逻辑暂时无法确定,这意昧着某些程序代码需要动态改变,如果希望调用函数时能动态传入这些代码,那么就需要在函数中定义函数形参,这样即可在调用该函数时传入不同的函数作为参数,从而动态改变这段代码。

3.使用函数作为返回值:

程序中,定义了一个 get_math_func() 函数,该函数将返回另一个函数。接下来在 get_math_func() 函数体内的 ①、②、③ 号粗体字代码分别定义了三个局部函数,最后 get_math_func() 函数会根据所传入的参数,使用这三个局部函数之一作为返回值。

在定义了会返回函数的 get_math_func() 函数之后,接下来程序调用 get_math_func() 函数时即可返回所需的函数。

结语:以上就是首席CTO笔记为大家介绍的关于python数据分组后看每组多少个和python给数据按顺序分组的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Python/10279.html