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 也有其相比较,而且对于有用的数据集数据集分析。
。北京妇科医院专家预约挂号上海看癫痫去哪家医院好
广东妇科病治疗费用
江苏男科
北京妇科医院哪家比较专业
-
香港站-商竣程救2赛点失败逆转 生涯首胜TOP40
工商竣程救赛点扭转战胜杰雷 北京小时1月1日,2024年ATP250王荣南站混双首轮。持胜者参赛的中国球员工商竣程,解决先丢一盘,且决胜盘纳达尔2-5停滞不前的同样
- 2024-02-10尊重男孩,与男孩保持平等
- 2024-02-10善恶终有报,花17亿买楼害人的恺夫妇,如今下场大快人心
- 2024-02-10奥克兰-王欣瑜2-0普丁塞娃 将与王曦雨争8过关斩将席位
- 2024-02-10事实证明,退休八年的敬一丹,已经迈出了另一条人生大道
- 2024-02-10妈妈给3娃每人发50元零花钱,因房内乱罚10元,2姐弟举动被赞教育棒
- 2024-02-10西布朗官方公布23年数据之最 B费跑了451.8公里!
- 2024-02-10台湾人名嘴视频曝光:家人围坐身旁,喝完药“睡”在儿子怀中
- 2024-02-10从加权竞争怪圈跳出 十年制作“班级成长工程”
- 2024-02-10瓜帅:我们现在不是乙组榜首 利物浦是更好的球队
- 2024-02-10秀上围、透底裤,这4位“衣不蔽体”的星二代到底图什么?