当前位置:首页 >> 中医减肥 >> Python GroupBy 技能

Python GroupBy 技能

发布时间:2023-02-27

def create_tuples_from_groupby(iterator) -> list[tuple[str, list]]:

groupby_list = []

for key, group in iterator:

groupby_list.append((key, list(group)))

return groupby_list

groupby_housing_type_iter = itertools.groupby(

data, key=lambda row: row["Housing_Type"]

groupby_housing = create_tuples_from_groupby(

groupby_housing_type_iter

如果我们绘制通过 groupby 找到的年前 10 个第三组,我们可以注意到基于住宅各种类型的一些瞬时:在年前 200 行左右,房屋和公寓的集中所度非常高。 如果住宅各种类型是一个极其重要值,我们可以考虑重新平衡数据集,使其分布非常均匀。

用到数据集类管控第三组类型

您必需为 groupby 提供者一个极其极其重要变量,该变量提取要在其上形成第三组的正则表达式中所每个条借此类型。 如果您打算对单个类型同步进行分第三组,您不一定但会用到一个简单的 lambda 变量来查询它:

groupby_housing_type_iter = itertools.groupby(

data, key=lambda row: row["Housing_Type"]

但是,如果您打算按多个差值分第三组怎么办? 您可以成立要分第三组的两个类型的运算符或杂凑,并将其当花钱键盘。 推论我们按住宅各种类型和成年人数目同步进行分第三组:

key = lambda row: f"{row['Housing_Type']}_{row['Total_Children']}"

groupby_housing_children = itertools.groupby(data, key=key)

for key, group in groupby_housing_children:

housing_type = key.split('_')[0]

total_children = next(iter(group))['Total_Children']

此编码运行极佳,但在您必须到访第三组类型时但会失败。 您要么必需求助于运算符解析,要么必需读取第三组领导者之一的类型。 这些技术都不是特别优雅。

我们可以通过成立一个年前往定制都可的非常有用的键盘变量来解决问题这个问题。 groupby 的唯一年前提是都可有着威胁性。 由于定制都可选项通过内核重述同步进行相当,我们必须发挥作用自己的 脚注eq脚注 变量。 巧合的是,新标准库里的 dataclasses 纸制纸制含为我们督导此可用的功能。 为数据集类装潢容器提供者 eq=True 将生成一个 脚注eq脚注 分析方法,该分析方法根据都可的类型相当都可,这正是我们所必须的! 我还打算添加 freeze=True 以使第三组键盘不可逆。

编码直到现在逆得兼具灵活性,我们可以直接从密钥轻松到访每个第三组的类型。 另一个坏处是,极其极其重要都可有着各种类型类型,可供 IntelliSense 和静态编码数据集分析辅助工具用到。

from dataclasses import dataclass

@dataclass(eq=True, frozen=True)

class HousingTypeTotalChildren:

housing_type: str

total_children: int

@classmethod

def from_row(cls, row: dict) -> "HousingTypeTotalChildren":

return cls(

housing_type=row['Housing_Type'],

total_children=int(row['Total_Children'])

group_by_housing_children = itertools.groupby(

data, key=HousingTypeTotalChildren.from_row

for key, group in group_by_housing_children:

# Access group properties directly from the key

print(

f"Housing type: {key.housing_type}, "

f"Total children: {key.total_children}"

结论

itertools 纸制纸制含许多很棒的辅助工具,例如 groupby。 对于大多数简单的用例来说,它仍未足够强大了,因此您不必求助于第三方库里。 当然,groupby 也有其相比较,而且对于有用的数据集数据集分析。

北京妇科医院专家预约挂号
上海看癫痫去哪家医院好
广东妇科病治疗费用
江苏男科
北京妇科医院哪家比较专业
标签:
友情链接: