gpt4 book ai didi

python - Pandas .loc 和 PEP8

转载 作者:行者123 更新时间:2023-12-03 16:10:07 28 4
gpt4 key购买 nike

我已经尝试搜索了很多次,但我没有看到它的回答所以这里是...
我经常使用 Pandas 来清理数据框并使其符合我的需求。随之而来的是很多 .loc 访问以查询它并返回值。根据我在做什么(和列长度),这可能会变得很长。鉴于 PEP8 限制为每行 79 个字符,是否有任何最佳实践?下面的一些示例(这些是简化的并用于解释目的):

missing_address_df = address_df.loc[address_df['address'].notnull()].copy()
或多个查询点:
nc_drive_df = address.loc[(address_df['address'].str.contains('drive')) & (address_df['state'] == 'NC')]

最佳答案

我建议两件事

  • 忽略 PEP 8的 80 个字符的建议,但尽量保持在 120 或 150 行
    保持一些行长要求有助于提高可读性,但如果您试图在(例如)类方法中保持 80 个字符,这将导致代码更糟糕且可读性更低
    PEP 8 实际上有一个关于此的部分,A Foolish Consistency is the Hobgoblin of Little Minds ,它描述了您应该偏离其其他建议的情况,例如
    1. When applying the guideline would make the code less readable, even for someone who is used to reading code that follows this PEP

  • 拆分.loc内容到多行
    nc_drive_df = address.loc[
    (address_df['address'].str.contains('drive')) & \
    (address_df['state'] == 'NC')
    ]

  • 尽管是有效的语法,但很难客观地判断代码何时“看起来很糟糕”,但您会体验到它。实际上,PEP 8 和 Cyclomatic Complexity检查器是一种工具,可以帮助您以科学的方式对抗、捍卫和提出代码风格。

    如果您有很多 bool 语句,您(通常必须)用括号将它们分开以阐明它们的顺序
    nc_drive_df = address.loc[
    (
    (address_df['address'].str.contains('drive')) & \
    (address_df['state'] == 'NC')
    ) || (
    address_df['zip'] == "00000"
    )
    ]
    这与传统的 Python 运算符( suggested to preceed lines)有些冲突。 ( PEP8 ),但是我在形成 Pandas bool 数组时对此提出了挑战,因为数据帧必须相同才能获得良好的结果,并且在第一次处理许多数据帧时可能更容易观察到这一点。
    最后,通常在做科学 Python 时,如果可能的话,您绝对应该针对部分和完整数据尝试多种可能性,以得出良好的性能结论,将它们的可读性放在第二位,并提供关于您的研究等的出色评论和链接等。特别的风格。

    关于python - Pandas .loc 和 PEP8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64517048/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com